-
Notifications
You must be signed in to change notification settings - Fork 357
Closed
Description
In this issue i offer add next features:
- Add setup connection frame into resume frames store.
- ResumePolicy interface with next configuration (passing through factory):
- sessionManager
- storeFactory (current implementation)
- storeFactory (function)
- input: resume token
- output:consumer for saving frames state and supplier for producing it from some storage
- Reactor's retrySpec which will manage resuming mechanism
(for example for configuring backoff policy) - enableSessionssRecreation() - flag that enabling recreating of sessions if session was not found by resume token (description below)
- sessionDuration, streamTimeout, storeFactory, cleanupStoreOnKeepAlive - currently used parameters
and next default implementations:
- DefaultResumePolicy: currently resuming mechanism with using Retry spec
- RecreatableSessionsResumePolicy (activates on enableSessionssRecreation()).
New feature:
Imagine that you have RSocket stream from server to client with enabling resuming and this resume policy. Server provides persistent frames store. Client and Server enables sessions recreation.
We shutting down server. Resuming starts. After some time we restarting server and there is next magic has come:
- server received resume frame
- server got frames by token from storage
- server makes re-setup of acceptor with setup frame from store and start sending frames from position of saved resume frame.
- client receive RESUME_OK and starting receiving data from server
By this feature we have realy fault tolerancable resuming with providing ability of frames persisting.
P.S. I will make PR with example of sessions recreating to give some more information about this feature.