Fix E2EE Session Initialization Race Condition #2635
+68
−0
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.
Problem
When enabling E2EE, session initialization can be triggered twice through different paths:
olmAdapter.initSessions()
fromsetEnabled
onParticipantPropertyChanged
fromsetLocalParticipantProperty
This causes runtime errors when the second initialization attempt finds an existing session.
Solution
I've created a new E2EESessionManager class that keeps track of all session states in one place. This prevents multiple initialization attempts and handles them more gracefully. When a second initialization is attempted, instead of failing, it either returns the existing session or waits for the ongoing initialization to complete.
Implementation Details
Map
to track session states and initialization promisesRelated Issues
Fixes #2587 - Runtime error when E2EE is enabled