qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QPID-5455) [AMQP 1.0 JMS client] Client looses persistent messages violating JMS delivery guarantee
Date Wed, 08 Jan 2014 22:06:50 GMT

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

ASF subversion and git services commented on QPID-5455:
-------------------------------------------------------

Commit 1556654 from [~godfrer] in branch 'qpid/trunk'
[ https://svn.apache.org/r1556654 ]

QPID-5455 : Publishing non-transactional persistent messages should always be synchronous

> [AMQP 1.0 JMS client] Client looses persistent messages violating JMS delivery guarantee
> ----------------------------------------------------------------------------------------
>
>                 Key: QPID-5455
>                 URL: https://issues.apache.org/jira/browse/QPID-5455
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.26
>         Environment: Java
>            Reporter: Ulrich Romahn
>            Priority: Minor
>         Attachments: QPID-5455_v2.patch, QPID5455-patch.txt, QPID5455-patch.txt
>
>
> I think the client violates the delivery guarantee of JMS with persistent messages.
> Here is my test:
> 1. Start a qpid-cpp broker. Create a persistent queue on that broker
> 2. Start a test Java application using the amqp 1.0 JMS client. The application will
write 10,000 persistent messages into the just created queue.
> 3. After some time while the client is still writing messages into the queue, I kill
the broker (kill -9 <pid>) simulating the worst disaster scenario
> 4. My client code throws an exception and reports 4,963 messages sent
> 5. After re-starting qpidd, the queue statistics reports only 4,816 messages in the queue!
> Here are some of the relevant code snippets from the client:
> // Creating a Session
> Session session = brokerConn.getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
// NOTE AUTO_ACKNOWLEGE does not have any effect with nessage producer
> // Create a destination
> Destination dest = session.createQueue(queueName);
> // Creating a MessageProducer
> MessageProducer msgProducer = session.createProducer(dest);
> msgProducer.setDeliveryMode(2); // 2 == persistent
> And then in a loop 1000 times with a random TextMessage I call:
> msgProducer.send(msg);
> So, it looks like the client is sending the message to the broker and the "send(msg)"
method returns *before* either the broker acknowledged receiving and persisting the message,
or the client does some internal caching.
> By the way, I see the exact same issue when using ActiveMQ 5.9.0 as the broker using
the AMQP connector.
> However, it is also possible that the bug is within the proton library on the server
side which is being used in both the qpid-cpp broker (proton-c) and ActiveMQ 5.9.0 (proton-j)
to support AMQP 1-0.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message