Qpid
  1. Qpid
  2. QPID-3717

[Java Broker] Implement Producer Side Flow Control for 0-10

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.15
    • Component/s: Java Broker, Java Client
    • Labels:
      None

      Description

      Implement Producer Side Flow Control for the 0-10 codepath in the Java Broker.

      Note, this JIRA covers functionality analogous to the producer side flow control functionality in the 0-8/0-9/0-9-1 codepath in the Java Broker (see QPID-942). This does not attempt to replicate the feature of the C++ broker (which uses delayed acknowledgement for message transfers (see QPID-2935).

      The implementation here uses the work done in QPID-1646 to replicate the functionality previously achieved by using channel.flow. The logic exactly duplicates that in place in the 0-8/9/9-1 codepath. Small changes are necessary to the client to provide the expected log messages.

        Activity

        Robbie Gemmell made changes -
        Status Ready To Review [ 10006 ] Resolved [ 5 ]
        Fix Version/s 0.15 [ 12319043 ]
        Resolution Fixed [ 1 ]
        Hide
        Robbie Gemmell added a comment -

        Change looks good to me.

        Show
        Robbie Gemmell added a comment - Change looks good to me.
        Rob Godfrey made changes -
        Attachment QPID-3717-fix.patch [ 12510058 ]
        Hide
        Rob Godfrey added a comment -

        Good spot - should have added the amount in the flow to _outstandingCredit

        Show
        Rob Godfrey added a comment - Good spot - should have added the amount in the flow to _outstandingCredit
        Hide
        Robbie Gemmell added a comment -

        The general blocking/unblocking via the queues seems good to me, but I am a little confused by the _outstandingCredit usage in ServerSession.enqueue(). Its not clear to me how this will block and then unblock successfully as the unblock() call used by the queue is the only other thing that alters its value and wont have any effect if the queue wasnt originally blocked, which it may not be. Also, it doesnt look like _outstandingCredit plays nicely in situations where PSFC isnt enabled, as nothing except PSFC code can increment it again once it has been decremented?

        Show
        Robbie Gemmell added a comment - The general blocking/unblocking via the queues seems good to me, but I am a little confused by the _outstandingCredit usage in ServerSession.enqueue(). Its not clear to me how this will block and then unblock successfully as the unblock() call used by the queue is the only other thing that alters its value and wont have any effect if the queue wasnt originally blocked, which it may not be. Also, it doesnt look like _outstandingCredit plays nicely in situations where PSFC isnt enabled, as nothing except PSFC code can increment it again once it has been decremented?
        Rob Godfrey made changes -
        Status In Progress [ 3 ] Ready To Review [ 10006 ]
        Rob Godfrey made changes -
        Field Original Value New Value
        Status Open [ 1 ] In Progress [ 3 ]
        Hide
        Rob Godfrey added a comment -

        Accidentally checked in under incorrect JIRA number

        See http://svn.apache.org/viewvc?view=revision&revision=1226382

        Show
        Rob Godfrey added a comment - Accidentally checked in under incorrect JIRA number See http://svn.apache.org/viewvc?view=revision&revision=1226382
        Rob Godfrey created issue -

          People

          • Assignee:
            Rob Godfrey
            Reporter:
            Rob Godfrey
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development