You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "jiraposter@reviews.apache.org (JIRA)" <ji...@apache.org> on 2011/04/26 19:07:03 UTC

[jira] [Commented] (QPID-3076) Enable producer flow control (QPID-2935) in a cluster

    [ https://issues.apache.org/jira/browse/QPID-3076?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025321#comment-13025321 ] 

jiraposter@reviews.apache.org commented on QPID-3076:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/512/
-----------------------------------------------------------

(Updated 2011-04-26 17:04:03.647250)


Review request for Alan Conway and Gordon Sim.


Changes
-------

Folks,  this has been languishing on my disk for awhile - I'd like to get it on trunk.  This patch is complete and ready to go (passes unit and store tests).

Gordon - note well the changes it makes to the queue observer api: we need some way of replicating queue observer state across the members of a cluster.  I thought this approach was generic, though not much of a looker.

Let me know what you think, thanks.


Summary
-------

Hi Alan,

Here's a patch that should give you an idea of the direction I'm going in - could be completely wrong here so I don't want to go too far without checking with you.

bq. From your notes, I've modified a bit those items I *think* we need to replicate based on the changes I've made to increase performance (some items have been removed).  Here's what I think we need to cover:

Replicate:

    For each Queue:
        If Queue has a QueueFlowLimit configured:
           QueueFlowLimit::flowStoppedCount
           QueueFlowLimit::index set of msg sequence numbers that are pending.

           For each msg in the QueueFlowLimit::index set:
               Allocate a SessionState::IncompleteIngressMsgXfer context
               Attach a SessionState::IncompleteIngressMsgXfer context to messsage's AsyncCompletion callback
               Force AsyncCompletion::completion count to 1 (??? or more ???)

    For each SessionState:
        Replicate the vector of pendingExecutionSyncs SequenceNumbers
        Add an AsyncCommandCompleter context
            Replicate the vector of completedMsgs
            If vector of completedMsgs > 0:
               Scheduled requestIOProcessing for callback ????

Let me know what you think, thanks.


This addresses bug QPID-3076.
    https://issues.apache.org/jira/browse/QPID-3076


Diffs (updated)
-----

  /trunk/qpid/cpp/docs/man/qpidd.1 1096739 
  /trunk/qpid/cpp/src/qpid/broker/Broker.cpp 1096739 
  /trunk/qpid/cpp/src/qpid/broker/Queue.h 1096739 
  /trunk/qpid/cpp/src/qpid/broker/Queue.cpp 1096739 
  /trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h 1096739 
  /trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp 1096739 
  /trunk/qpid/cpp/src/qpid/broker/QueueObserver.h 1096739 
  /trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp 1096739 
  /trunk/qpid/cpp/src/qpid/cluster/Connection.h 1096739 
  /trunk/qpid/cpp/src/qpid/cluster/Connection.cpp 1096739 
  /trunk/qpid/cpp/src/qpid/cluster/UpdateClient.h 1096739 
  /trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp 1096739 
  /trunk/qpid/cpp/src/tests/QueueFlowLimitTest.cpp 1096739 
  /trunk/qpid/cpp/src/tests/cluster_tests.py 1096739 
  /trunk/qpid/cpp/src/tests/queue_flow_limit_tests.py 1096739 
  /trunk/qpid/cpp/xml/cluster.xml 1096739 

Diff: https://reviews.apache.org/r/512/diff


Testing
-------

Barely compiles.


Thanks,

Kenneth



> Enable producer flow control (QPID-2935) in a cluster
> -----------------------------------------------------
>
>                 Key: QPID-3076
>                 URL: https://issues.apache.org/jira/browse/QPID-3076
>             Project: Qpid
>          Issue Type: New Feature
>          Components: C++ Clustering
>    Affects Versions: 0.9, 0.10
>            Reporter: Alan Conway
>            Assignee: Ken Giusti
>             Fix For: 0.11
>
>         Attachments: QPID-3076-2.patch
>
>
> QPID-2935 adds  producer flow control to the broker, but it is disabled in a cluster. Flow control adds additional broker state that must be replicated in a cluster in order to maintain cluster consistency. Add this replication and enable flow control in a cluster.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org