[ 
https://issues.apache.org/jira/browse/QPID-3304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13068300#comment-13068300
 ] 

Kim van der Riet commented on QPID-3304:
----------------------------------------

Further note on reproducing this error through the new tests:

This error occurs when the following three conditions are met:

1. The queue type is a regular route. Queue routes do not exhibit the problem. 
This is because regular routes copy the message to both the bridge queue and 
the source queue; queue routes do not do this.

2. Persistence is enabled. Both the target queue and the test messages must be 
persistent.

3. Transactions must be used for the enqueue operation on the source broker.

Under these conditions, attempting to consume a test message from the 
destination broker after being transferred through the link will result in the 
following error conditions:

1. If the message is consumed non-transactionally, the store will throw the 
"Dequeuing message with null persistence Id" message.

2. If the message is consumed within a transaction, then the "internal-error: 
internal-error: Commit failed" message will be seen.

A set of tests which test links under various combinations of exchange type, 
durability, transactionality and clustering for both regular and queue routes 
has been added. However, when run from "make check" in the qpid/cpp dir, tests 
involving durability are not run, as the async store is not known to the test 
environment. However, the async store now also has a federation test, and 
running "make check" from the store will call this set of tests in the qpid 
test dir and run all the tests with the store enabled. Since durability is 
required to show the error as described here, the tests must be run from the 
async store build dir.

To avoid running all the tests, it is possible to execute the 
run_federation_sys_tests script from both the qpid cpp/src/test directory or 
from the async store cpp/test/federation directory.

Note that the async store is not a part of Apache Qpid at the moment; see 
https://cwiki.apache.org/qpid/faq.html#FAQ-Persistence for further details on 
how to obtain this module.

> Tagged federation messages in a transaction can cause subsequent dequeue to 
> fail
> --------------------------------------------------------------------------------
>
>                 Key: QPID-3304
>                 URL: https://issues.apache.org/jira/browse/QPID-3304
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: 0.10
>            Reporter: Gordon Sim
>             Fix For: 0.11
>
>
> E.g. with Error dequeuing message, persistence id not set 
> (MessageStoreImpl.cpp:1355) (exact error depends on store used).
> To reproduce, bind a durable queue to an exchange with a given binding key 
> the set up a route between that same exchange on two brokers with the 'source 
> broker' being the one with the durable queue bound to it. Then bind a queue 
> on the 'destination' broker with the same binding key as used for the durable 
> queue. Then publish a transactional message to the source brokers exchange 
> with a matching routing key. The message will be enqueued on both the durable 
> queue and the federation routes temporary bridge queue. However the 
> persistence id for the message, set when enqueueing on the durable queue is 
> lost and subsequent attempts to dequeue to fail.
> The problem is that the copy-on-write strategy used to workaround QPID-2670 
> means that the message on which the persistent store id is set is not then 
> pushed onto the appropriate queues, the copy is (and the copy may not have 
> the persistence id set on it). 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to