You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Could a more performant request-scoped provider implementation solve this problem?
I wouldn't be so sure that using AsyncLocalStorage atm would be better (performance-wise) than properly designed request-scoped providers. - from nestjs/nest#1407 (comment)
In addition to performance, another problem with request-scoped providers is the scope hierarchy implementation in NestJS:
Scope bubbles up the injection chain. A controller that depends on a request-scoped provider will, itself, be request-scoped.
I agree that this should be in the Readme - maybe under Security considerations? If you don't mind and have the time, you can suggest the edit in #11. I've not had much time lately, but I'm planning to add some git actions and revising the Readme by the end of the week.
Yup, it would be nice to to have a benchmark, maybe someday I can make myself create one. However, it's important to note that AsyncLocalStorage and Request scoped providers don't have 100% feature overlap, so performance is not the key decision factor here.
I suggest adding additional sections to the README or FAQ:
Performance concerns with AsyncLocalStorage?
This question sometimes arises because of early concerns with async_hooks performance.
See for example: iamolegga/nestjs-pino#322
Is there currently a concern? (I am not aware of any.)
Stability of AsyncLocalStorage?
According to Node documentation, AsyncLocalStorage is stable, even though the parent async_hooks is still experimental.
https://nodejs.org/api/async_context.html#class-asynclocalstorage
Could a more performant request-scoped provider implementation solve this problem?
In addition to performance, another problem with request-scoped providers is the scope hierarchy implementation in NestJS:
See https://stackoverflow.com/a/59681868/901597
This provider does not have this restriction.
The text was updated successfully, but these errors were encountered: