Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-14805

Use a Netty based TCP for JGroups

    XMLWordPrintable

Details

    • Enhancement
    • Resolution: Unresolved
    • Major
    • 15.0.3.Final
    • None
    • Core
    • None

    Description

      JGroups already has a baseline project that supports netty as the underlying TP. This is useful as a baseline, however it will require changes.

      The most important changes is to make sure the TP can be fully non blocking as well as back pressure aware, since UFC/MFC will block the invoking thread and the non blocking variant can run out of memory as it relies upon retransmission, none of these are back pressure aware. To do this we will most likely have to add some type of Event and header in the new netty TP so that we can optionally signal when a command is done, instead of relying solely upon a command invocation returning.

      The JGroups netty TP will also have to generate events to tell us when the underlying channel is no longer writeable. In this case our JGroupsTransport class will have to receive that and delay messages sent to that destination to relieve pressure. We will need some configured limits to how many outstanding messages and eventually throw some sort of AvailabilityException if pressure continues.

      Once JGroups netty TP can be used, we also need to merge the event loop in our server with this one to also reduce additional context switches, which should allow in some eventual cases to run a server on a single thread!

      We also need to ensure all of our server handlers (HotRod, HTTP, RESP, and MEMCACHED) all have proper back pressure to not allow too many concurrent requests or batch too many pending commands.

      Attachments

        Activity

          People

            wburns@redhat.com Will Burns
            wburns@redhat.com Will Burns
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: