[
https://issues.apache.org/activemq/browse/AMQNET-152?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tomasz Wiczling updated AMQNET-152:
-----------------------------------
Description:
I'm testing failover transport on Mono.
I've downloaded latest revision of ActiveMQ .Net project (rev. 752559).
I've made tests on:
- both Windows and Linux
- Mono 1.9.1 and Mono 2.0
- ActiveMQ 5.1 and ActiveMQ 5.2
All test ended with an exception.
I wrote simple program that was listening on topic.
namespace IssueExample
{
internal class ConsoleTracer : ITrace
{
public bool IsDebugEnabled { get { return true; } }
public bool IsInfoEnabled { get { return true; } }
public bool IsWarnEnabled { get { return true; } }
public bool IsErrorEnabled { get { return true; } }
public bool IsFatalEnabled { get { return true; } }
public void Debug(string message) { Console.WriteLine("DEBUG:"
+ message); }
public void Info(string message) { Console.WriteLine("INFO:" +
message); }
public void Warn(string message) { Console.WriteLine("WARN:" +
message); }
public void Error(string message) { Console.WriteLine("ERROR:"
+ message); }
public void Fatal(string message) { Console.WriteLine("FATAL:"
+ message); }
}
class Program
{
public static void Main(string[] args)
{
if (args.Length < 2)
{
Console.WriteLine("USAGE: IssueExample <AMQURI>
<TOPIC_NAME>");
return;
}
Tracer.Trace = new ConsoleTracer();
IConnectionFactory factory = new
ConnectionFactory(args[0]);
IConnection connection = factory.CreateConnection();
ISession session = connection.CreateSession();
IDestination destination = session.GetTopic(args[1]);
IMessageConsumer consumer =
session.CreateConsumer(destination);
consumer.Listener += onMessage;
connection.Start();
Console.WriteLine("Successfully connected to Topic '" +
args[1] + "' on '" + args[0] + "' - waiting Any Key to be pressed");
Console.ReadKey();
consumer.Close();
connection.Dispose();
Console.WriteLine("Connected and Disconnected
successfully toTopic '" + args[1] + "' on '" + args[0] + "' - Press any key to
terminate program.");
Console.ReadKey();
}
private static void onMessage(IMessage msg)
{
Console.WriteLine("\tRECEIVING: " + msg);
}
}
}
The test was made with execution:
# mono IssueExample.exe failover:(tcp://localhost:61616) test.topic
Program works fine till the test of reconnection.
While the program is running I restart the AMQ server.
For a while I get loop of:
(...)
DEBUG:Waiting 1280 ms before attempting connection.
DEBUG:Attempting connect to: tcp://localhost:61616/
DEBUG:Opening socket to: localhost on port: 61616
DEBUG:Connect fail to: tcp://localhost:61616/, reason:
System.Net.Sockets.SocketException: Connection refused
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remote_end)
[0x00000]
at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.Connect
(System.String host, Int32 port) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.CompositeConnect
(System.Uri location) [0x00000]
at Apache.NMS.ActiveMQ.Transport.TransportFactory.CompositeConnect
(System.Uri location) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect ()
[0x00000]
(...)
And it is OK, but ...
When server resumes work, I get:
(...)
DEBUG:Waiting 20480 ms before attempting connection.
DEBUG:Parsing type: 2 with: Apache.NMS.ActiveMQ.OpenWire.V2.BrokerInfoMarshaller
DEBUG:Parsing type: 30 with: Apache.NMS.ActiveMQ.OpenWire.V2.ResponseMarshaller
ERROR:Unknown response ID: 0 for response: Response[ CorrelationId=1 ]
DEBUG:Parsing type: 10 with:
Apache.NMS.ActiveMQ.OpenWire.V2.KeepAliveInfoMarshaller
INFO:Keep alive message received.
INFO:Waiting for transport to reconnect.
DEBUG:Attempting connect to: tcp://localhost:61616/
DEBUG:Opening socket to: localhost on port: 61616
DEBUG:Parsing type: 1 with:
Apache.NMS.ActiveMQ.OpenWire.V1.WireFormatInfoMarshaller
DEBUG:Connect fail to: tcp://localhost:61616/, reason:
System.InvalidCastException: Cannot cast from source type to destination type.
at
System.Collections.Generic.Dictionary`2+ValueCollection[Apache.NMS.ActiveMQ.Commands.SessionId,Apache.NMS.ActiveMQ.State.SessionState].System.Collections.ICollection.CopyTo
(System.Array array, Int32 index) [0x00000]
at System.Collections.ArrayList.InsertRange (Int32 index, ICollection c)
[0x00000]
at System.Collections.ArrayList.AddRange (ICollection c) [0x00000]
at System.Collections.ArrayList..ctor (ICollection c) [0x00000]
at
Apache.NMS.ActiveMQ.State.SynchronizedCollection`1[Apache.NMS.ActiveMQ.State.SessionState]..ctor
(ICollection c) [0x00000]
at
Apache.NMS.ActiveMQ.State.SynchronizedDictionary`2[Apache.NMS.ActiveMQ.Commands.SessionId,Apache.NMS.ActiveMQ.State.SessionState].get_Values
() [0x00000]
at Apache.NMS.ActiveMQ.State.ConnectionState.get_SessionStates () [0x00000]
at Apache.NMS.ActiveMQ.State.ConnectionStateTracker.DoRestoreSessions
(ITransport transport, Apache.NMS.ActiveMQ.State.ConnectionState
connectionState) [0x00000]
at Apache.NMS.ActiveMQ.State.ConnectionStateTracker.DoRestore (ITransport
transport) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.restoreTransport
(ITransport t) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect ()
[0x00000]
(...)
And this is permanent state.
was:
I'm testing failover transport on Mono.
I've downloaded latest revision of ActiveMQ .Net project (rev. ).
I've made tests on:
- both Windows and Linux
- Mono 1.9.1 and Mono 2.0
- ActiveMQ 5.1 and ActiveMQ 5.2
All test ended with an exception.
I wrote simple program that was listening on topic.
namespace IssueExample
{
internal class ConsoleTracer : ITrace
{
public bool IsDebugEnabled { get { return true; } }
public bool IsInfoEnabled { get { return true; } }
public bool IsWarnEnabled { get { return true; } }
public bool IsErrorEnabled { get { return true; } }
public bool IsFatalEnabled { get { return true; } }
public void Debug(string message) { Console.WriteLine("DEBUG:"
+ message); }
public void Info(string message) { Console.WriteLine("INFO:" +
message); }
public void Warn(string message) { Console.WriteLine("WARN:" +
message); }
public void Error(string message) { Console.WriteLine("ERROR:"
+ message); }
public void Fatal(string message) { Console.WriteLine("FATAL:"
+ message); }
}
class Program
{
public static void Main(string[] args)
{
if (args.Length < 2)
{
Console.WriteLine("USAGE: IssueExample <AMQURI>
<TOPIC_NAME>");
return;
}
Tracer.Trace = new ConsoleTracer();
IConnectionFactory factory = new
ConnectionFactory(args[0]);
IConnection connection = factory.CreateConnection();
ISession session = connection.CreateSession();
IDestination destination = session.GetTopic(args[1]);
IMessageConsumer consumer =
session.CreateConsumer(destination);
consumer.Listener += onMessage;
connection.Start();
Console.WriteLine("Successfully connected to Topic '" +
args[1] + "' on '" + args[0] + "' - waiting Any Key to be pressed");
Console.ReadKey();
consumer.Close();
connection.Dispose();
Console.WriteLine("Connected and Disconnected
successfully toTopic '" + args[1] + "' on '" + args[0] + "' - Press any key to
terminate program.");
Console.ReadKey();
}
private static void onMessage(IMessage msg)
{
Console.WriteLine("\tRECEIVING: " + msg);
}
}
}
The test was made with execution:
# mono IssueExample.exe failover:(tcp://localhost:61616) test.topic
Program works fine till the test of reconnection.
While the program is running I restart the AMQ server.
For a while I get loop of:
(...)
DEBUG:Waiting 1280 ms before attempting connection.
DEBUG:Attempting connect to: tcp://localhost:61616/
DEBUG:Opening socket to: localhost on port: 61616
DEBUG:Connect fail to: tcp://localhost:61616/, reason:
System.Net.Sockets.SocketException: Connection refused
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remote_end)
[0x00000]
at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.Connect
(System.String host, Int32 port) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.CompositeConnect
(System.Uri location) [0x00000]
at Apache.NMS.ActiveMQ.Transport.TransportFactory.CompositeConnect
(System.Uri location) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect ()
[0x00000]
(...)
And it is OK, but ...
When server resumes work, I get:
(...)
DEBUG:Waiting 20480 ms before attempting connection.
DEBUG:Parsing type: 2 with: Apache.NMS.ActiveMQ.OpenWire.V2.BrokerInfoMarshaller
DEBUG:Parsing type: 30 with: Apache.NMS.ActiveMQ.OpenWire.V2.ResponseMarshaller
ERROR:Unknown response ID: 0 for response: Response[ CorrelationId=1 ]
DEBUG:Parsing type: 10 with:
Apache.NMS.ActiveMQ.OpenWire.V2.KeepAliveInfoMarshaller
INFO:Keep alive message received.
INFO:Waiting for transport to reconnect.
DEBUG:Attempting connect to: tcp://localhost:61616/
DEBUG:Opening socket to: localhost on port: 61616
DEBUG:Parsing type: 1 with:
Apache.NMS.ActiveMQ.OpenWire.V1.WireFormatInfoMarshaller
DEBUG:Connect fail to: tcp://localhost:61616/, reason:
System.InvalidCastException: Cannot cast from source type to destination type.
at
System.Collections.Generic.Dictionary`2+ValueCollection[Apache.NMS.ActiveMQ.Commands.SessionId,Apache.NMS.ActiveMQ.State.SessionState].System.Collections.ICollection.CopyTo
(System.Array array, Int32 index) [0x00000]
at System.Collections.ArrayList.InsertRange (Int32 index, ICollection c)
[0x00000]
at System.Collections.ArrayList.AddRange (ICollection c) [0x00000]
at System.Collections.ArrayList..ctor (ICollection c) [0x00000]
at
Apache.NMS.ActiveMQ.State.SynchronizedCollection`1[Apache.NMS.ActiveMQ.State.SessionState]..ctor
(ICollection c) [0x00000]
at
Apache.NMS.ActiveMQ.State.SynchronizedDictionary`2[Apache.NMS.ActiveMQ.Commands.SessionId,Apache.NMS.ActiveMQ.State.SessionState].get_Values
() [0x00000]
at Apache.NMS.ActiveMQ.State.ConnectionState.get_SessionStates () [0x00000]
at Apache.NMS.ActiveMQ.State.ConnectionStateTracker.DoRestoreSessions
(ITransport transport, Apache.NMS.ActiveMQ.State.ConnectionState
connectionState) [0x00000]
at Apache.NMS.ActiveMQ.State.ConnectionStateTracker.DoRestore (ITransport
transport) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.restoreTransport
(ITransport t) [0x00000]
at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect ()
[0x00000]
(...)
And this is permanent state.
> Infinit exception at reconnect on Mono with failover transport.
> ---------------------------------------------------------------
>
> Key: AMQNET-152
> URL: https://issues.apache.org/activemq/browse/AMQNET-152
> Project: ActiveMQ .Net
> Issue Type: Bug
> Components: ActiveMQ Client
> Environment: Mono 1.9.1 framework on both Windows/Linux system.
> Reporter: Tomasz Wiczling
> Assignee: Jim Gomes
>
> I'm testing failover transport on Mono.
> I've downloaded latest revision of ActiveMQ .Net project (rev. 752559).
> I've made tests on:
> - both Windows and Linux
> - Mono 1.9.1 and Mono 2.0
> - ActiveMQ 5.1 and ActiveMQ 5.2
> All test ended with an exception.
> I wrote simple program that was listening on topic.
> namespace IssueExample
> {
> internal class ConsoleTracer : ITrace
> {
> public bool IsDebugEnabled { get { return true; } }
> public bool IsInfoEnabled { get { return true; } }
> public bool IsWarnEnabled { get { return true; } }
> public bool IsErrorEnabled { get { return true; } }
> public bool IsFatalEnabled { get { return true; } }
> public void Debug(string message) {
> Console.WriteLine("DEBUG:" + message); }
> public void Info(string message) { Console.WriteLine("INFO:"
> + message); }
> public void Warn(string message) { Console.WriteLine("WARN:"
> + message); }
> public void Error(string message) {
> Console.WriteLine("ERROR:" + message); }
> public void Fatal(string message) {
> Console.WriteLine("FATAL:" + message); }
> }
> class Program
> {
> public static void Main(string[] args)
> {
> if (args.Length < 2)
> {
> Console.WriteLine("USAGE: IssueExample
> <AMQURI> <TOPIC_NAME>");
> return;
> }
> Tracer.Trace = new ConsoleTracer();
> IConnectionFactory factory = new
> ConnectionFactory(args[0]);
> IConnection connection = factory.CreateConnection();
> ISession session = connection.CreateSession();
> IDestination destination = session.GetTopic(args[1]);
> IMessageConsumer consumer =
> session.CreateConsumer(destination);
> consumer.Listener += onMessage;
> connection.Start();
> Console.WriteLine("Successfully connected to Topic '"
> + args[1] + "' on '" + args[0] + "' - waiting Any Key to be pressed");
> Console.ReadKey();
> consumer.Close();
> connection.Dispose();
> Console.WriteLine("Connected and Disconnected
> successfully toTopic '" + args[1] + "' on '" + args[0] + "' - Press any key
> to terminate program.");
> Console.ReadKey();
> }
> private static void onMessage(IMessage msg)
> {
> Console.WriteLine("\tRECEIVING: " + msg);
> }
> }
> }
> The test was made with execution:
> # mono IssueExample.exe failover:(tcp://localhost:61616) test.topic
> Program works fine till the test of reconnection.
> While the program is running I restart the AMQ server.
> For a while I get loop of:
> (...)
> DEBUG:Waiting 1280 ms before attempting connection.
> DEBUG:Attempting connect to: tcp://localhost:61616/
> DEBUG:Opening socket to: localhost on port: 61616
> DEBUG:Connect fail to: tcp://localhost:61616/, reason:
> System.Net.Sockets.SocketException: Connection refused
> at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remote_end)
> [0x00000]
> at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.Connect
> (System.String host, Int32 port) [0x00000]
> at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransportFactory.CompositeConnect
> (System.Uri location) [0x00000]
> at Apache.NMS.ActiveMQ.Transport.TransportFactory.CompositeConnect
> (System.Uri location) [0x00000]
> at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect ()
> [0x00000]
> (...)
> And it is OK, but ...
> When server resumes work, I get:
> (...)
> DEBUG:Waiting 20480 ms before attempting connection.
> DEBUG:Parsing type: 2 with:
> Apache.NMS.ActiveMQ.OpenWire.V2.BrokerInfoMarshaller
> DEBUG:Parsing type: 30 with:
> Apache.NMS.ActiveMQ.OpenWire.V2.ResponseMarshaller
> ERROR:Unknown response ID: 0 for response: Response[ CorrelationId=1 ]
> DEBUG:Parsing type: 10 with:
> Apache.NMS.ActiveMQ.OpenWire.V2.KeepAliveInfoMarshaller
> INFO:Keep alive message received.
> INFO:Waiting for transport to reconnect.
> DEBUG:Attempting connect to: tcp://localhost:61616/
> DEBUG:Opening socket to: localhost on port: 61616
> DEBUG:Parsing type: 1 with:
> Apache.NMS.ActiveMQ.OpenWire.V1.WireFormatInfoMarshaller
> DEBUG:Connect fail to: tcp://localhost:61616/, reason:
> System.InvalidCastException: Cannot cast from source type to destination type.
> at
> System.Collections.Generic.Dictionary`2+ValueCollection[Apache.NMS.ActiveMQ.Commands.SessionId,Apache.NMS.ActiveMQ.State.SessionState].System.Collections.ICollection.CopyTo
> (System.Array array, Int32 index) [0x00000]
> at System.Collections.ArrayList.InsertRange (Int32 index, ICollection c)
> [0x00000]
> at System.Collections.ArrayList.AddRange (ICollection c) [0x00000]
> at System.Collections.ArrayList..ctor (ICollection c) [0x00000]
> at
> Apache.NMS.ActiveMQ.State.SynchronizedCollection`1[Apache.NMS.ActiveMQ.State.SessionState]..ctor
> (ICollection c) [0x00000]
> at
> Apache.NMS.ActiveMQ.State.SynchronizedDictionary`2[Apache.NMS.ActiveMQ.Commands.SessionId,Apache.NMS.ActiveMQ.State.SessionState].get_Values
> () [0x00000]
> at Apache.NMS.ActiveMQ.State.ConnectionState.get_SessionStates () [0x00000]
> at Apache.NMS.ActiveMQ.State.ConnectionStateTracker.DoRestoreSessions
> (ITransport transport, Apache.NMS.ActiveMQ.State.ConnectionState
> connectionState) [0x00000]
> at Apache.NMS.ActiveMQ.State.ConnectionStateTracker.DoRestore (ITransport
> transport) [0x00000]
> at
> Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.restoreTransport
> (ITransport t) [0x00000]
> at Apache.NMS.ActiveMQ.Transport.Failover.FailoverTransport.doReconnect ()
> [0x00000]
> (...)
> And this is permanent state.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.