feat: add transactionAsyncLocalStorage
option to opt in to automatically setting session
on all transactions
#14583
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #13889
Summary
Having to pass
session
option to every operation in a transaction is cumbersome and error prone. Node 16+ has a stable AsyncLocalStorage class as part of the async_hooks API; we can use AsyncLocalStorage to setsession
option by default on all operations in a function as long as the user usesConnection.prototype.transaction()
wrapper. Seedocs/transactions.md
changes for an example.Examples