Fix race condition in registerEventListener #1050
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.
Currently, the EventHubPlaceHolder extension is automatically registered in the init method of EventHub. The EventHub.registerEventListener() method uses this placeholder instance to store all listeners. We are presently fetching the extensionContainer for the EventHub extension using the shared state name, which becomes available only after the extension is initialized asynchronously. This leads to a lot of flaky test failures. In real-world scenarios, the impact is minimal but could occur if the app attempts to register an event listener early in the app lifecycle.
To resolve this, we will pull the EventHub extension container using its type instead of the shared state name to ensure listeners are not missed during registration. Additionally, helper methods have been added to avoid duplicate logic inside EventHub.