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

Rajith Attapattu resolved QPID-2861.
------------------------------------

    Resolution: Fixed

This issue is fixed. We handle this condition and prints a warning message.

> JMS client needs to handle duplicate commands replayed after failover
> ---------------------------------------------------------------------
>
>                 Key: QPID-2861
>                 URL: https://issues.apache.org/jira/browse/QPID-2861
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>            Reporter: Rajith Attapattu
>            Assignee: Rajith Attapattu
>            Priority: Critical
>             Fix For: 0.7
>
>
> The c++ broker could resend commands after failover that is no longer valid 
> on the client side.
> The commands maybe invalid (removed from the internal map) for two reasons,
> 1. These commands could have been acted on the client side but were unable to 
> confirm to the broker before failover happened.
> 2. It could also that the c++ broker is actually sending commands that were 
> already acked due to a bug on the broker side.
> So far I haven't been able to conclusively determine which of the above is 
> causing the duplicate commands. 
> Since this is only surfaced very recently I am speculating that it is the 
> later as if it was the former then it would have been detected a lot earlier 
> as the JMS client lacked any error handling in this area.
> It could also be that the broker is replaying only responses to certain 
> commands like ExchangeQuery QueueQuery etc.. 
> These commands are sent by the JMS client only if the new addressing scheme 
> is used, hence the reason why this issue can be reproduced only  when the new 
> addressing syntax is used.
> Irrespective of whether it's a broker bug or not the Java client should be 
> able to handle this error. 
> For example the c++ broker seems to resend an ExchangeQueryResult after 
> failover, that had actually been sent to the client before failover. This 
> causes a NPE on the JMS client which doesn't get handled properly and 
> eventually kills the connection. This causes the client to retry the 
> connection which in turn causes errors like Session already attached.
> Ex.
> 2010-09-16 17:16:05 error Channel exception: session-busy: Session already 
> attached: [email protected] 
> (qpid/broker/SessionManager.cpp:55)
> 2010-09-16 17:16:05 error Channel exception: not-attached: Channel 4 is not 
> attached (qpid/amqp_0_10/SessionHandler.cpp:39)

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


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

Reply via email to