activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Yaussy (JIRA)" <>
Subject [jira] Commented: (AMQ-776) ConduitBridge can malfunction when first of a set of consumers goes away
Date Mon, 14 Aug 2006 20:32:23 GMT
    [ ] 
Kevin Yaussy commented on AMQ-776:

I'll attach a patch file for which is baselined on the
4.0.1 version.  It includes the logging changes from my other call, which you've already applied
to 4.0.2.

When I was analyzing the problem, it looked to me like there was more to the problem than
just clearing out the subscription maps (which is what the 4.0.2 code does).  It needed to
forward the subscription removal to the broker, which is why my patch calls removeSubscription,
which forwards the removal to the broker code, but also removes the entry from the local subscription
map.  It did not make any difference whether I cleared the remote subscription map, so that
step is not in the patch (but could be for cleanliness).

I've downloaded the current 4.0.2 snapshot, and applied this change (replacing the 4.0.2 version
of clearDownSubscriptions).  However, the problem still persists in 4.0.2.  So, given other
changes in 4.0.2, the change is not compatible - which is bad.

The first patch for this call, ConduitBridge.patch, is applicable to 4.0.2.

> ConduitBridge can malfunction when first of a set of consumers goes away
> ------------------------------------------------------------------------
>                 Key: AMQ-776
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 4.0.1
>            Reporter: Kevin Yaussy
>         Assigned To: Rob Davies
>            Priority: Critical
>             Fix For: 4.0.3
>         Attachments: ConduitBridge.patch
> When the following scenario is followed, any of the subsequent consumers will stop receiving
messages.  I've reproduced this using the ConsumerTool, and ProducerTool supplied in the example
area of the distribution.
> +++++++++++++++++++++++
> Start Broker A
> Start Broker B
> Start Consumer 1, connecting to Broker B, consuming FOO
> Start Consumer 2, connecting to Broker B, consuming FOO
> Start Publisher, connecting to Broker A, publishing FOO
> Ctl-C out of Consumer 1
> Consumer 2 stops receiving messages
> +++++++++++++++++++
> Seems to me that ConduitBridge is supposed to track all consumers for a given subscription,
by way of DemandSubscription.  It is seeding DemandSubscription with the originating consumer,
but when subsequent consumers are added, the ConduitBridge::addToAlreadyInterestedConsumers
re-adds the original subscriber to the DemandSubscription's map - so the map only ever has
the original subscription.
> I've attached a patch.  Hope the change is good.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message