QPID-3170 - Additional patch to deal with the restarted broker scenario
Review Request #557 - Created April 6, 2011 and discarded
| Information | |
|---|---|
| Ted Ross | |
| qpid | |
| Reviewers | |
| gordon, kgiusti | |
In looking at this bug, I discovered that when a bridge queue is torn down (from a torn down link or a bounced broker), it uses the local-only flavor of unbind to remove all the bindings to the queue. If propagated bindings (those with fed-origins) are removed this way, *and* there is a local binding with the same key, the local-binding count is erroneously decremented. This patch resolves this issue and may be a solution to QPID-3170.
-
trunk/qpid/cpp/src/qpid/broker/QueueBindings.cpp (Diff revision 1) -
Is this supposed to be fedOpBind rather than fedOpUnbind? Couldn't all this be handled within the exchange class itself rather than letting the rather messy and confusing notions around fedops and origins leak further into the code? That's the approach taken by https://reviews.apache.org/r/533/, right? Could it be enhanced for the failure motivating this patch?
I think the proposed patch for QPID-3170 given here: https://reviews.apache.org/r/533/ should still be applied although the broker restart case needs addressing. This older patch removes the special case handling of the null fedOrigin value - removing the need for all exchange code to understand when to call delOrigin() (local binding) or delOrigin(name, origin) (remove binding) and hides that in the FedBinding class itself. Furthermore, the older patch adds a testcase to the federation tests that could be leveraged to exercise the restart issue.
Review request changed
