Pooling workflows and Shared connections fun. #1116
Merged
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.
Motivation
If you have a pooling workflow that has references to a shared connection, then upon init/start you can get into a situation where multiple threads (each being a worker for the pooling workflow) attempt to register themselves as listeners to the shared connection.
This list of listeners in the shared connection was not thread safe and could cause an infinite loop resulting in Interlok app[earling to hang.
Modification
Simple changed the maps holding the consumers/producers and listeners to be thread safe versions.
Result
Interlok no longer hangs on startup when using a pooling workflow that references shared connections.