Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
We want to make a new client server protocol that will make it much easier for new Geode clients to be implemented in other languages.
To do this, we need a refactor of AcceptorImpl and ServerConnection to allow the server to create new client protocol handler objects and run them within the existing network / threading infrastructure.
As a first task, we can make a factory that creates instances of the new subclasses of ServerConnection : NewClientServerConnection and LegacyServerConnection. Then we can slowly refactor functionality from ServerConnection into that which is common (such as handling shutdown, stats, and interacting properly with selector or thread pool) and that which is specific to the old client protocol.
This ticket will track the many subtasks of this effort.
TODO before the whole ticket is resolved:
- Have a look through the {{Command}}s and see what they do.
- Move transient flag methods and such down to LegacyServerConnection.
- Make sure we handle failure consistently.
- Make sure Event IDs and such are OK in the Cache.
- I think that using the public Region API will make this OK.
- Comm Buffers: can we use them? If so, use them; if not, pull down to LegacyServerConnection.
- Socket receive and send sizes – see `initStreams()` in `ServerConnection`.
Other things to think about:
- Make selector work with SSL.
- think about redesigning selector in case of an incomplete message being received (buffer message – I think there's currently a bug here).
Attachments
Issue Links
- is duplicated by
-
GEODE-2978 Add feature toggle for new protocol & merge into develop
- Closed
- relates to
-
GEODE-3200 ServerConnection.authzRequest is no longer used
- Resolved
1.
|
Bifurcate ServerConnection, create factory and feature toggle | Closed | Galen O'Sullivan | |
2.
|
Refactor methods from ClientHandShake to ServerConnection. | Closed | Unassigned | |
3.
|
Client connection counts should be accurate | Closed | Unassigned | |
4.
|
Protocol connection runs in AcceptorImpl's thread pool | Closed | Unassigned | |
5.
|
Ensure new protocol shuts down cleanly | Closed | Alexander Murmann | |
6.
|
Protocol connection runs in selector thread | Closed | Galen O'Sullivan | |
7.
|
Interact correctly with CachedRegionHelper in NewClientServerConnection | Closed | Unassigned | |
8.
|
Client Health Monitor should be able to manage new protocol client connections | Closed | Alexander Murmann | |
9.
|
New protocol should record server statistics | Closed | Unassigned | |
10.
|
Investigate unique client IDs in server connection class | Closed | Bruce J Schuchardt | |
11.
|
Investigate replacement of getSocketHost(), getSocketPort(), getSocketAddress() | Closed | Bruce J Schuchardt | |
12.
|
NewClientServerConnection and loadEmergencyClasses() | Closed | Unassigned |