[
https://issues.apache.org/jira/browse/QPID-3076?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13025970#comment-13025970
]
[email protected] commented on QPID-3076:
-----------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/512/
-----------------------------------------------------------
(Updated 2011-04-27 19:39:49.097658)
Review request for Alan Conway and Gordon Sim.
Changes
-------
This backs out the QueueObserver changes and creates a new Derived object
StatefulQueueObserver, which is used by the cluster code for replication. I
like this better.
What say ye, Gordon?
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/src/qpid/broker/Broker.cpp 1097191
/trunk/qpid/cpp/src/qpid/broker/Queue.h 1097191
/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.h 1097191
/trunk/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp 1097191
/trunk/qpid/cpp/src/qpid/broker/StatefulQueueObserver.h PRE-CREATION
/trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp 1097191
/trunk/qpid/cpp/src/qpid/cluster/Connection.h 1097191
/trunk/qpid/cpp/src/qpid/cluster/Connection.cpp 1097191
/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.h 1097191
/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp 1097191
/trunk/qpid/cpp/src/tests/QueueFlowLimitTest.cpp 1097191
/trunk/qpid/cpp/src/tests/cluster_tests.py 1097191
/trunk/qpid/cpp/src/tests/queue_flow_limit_tests.py 1097191
/trunk/qpid/cpp/xml/cluster.xml 1097191
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:[email protected]