Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-20373

Fix IO threading model

    XMLWordPrintableJSON

Details

    Description

      Currently IO is resubmitted to inboundExecutor for further processing (even there are corner cases then a message handler called in IO thread)

      It makes message processing essentially single threaded and introduces additional lag due to message transition to additional queue.

      addMessageHandler should be extended with a 3-d argument: a pool for submitting a callback for execution, or an executorSelector like in jraft.

      inboundExecutor should be changed to striped, use more than one thread, and serve messages without explicit executor. Delivery guaranties should be preserved: if a message A is send before B, B can't be processed on a receiver before A. A stripe is defined by sender-receiver pair (or can be user defined - TBD)

      outboundExecutor also looks like a contention point - need to be addressed as well

      Attachments

        Issue Links

          Activity

            People

              rpuch Roman Puchkovskiy
              ascherbakov Alexey Scherbakov
              Vladislav Pyatkov Vladislav Pyatkov
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h
                  1h