activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From semog <>
Subject Re: NMS: Small fix for newly implemented failover support
Date Thu, 11 Dec 2008 21:09:33 GMT

Hi Daniel,

Thanks for providing this bug report and the supplied patches.  I have
created a new JIRA issue to track this.  Feel free to update it or reference
it here: AMQNET-134 .

I applied your patches, so you can sync to the head revision of the trunk
versions to check on them.

Best Regards,

Daniel Ellis wrote:
> Good work getting the new failover transport in to NMS, which is much
> appreciated and it looks like a substantial piece of work. I have been
> testing the new failover transport, and auto reconnection seems fine by
> adding the same server twice using a connection uri such as:
>   <defaultURI
> value="activemq:failover:(tcp://localhost:61616,tcp://localhost:61616)"/>
> However I have noticed a few issues with the unit tests:
>  1. Certain tests fail due to a KeyNotFoundException
>  2. The tests run substantially slower
> I have identified the KeyNotFoundException to be due to the session state,
> which the failover transport maintains.  The KeyNotFoundException was due
> to an attempt to remove an invalid session id.  Because the session did
> not exist in the dictionary, the KeyNotFoundException was thrown.  However
> the caller was checking for a null return value and was not catching this
> exception, further up the call stack the exception was being caught and
> wrapped in an IOException, thus causing the failover transport to attempt
> a re-connect.  The re-connect cycle would then continue forever, and cause
> the unit tests to hang.
> The reason the session id was invalid was due to a typo in SessionId.cs
> where a constructor was using the Value property of a ProducerId rather
> than the SessionId property (Patch attached 
> SessionId.patch )
> I found it much easier to diagnose the issue by adding the NMS trace
> output to NUnit, I don't know if that is possible with the existing setup
> via configuration files.  If not this patch (
> UnitTestTracer.patch ) adds the output to the Trace tab, which may be
> useful.
> Finally, should the SessionState indexer in ConnectionState.cs be changed
> to return null if the session does not exist?  Or should the other classes
> be catching and ignoring a KeyNotFoundException?
> This patch (
> ConnectionState.patch ) may be useful for diagnosing when a session id is
> missing.  It includes an Assert for when the requested session id does not
> exist.
> semog wrote:
>> I would definitely suggest updating to the latest trunk build.  I haven't
>> started my reliable testing/verification as I have been tasked with other
>> items.  I would think that the new failover protocol support should help
>> in
>> this regard.  Prior to that being added, there was no support for
>> automatic
>> reconnect.  I haven't played with the failover stuff yet, but I would try
>> listing the same server twice in the failover list so that the code will
>> try
>> to reconnect to the same server if it gets bounced.  Don't know if that
>> will
>> work, but it worth a try.

View this message in context:
Sent from the ActiveMQ - Dev mailing list archive at

View raw message