[
https://issues.apache.org/jira/browse/QPID-3767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13250691#comment-13250691
]
[email protected] commented on QPID-3767:
-----------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/4659/#review6823
-----------------------------------------------------------
Ship it!
Nit-picking only
/trunk/qpid/cpp/src/qpid/broker/Bridge.h
<https://reviews.apache.org/r/4659/#comment15188>
Why passing just the name rather than the Bridge pointer in
cancellationlistener? The bridge is more useful.
/trunk/qpid/cpp/src/qpid/broker/Bridge.cpp
<https://reviews.apache.org/r/4659/#comment15196>
Nit: for consistency use size() rather than length()
/trunk/qpid/cpp/src/qpid/broker/Link.cpp
<https://reviews.apache.org/r/4659/#comment15199>
ostream << Address does print transport:host:protocol if I recall..
/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
<https://reviews.apache.org/r/4659/#comment15197>
replicatorName(q->getName()) is already unique within the broker (actually
its an exchange name) so the UUID is not necessary.
/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
<https://reviews.apache.org/r/4659/#comment15198>
Lock is not needed. Activate is called before any concurrent activity
starts. (actually not quite true on trunk now, will be true with my next
checkin...)
- Alan
On 2012-04-05 14:45:55, Kenneth Giusti wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/4659/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2012-04-05 14:45:55)
bq.
bq.
bq. Review request for qpid, Alan Conway, Gordon Sim, Ted Ross, and Rob
Godfrey.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. This set of changes modifies the Broker's Link and Bridge objects by
changing the way they are indexed. This change is visible to users as it
modifies the existing management model for this objects.
bq.
bq. The current implementation uses the remote broker's Host and Port value to
identify the Link, and also as part of the index for identifiying the Bridge.
bq.
bq. The problem with this approach is that it does not support failover well,
where the remote Host and Port values are likely to change.
bq.
bq. This patch modifies the Link and Bridge object to now be indexed by a
unique name (expressed as a string). It removes the host & port indexing from
the QMF model. With this patch, host and port are allowed to change over time
without invalidating the Link or Bridge.
bq.
bq. I've also added a reference to the connection that the Link is using -
this useful information was missing from the existing model.
bq.
bq. This patch also introduces the ability to create Links and Bridges via the
QMF Broker object's "create" and "delete" method. This feature is yet to be
used by qpid-route, however, and the old methods to create Links and Bridges
using host and ports are preserved for backward compatibility. We can remove
this if desired in a later release.
bq.
bq. Things this patch does not do, and I'll like to track as separate feature
requests if possible:
bq.
bq. o) Modify the qpid-route tool to allow the ability to name links and
bridges if desired - and allowe more control over the management of Links &
Bridges - details TBD.
bq. o) Java broker support of Link and Bridge naming, and the ability to
manage Links/Bridges via the broker's create/delete methods.
bq.
bq. Alan - my changes to the HA code are at best a guess, can you take a look?
bq. Rob - ditto my changes to the Java broker.
bq.
bq. thanks
bq.
bq.
bq. This addresses bug qpid-3767.
bq. https://issues.apache.org/jira/browse/qpid-3767
bq.
bq.
bq. Diffs
bq. -----
bq.
bq. /trunk/qpid/cpp/src/qpid/broker/LinkRegistry.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/LinkRegistry.h 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/Link.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/Link.h 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/Broker.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/Bridge.h 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/Bridge.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/NameGenerator.h 1306454
bq. /trunk/qpid/cpp/src/qpid/broker/RecoveryManagerImpl.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/cluster/Connection.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/ha/Backup.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp 1306454
bq. /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.h 1306454
bq. /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp 1306454
bq. /trunk/qpid/cpp/src/tests/federation.py 1306454
bq.
/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
1306454
bq.
/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/LinkConfigType.java
1306454
bq. /trunk/qpid/specs/management-schema.xml 1306454
bq. /trunk/qpid/tools/src/py/qpid-tool 1306454
bq.
bq. Diff: https://reviews.apache.org/r/4659/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq. make check,
bq. ant build/test
bq. windows build via Hudson
bq.
bq.
bq. Thanks,
bq.
bq. Kenneth
bq.
bq.
> Federation link index becomes invalid on failover against a cluster.
> --------------------------------------------------------------------
>
> Key: QPID-3767
> URL: https://issues.apache.org/jira/browse/QPID-3767
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Affects Versions: 0.14
> Reporter: Ken Giusti
> Assignee: Ken Giusti
> Fix For: 0.15
>
>
> The Link management object that represents a connection between two federated
> brokers is indexed (identified) by the remote broker's host and port. If the
> remote broker is part of a cluster, and a failover event occurs, the
> host:port used by the Link object's index may no longer exist. This prevents
> the route from being deleted.
> For example, create a cluster of two brokers using addresses 127.0.0.1:2222
> and 127.0.0.1:3333. Start a third broker, say 127.0.0.1:8888. Create a
> queue route from 127.0.0.1:2222 to an exchange on 127.0.0.1:8888. Kill the
> broker 127.0.0.1:2222. This results in a Link object that is connected to
> 127.0.0.1:3333, but reports 127.0.0.1:2222 as it's host.
> [kgiusti@localhost src]$ qpid-config -a 127.0.0.1:2222 add queue src
> [kgiusti@localhost src]$ qpid-config -a 127.0.0.1:8888 add exchange fanout
> destx
> [kgiusti@localhost src]$ qpid-config -a 127.0.0.1:8888 add queue dest
> [kgiusti@localhost src]$ qpid-config -a 127.0.0.1:8888 bind destx dest
> [kgiusti@localhost src]$ qpid-route queue add 127.0.0.1:8888 127.0.0.1:2222
> destx src
> [kgiusti@localhost src]$ ../examples/messaging/spout -b 127.0.0.1:2222
> --content "ZZZ" src
> [kgiusti@localhost src]$ ../examples/messaging/drain -b 127.0.0.1:8888 -t 2
> dest
> Message(properties={spout-id:8c308c74-6b25-4408-8694-93ef8352a308:0,
> x-amqp-0-10.routing-key:src}, content='ZZZ')
> <Kill Broker 127.0.0.1:2222, link fails over to 127.0.0.1:3333>
> From qpid-tool:
> qpid: show 133
> Object of type:
> org.apache.qpid.broker:link:_data(bc33c1b3-25cd-e0ce-04d7-ad684ed36d91)
> Attribute 133
> =================================================
> vhostRef 150
> host 127.0.0.1
> port 2222
> transport tcp
> durable False
> state Operational
> lastError Failed over to tcp:10.16.185.15:3333
> Once this occurs, I am unable to delete the link:
> [kgiusti@localhost src]$ qpid-route queue del 127.0.0.1:8888 127.0.0.1:2222
> destx src
> [kgiusti@localhost src]$ qpid-tool 127.0.0.1:8888
> qpid: list
> Summary of Objects by Type:
> Package Class Active Deleted
> =======================================================
> org.apache.qpid.broker binding 14 0
> org.apache.qpid.broker system 1 0
> org.apache.qpid.broker broker 1 0
> org.apache.qpid.broker bridge 1 0
> org.apache.qpid.broker link 1 0
> org.apache.qpid.broker subscription 5 0
> org.apache.qpid.broker connection 2 0
> org.apache.qpid.broker session 2 0
> org.apache.qpid.broker queue 6 0
> org.apache.qpid.broker exchange 9 0
> org.apache.qpid.broker vhost 1 0
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]