Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-2189

proactor C client has abnormally long pauses during message send

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Bug
    • proton-c-0.30.0
    • None
    • proton-c
    • None

    Description

      I have a proactor-based C test client that has the ability to slowly send extremely large messages slowly.  This is done by sending 'chunks' of body data with pauses in between.

      This client was designed to test large streaming messages against qdrouterd.

      The behavior of this client is unexpected - I would expect the message data to appear "on the wire" in bursts relatively quickly.  In reality the data is buffered - in some cases over 1 GB is buffered - before it is written (as indicated by the lack @transfer frames dumped by the client AND the qdrouterd).  In some cases it takes up to 30 seconds before the client's data starts being written to the client.

      I've refactored the client to use reactor instead and the data flows as expected.  There is minimal buffering and no abnormally long pauses.

      The clients are attached.

      It is quite likely the proactor client is incorrectly implemented, but I used the qdrouterd I/O loop as the model and cannot see what may be wrong.

       

      Attachments

        1. clogger-reactor.c
          13 kB
          Ken Giusti
        2. clogger-proactor.c
          12 kB
          Ken Giusti
        3. 0001-tweak-clogger-to-fix-streaming.patch
          0.8 kB
          Ken Giusti

        Activity

          People

            kgiusti Ken Giusti
            kgiusti Ken Giusti
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: