redfin / react-server

:rocket: Blazing fast page load and seamless navigation.
https://react-server.io/
Apache License 2.0
3.89k stars 184 forks source link

"RLS() access outside of request!" in getTitle() #916

Closed breezewish closed 7 years ago

breezewish commented 7 years ago

Hi, I'm using approaches like this to resolve multiple promises. However I got RLS() access outside of request! in getTitle() when I'm trying to respond title with the value from one of the promise.

getTitle() {
  return this.userPromise.then(data => `${data.body.length} users`);
}

the promise is assigned in handleRoute:

handleRoute(next) {
  ....
  this.userPromise = API.user.all();  // which returns a Promise
  ...
}

logs:

2017-03-29T16:58:16.546Z - debug: [react-server.core.renderMiddleware] Incoming request for /
2017-03-29T16:58:16.546Z - debug: [react-server.core.context.Navigator] Navigating to /
2017-03-29T16:58:16.547Z - debug: [react-server.core.context.Navigator] Mapped / to route Home
2017-03-29T16:58:16.547Z - debug: [react-server.core.util.PageUtil] Call setRequest
2017-03-29T16:58:16.548Z - debug: [react-server.core.util.PageUtil.PageConfig] Default "isFragment" => "false"
2017-03-29T16:58:16.548Z - debug: [react-server.core.util.PageUtil.PageConfig] Default "isRawResponse" => "false"
2017-03-29T16:58:16.548Z - debug: [react-server.core.util.PageUtil] Call addConfigValues
2017-03-29T16:58:16.549Z - debug: [react-server.core.util.PageUtil] Call setConfigValues
2017-03-29T16:58:16.549Z - debug: [react-server.core.util.PageUtil.PageConfig] Final isFragment=false, isRawResponse=false
2017-03-29T16:58:16.549Z - debug: [react-server.core.util.PageUtil] Call getRequest
2017-03-29T16:58:16.549Z - debug: [react-server.core.util.PageUtil] Call handleRoute
2017-03-29T16:58:16.549Z - debug: [react-server.core.ReactServerAgent.Cache] Getting ReactServerAgent request data cache entry for /Session/Current
2017-03-29T16:58:16.551Z - debug: [react-server.core.ReactServerAgent.Cache] Getting ReactServerAgent request data cache entry for /Users
2017-03-29T16:58:16.552Z - debug: [react-server.core.util.PageUtil] Call setStatus
2017-03-29T16:58:16.552Z - debug: [react-server.core.util.PageUtil] Call setHasDocument
2017-03-29T16:58:16.553Z - debug: [react-server.core.util.PageUtil] Call setJsBelowTheFold
2017-03-29T16:58:16.553Z - debug: [react-server.core.util.PageUtil] Call setSplitJsLoad
2017-03-29T16:58:16.553Z - debug: [react-server.core.renderMiddleware] Route Name: Home
2017-03-29T16:58:16.554Z - debug: [react-server.core.util.PageUtil] Call getStatus
2017-03-29T16:58:16.554Z - debug: [react-server.core.util.PageUtil] Call getHeaders
2017-03-29T16:58:16.554Z - fast: [react-server.core.renderMiddleware] lifecycle.individual.setHttpHeaders ms=1
2017-03-29T16:58:16.555Z - fast: [react-server.core.renderMiddleware] lifecycle.fromStart.setHttpHeaders ms=8
2017-03-29T16:58:16.556Z - debug: [react-server.core.util.PageUtil] Call getDebugComments
2017-03-29T16:58:16.556Z - debug: [react-server.core.util.PageUtil] Call getTitle
2017-03-29T16:58:16.556Z - debug: [react-server.core.util.PageUtil] Call getJsBelowTheFold
2017-03-29T16:58:16.556Z - debug: [react-server.core.util.PageUtil] Call getSystemScripts
2017-03-29T16:58:16.557Z - debug: [react-server.core.util.PageUtil] Call getScripts
2017-03-29T16:58:16.557Z - debug: [react-server.core.util.PageUtil] Call getSplitJsLoad
2017-03-29T16:58:16.557Z - debug: [react-server.core.util.PageUtil] Call getSplitJsLoad
2017-03-29T16:58:16.557Z - debug: [react-server.core.util.PageUtil] Call getHeadStylesheets
2017-03-29T16:58:16.558Z - debug: [react-server.core.util.PageUtil] Call getMetaTags
2017-03-29T16:58:16.558Z - debug: [react-server.core.util.PageUtil] Call getLinkTags
2017-03-29T16:58:16.558Z - debug: [react-server.core.util.PageUtil] Call getBase
2017-03-29T16:58:16.560Z - debug: [react-server.core.ReactServerAgent.Cache] Getting ReactServerAgent request data cache entry for /Users
2017-03-29T16:58:16.562Z - error: [react-server.core.renderMiddleware] Error in renderPage chain message=RLS() access outside of request!, stack=Error: RLS() access outside of request!
    at ......./node_modules/request-local-storage/lib/server/index.js:26:35
    at getPlugins (......./node_modules/react-server/target/server/ReactServerAgent/ReactServerAgent/Plugins.js:37:10)
    at Request.responsePluginApplyingCallback (......./node_modules/react-server/target/server/ReactServerAgent/ReactServerAgent/Request.js:199:24)
    at Request.end (......./node_modules/react-server/target/server/ReactServerAgent/ReactServerAgent/Request.js:178:32)
    at Request.asPromise (......./node_modules/react-server/target/server/ReactServerAgent/ReactServerAgent/Request.js:325:7)
    at Request.then (......./node_modules/react-server/target/server/ReactServerAgent/ReactServerAgent/Request.js:313:21)
    at process._tickCallback (internal/process/next_tick.js:103:7)

it sends two requests, /Session/Current and /Users

breezewish commented 7 years ago

Strange.. After changing the order of then it worked.. :(