-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updated CASE Session lifetime and management logic #17298
Comments
Materially speaking, this renders a lot of the spec material in this PR somewhat moot I believe (@msandstedt ?) |
I think so. The problem we're facing is that we are trying to find a deterministic algorithm that peers can use such that they will drop a second session if one exists and will both drop the same session. I think this is actually impossible currently because input to that algorithm will always include the existence of 2+ sessions. That is exactly the piece of information that is not guaranteed to be shared by both peers. It is always possible for one peer to have two sessions open, and the other peer to only have one. This is a consequence of tenet 5:
|
Meeting Minutes (Today's Call): Session Recovery: (Existing PR here).
Session Shifting: (Existing PR here)
|
SDK Review: Given the impact on reliability of CASE, this is required for SVE. |
SVE/Cert Blocker Review: Does not appear to be blocking a test case at this time, removing SVE. |
All tasks are done. |
Problem
We don't have clear understanding of when how the lifetime of a CASE session should be managed, as well as what it means to have multiple CASE sessions between a set of peers and whether that is even permitted.
Proposal
Here are a set of axioms/tenets from a Slack conversation:
Here are some implementation side-effects from the above that I think would help:
i. Once established, there is no real advantage to actively pruning duplicate sessions since it's sunk cost. This also ensures active exchanges do not get un-necessarily terminated.
b. When looking for an active session to a peer, we should return the latest session to that peer amongst the set of sessions to that peer (if any).
c. When a session has been established, SessionHolders holding onto an existing session to that peer should get updated to now reference the new session (through the SessionReleaseDelegate API). This follows tenet 3) above.
Work Items:
The text was updated successfully, but these errors were encountered: