activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruce Snyder (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AMQ-2174) Modifying an existing Durable subscription blocks that subscription from receiving messages
Date Sat, 18 Sep 2010 16:47:02 GMT

     [ https://issues.apache.org/activemq/browse/AMQ-2174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Bruce Snyder updated AMQ-2174:
------------------------------

    Fix Version/s: 5.5.0
                       (was: 5.4.1)

> Modifying an existing Durable subscription blocks that subscription from receiving messages
> -------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2174
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2174
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.2.0
>         Environment: Windows XPSP3
>            Reporter: Antony Bowesman
>            Priority: Critical
>             Fix For: 5.5.0
>
>         Attachments: AMQ2174Test.java, selector.log, SelectorBugTest.java
>
>
> When modifying an existing durable subscription, for example to change selectors, that
subscription no longer gets any messages and error messages are produced.
> Juni test case attached and broker output with log level set to TRACE, which is based
on the ProducerTool and ConsumerTool examples.
> Sequence to produce the problem is 
> 1. Clean data directory
> 2. Run test case testConsumeWithNoSelectors - this creates the topic and blocks waiting
for messages
> 3. Run test case testProduceWithProperties - this creates 6 messages each with a single
String property.  First 2 have "selectorProp = 0", second 2 have value 1 and third pair have
value 0 again.  Consumer test case in (2) will consume messages and exit.
> 4. Run test case testConsumeWithSelectors - this changes the durable subscription and
adds the selectorProp = '0' to the subscription.
> 5. Run same test case as (3).  The consumer will then receive the first 2 messages produced
by this producer and then block as it changes the subscription to have selectorProp = '1'.
> At this point this would appear to be a problem.  According to the JMS TopicSubscriber
Javadocs
> "A client can change an existing durable subscription by creating a durable TopicSubscriber
with the same name and a new topic and/or message selector. Changing a durable subscription
is equivalent to unsubscribing (deleting) the old one and creating a new one. "
> so, if step (4) above has now changed the durable subscription to add a selector it still
receives the first two messages from step 5, so from that, it appears that the broker is able
to recognise this as a modification (although it is delete+create).  So, when it then tried
to make the modification to change the selector to "selectorProp = 1" and receive the next
two it does not get any messages.  So, I would expect that as it has now blocked waiting for
messages with those properties, if I do
> 6. Run same test case as (3)
> I would expect the middle two messages to be received by the blocked consumer, but no
more messages are consumed and I get the following messages to the broker log
> ERROR RecoveryListenerAdapter        - Message id ID:aconcagua-4821-1237761609609-0:0:1:1:3
could not be recovered from the data store - already dispatched
> This particular subscription for clientId and topic now seems to be blocked forever and
messages posted to this topic can never be received by this subscriber.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message