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.
Description
With current implementation of the flow builder and how it is used, each request shared the same flow instance, this leads to a concurrency issue, because the flow instance holds the database transaction and http context of a request. And when all incoming request share the same flow instance, the transaction and http context get overridden and also we get a
concurrency write
error on the contextValue variable in the flow.Implementation
Create a new instance of a flow for each incoming request. The
scanFlowStates
function from thedefaultFlowBuilder
is changed, that this only runs once.Tests
Call an endpoint e.g.
/registration
automated (concurrent) many times (at least one action should be used e.g.register_client_capabilities
). Check that no errors occur.