You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Jim Gomes (JIRA)" <ji...@apache.org> on 2009/06/03 00:47:50 UTC

[jira] Resolved: (AMQNET-160) Connecting to non-existing host does not raise Exception when using failover protocol

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

Jim Gomes resolved AMQNET-160.
------------------------------

    Resolution: Fixed

After further investigating this issue, the code for the failover transport has been re-factored to be more inline with other transports.  If another transport cannot initially connect to a server, an exception is throw (NMSConnectionException).  The failover transport will now also throw this exception when performing the initial connection logic if it is unable to connect to *any* of the servers in the failover list.  Once the transport has successfully connected to at least one of the servers in its list, then it will work in retry mode if that connection goes bad.

Unit tests have been added to test for non-existant servers.

> Connecting to non-existing host does not raise Exception when using failover protocol
> -------------------------------------------------------------------------------------
>
>                 Key: AMQNET-160
>                 URL: https://issues.apache.org/activemq/browse/AMQNET-160
>             Project: ActiveMQ .Net
>          Issue Type: Bug
>          Components: ActiveMQ Client
>    Affects Versions: 1.0
>         Environment: Windows XP/Windows 2003 , .NET Framework 2.0 (Broker running Ubuntu 8.04 + ActiveMQ 5.2)
>            Reporter: Michel Van Hoof
>            Assignee: Jim Gomes
>             Fix For: 1.1
>
>
> When using the failover protocol, there is no exception raised when trying to connect to non-existing host.
> Example:
> using System;
> using System.Collections.Generic;
> using System.Text;
> using Apache.NMS;
> using Apache.NMS.ActiveMQ;
>     class ExceptionTest
>     {
>         private readonly IConnectionFactory oConnfact;
>         private readonly IConnection oConn;
>         private readonly ISession oSess;
>         private readonly IMessageConsumer oConsumer;
>         private string sConnectionUri = "failover:(tcp://unknownhost:61612)";
>         // Using this connectionstring it does fail.
>         //private string sConnectionUri = "tcp://unknownhost:61612";
>         public ExceptionTest()
>         {
>             oConn.ExceptionListener += new ExceptionListener(OnException);
>             this.oConnfact = new ConnectionFactory(sConnectionUri, "CLIENT.ID");
>            
>             oConn.ExceptionListener += new ExceptionListener(OnException);
>             this.oConn = oConnfact.CreateConnection();
>             oConn.RequestTimeout(new TimeSpan(0, 0, 2)); 
>             // Code hangs here
>             oConn.Start();
>             //Rest does not really mather anymore since it hangs
>             
>         }
>         void OnEx(Exception exception)
>         {
>                 throw new Exception("The method or operation is not implemented.");
>         }
>         public void OnException(Exception ex)
>         {
>             Console.WriteLine("You made a BooBoo: {0} ", ex.ToString());
>         }
>     }
> If you change the connectionstring to "tcp://badhostname:xxxx" , the exception does occur. 
> It also seems to ignore the RequestTimeout.
> This blocks the application thread indefinately since there is no way to recover from it (no exception thrown).

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