Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-3074

Integrate new client protocol into existing connection logic

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.4.0
    • client/server
    • 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

          Activity

            People

              Unassigned Unassigned
              gosullivan Galen O'Sullivan
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: