-
Notifications
You must be signed in to change notification settings - Fork 593
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
Specify connection when creating Allocation/Admin session for Glacier2 #2966
Conversation
In the original design, when a client sends a heartbeat to Glacier2, Glacier2 would send a keep-alive request to the target session. The lifetime of the session was tied to the In Ice 3.7, when registering a session with a connection, the reap thread would add a The issue with the new setup is that, as long as a client keeps its session alive, the |
In my view, that's not an issue. When you create sessions using a Glacier2 router, it's the responsibility of the Glacier2 router to destroy these sessions, except in the case the Glacier2 router--IceGrid registry connection drops (in which case IceGrid cleans up sessions bound to the dropped connection). Say we have: and the client crash. Then it's up to the Glacier2 router to "destroy" the session object hosted by IceGrid - or at least attempt to destroy it. And that's what Glacier2 router does: ice/cpp/src/Glacier2/SessionRouterI.cpp Line 954 in f604fb2
ice/cpp/src/Glacier2/SessionRouterI.cpp Line 740 in f604fb2
ice/cpp/src/Glacier2/RouterI.cpp Line 82 in f604fb2
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The connection close callback was added when ACM heartbeats were added (in 3.6). Prior to the addition of the connection close callback, sessions were only closed based on a keep alive Slice operation being called at regular intervals.
At this time, I believe we didn't want to break compatibility and still allow 3.5 clients to work with Glacier2 3.6 or vice-versa, ditto with different IceGrid/Glacier2 versions...
That's most likely the reason why we still have code that doesn't rely on the connection close callback for destroying sessions. And it's likely that we didn't consider removing this support with 3.7.
…cation/Admin session for Glacier2 (zeroc-ice/ice#2966)
This PR updates the IceGrid code to specify the connection when creating "plain" sessions and Admin sessions via the Glacier2 session managers hosted by IceGrid.
It's not immediately clear why we didn't do it before. I believe the connections represent the correct connections. Maybe an oversight?
See also #2756 (loosely related).
See also #2967.