Description
- Version: v14.6.0 (works on v14.5.0)
- Platform: Unix
- Subsystem: async_hooks
What steps will reproduce the bug?
I'm not entirely sure yet, but will continue investigating. Any pointers would be appreciated.
Sadly the code itself is private, but I'll try to extract a reproduction.
How often does it reproduce? Is there a required condition?
I only see this crash reliably on every test run on one of our services, all the others seem to work fine.
The service works on v14.4.0 and v14.5.0, so this seems to be a regression introduced in v14.6.0.
What is the expected behavior?
Working AsyncLocalStorage.
What do you see instead?
An exception
TypeError: Cannot read property 'Symbol(kResourceStore)' of undefined
at AsyncLocalStorage._propagate (async_hooks.js:246:34)
at AsyncHook.init (async_hooks.js:222:22)
at emitInitNative (internal/async_hooks.js:198:43)
at emitInitScript (internal/async_hooks.js:466:3)
at initAsyncResource (internal/timers.js:155:5)
at new Timeout (internal/timers.js:188:3)
at setUnrefTimeout (internal/timers.js:370:17)
at cache (internal/http.js:27:3)
at utcDate (internal/http.js:19:18)
at ServerResponse._storeHeader (_http_outgoing.js:391:26)
at ServerResponse.writeHead (_http_server.js:313:8)
at ServerResponse._implicitHeader (_http_server.js:240:8)
at write_ (_http_outgoing.js:663:9)
at ServerResponse.end (_http_outgoing.js:776:5)
at /app/node_modules/@opentelemetry/plugin-http/build/src/http.js:213:87
at HttpPlugin._safeExecute (/app/node_modules/@opentelemetry/plugin-http/build/src/http.js:303:20)
at ServerResponse.response.end (/app/node_modules/@opentelemetry/plugin-http/build/src/http.js:213:49)
Likely the result of executionAsyncResource()
returning undefined
here:
Line 219 in 13c5a16
Additional information
AsyncLocalStorage is used using https://github.com/open-telemetry/opentelemetry-js/tree/v0.10.1 and via the AsyncLocalStorageContextManager
https://github.com/open-telemetry/opentelemetry-js/blob/v0.10.1/packages/opentelemetry-context-async-hooks/src/AsyncLocalStorageContextManager.ts