Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-3774

[Java Broker] Allow out of order completion of persistent enqueues / dequeues

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.14
    • Fix Version/s: 0.15
    • Component/s: Broker-J
    • Labels:
      None

      Description

      Currently each persistent enqueue or dequeue in a non transactional session is processed in strict order with a synchronous write occurring for each enqueue/dequeue.

      In order to improve performance we should make these enqueues/dequeues asynchronous and only wait for completion when a sync is requested.

      Note that due to the way the IO layer works, we cannot make this truly asynchronous as we need to synchronize before control is handed back to the IO layer as it then performs a blocking read. if the client is waiting for the completion from the broker it will never send more data on the wire, and since the read is blocking the broker cannot check to see if the async write to disk has completed. In practice tests have shown that this does not significantly change the maximum possible throughput.

        Attachments

          Activity

            People

            • Assignee:
              k-wall Keith Wall
              Reporter:
              rgodfrey Rob Godfrey
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: