activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guy Allard (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (APLO-88) ACK followed by DISCONNECT Leaves Message Available
Date Wed, 07 Dec 2011 00:01:26 GMT

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

Guy Allard commented on APLO-88:
--------------------------------

Hiram - The receipt on disconnect was an interesting idea.  However actually using it does
*not* solve this problem.

I will look at linger in the next few days, and let you know.

However, please note:

- This client code works running with Active MQ, recent release
- This client code works running with RabbitMQ, recent release

IMO, this is a race condition in Apollo.  In every case, it is accompanied by a message like:

2011-12-06 18:37:29,768 | DEBUG | Internal protocol error: message delivery acked/nacked multiple
times: 1 | org.apache.activemq.apollo.broker.Subscription | hawtdispatch-DEFAULT-3

where the actual count displayed could be different, depending on how many previous successful
tests were run.





                
> ACK followed by DISCONNECT Leaves Message Available
> ---------------------------------------------------
>
>                 Key: APLO-88
>                 URL: https://issues.apache.org/jira/browse/APLO-88
>             Project: ActiveMQ Apollo
>          Issue Type: Bug
>          Components: apollo-stomp
>         Environment: Linux, Ubuntu 11.04
>            Reporter: Guy Allard
>         Attachments: aplo-88-log.txt
>
>
> An ACK (client mode) followed by a DISCONNECT with no wait time between the frames appears
to leave message on the queue.
> I am seeing this with apache-apollo-1.0-20111012.032531-204-unix-distro.tar.gz and at
least one previous snapshot.
> I stumbled on to this while working on a new 1.1 client in go.  It occurs with either
a 1.0 or 1.1 connection.  The go code is very raw and not publicly available yet.
> However it recreates with 1.0 using the Ruby stomp gem.  Code to recreate:
> # ---------
> require 'rubygems'
> require 'stomp'
> #
> c = Stomp::Connection.open('my', 'mypw', 'localhost', 62613) # Apollo is here
> c.subscribe "/queue/rtest.01", :ack => :client
> c.publish "/queue/rtest.01", "a simple message"
> msg = c.receive
> c.ack msg.headers['message-id']
> # sleep 5
> c.disconnect
> # ---------
> And is (usually) accompanied by:
> 2011-10-13 22:56:00,041 | DEBUG | Internal protocol error: message delivery acked/nacked
multiple times: 1 | org.apache.activemq.apollo.broker.Subscription | hawtdispatch-DEFAULT-1
> in apollo.log
> Calling 'flush' on the socket seems to have no affect (in either Ruby or go).
> If you uncomment the 'sleep' in the above Ruby code, the problem will (usually) *not*
occur.
> I do get some slightly different results with the go test bed, but let's start with this
............

--
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

        

Mime
View raw message