From 7d17da1a2ebf2028d85f0e43c38d004d76641e1d Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Fri, 4 Nov 2011 13:21:53 +0000 Subject: QPID-2920: Minor updates to design/plan docs. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qpid-2920-active@1197548 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/design_docs/new-cluster-design.txt | 13 +++++++++---- qpid/cpp/design_docs/new-cluster-plan.txt | 25 ++++++++++++++++++++----- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/qpid/cpp/design_docs/new-cluster-design.txt b/qpid/cpp/design_docs/new-cluster-design.txt index 63632f9265..0b015a4570 100644 --- a/qpid/cpp/design_docs/new-cluster-design.txt +++ b/qpid/cpp/design_docs/new-cluster-design.txt @@ -342,10 +342,15 @@ Active/passive benefits: - Don't need to replicate message allocation, can feed consumers at top speed. Active/passive drawbacks: -- All clients on one node so a failure affects every client in the system. -- After a failure there is a "reconnect storm" as every client reconnects to the new active node. -- After a failure there is a period where no broker is active, until the other brokers realize the primary is gone and agree on the new primary. -- Clients must find the single active node, may involve multiple connect attempts. +- All clients on one node so a failure affects every client in the + system. +- After a failure there is a "reconnect storm" as every client + reconnects to the new active node. +- After a failure there is a period where no broker is active, until + the other brokers realize the primary is gone and agree on the new + primary. +- Clients must find the single active node, may involve multiple + connect attempts. - No service if a partition separates a client from the active broker, even if the client can see other brokers. diff --git a/qpid/cpp/design_docs/new-cluster-plan.txt b/qpid/cpp/design_docs/new-cluster-plan.txt index 757e421f4e..042e03f177 100644 --- a/qpid/cpp/design_docs/new-cluster-plan.txt +++ b/qpid/cpp/design_docs/new-cluster-plan.txt @@ -95,11 +95,16 @@ Throughput worse by 30% in contented case, 10% in uncontended. * Tasks to match existing cluster ** TODO [#A] Review old cluster code for more tasks. 1 ** TODO [#A] Put cluster enqueue after all policy & other checks. - SCHEDULED: <2011-10-31 Mon> -gsim points out that we do policy check after multicasting enqueue so -could have inconsistent. Multicast should be after enqueue and any -other code that may decide to send/not send the message. +gsim: we do policy check after multicasting enqueue so +could have inconsistent outcome. + +aconway: Multicast should be after enqueue and any other code that may +decide to send/not send the message. + +gsime: while later is better, is moving it that late the right thing? +That will mean for example that any dequeues triggered by the enqueue +(e.g. ring queue or lvq) will happen before the enqueue is broadcast. ** TODO [#A] Defer and async completion of wiring commands. 5 Testing requirement: Many tests assume wiring changes are visible @@ -108,11 +113,19 @@ across the cluster once the wiring commad completes. Name clashes: avoid race if same name queue/exchange declared on 2 brokers simultaneously. +Ken async accept, never merged: http://svn.apache.org/viewvc/qpid/branches/qpid-3079/ + Clashes with non-replicated: see [[Allow non-replicated]] below. +** TODO [#A] defer & async completion for explicit accept. + +Explicit accept currently ignores the consume lock. Defer and complete +it when the lock is acquired. + ** TODO [#A] Update to new members joining. 10. -Need to resolve [[Queue sequence numbers vs. independant message IDs]] first. +Need to resolve [[Queue sequence numbers vs. independant message IDs]] +first. - implicit sequence numbers are more tricky to replicate to new member. Update individual objects (queues and exchanges) independently. @@ -207,6 +220,8 @@ Extend broker::Cluster interface to capture transaction context and completion. Running brokers exchange DTX information. New broker update includes DTX information. +** TODO [#B] Replicate message groups? +Message groups may require additional state to be replicated. ** TODO [#B] Replicate state for Fairshare? gsim: fairshare would need explicit code to keep it in sync across nodes; that may not be required however. -- cgit v1.2.1