activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Frank Gynnild (Created) (JIRA)" <jira+amq...@apache.org>
Subject [jira] [Created] (AMQNET-350) Clients using the NMS library sometimes hijacks (binds) to the port that ActiveMQ is listening to
Date Wed, 16 Nov 2011 10:24:52 GMT
Clients using the NMS library sometimes hijacks (binds) to the port that ActiveMQ is listening
to
-------------------------------------------------------------------------------------------------

                 Key: AMQNET-350
                 URL: https://issues.apache.org/jira/browse/AMQNET-350
             Project: ActiveMQ .Net
          Issue Type: Bug
    Affects Versions: 1.5.1, 1.5.0, 1.5.2
            Reporter: Frank Gynnild
            Assignee: Jim Gomes


If we stop ActiveMQ service first, we've sometimes seen that various clients (using the NMS
library) binds to the same port as ActiveMQ uses for listening (61616).
This causes the ActiveMQ service to fail to start since its listening port is occupied.

Doing a "netstat -a -b" we can see the problem:
---
TCP [fe80::c591:4e66:8992:debb%11]:61616 Gelado:61616 ESTABLISHED
TestClient.exe]
---

When trying to start ActiveMQ we get this:
---
2011-11-16 10:27:38,223 | ERROR | Failed to start ActiveMQ JMS Message Broker. Reason: java.io.IOException:
Transport Connector could not be registered in JMX: Failed to bind to server socket: tcp://0.0.0.0:61616?keepAlive=true&wireFormat.tightEncodingEnabled=false&wireFormat.cacheEnabled=false&wireFormat.maxInactivityDuration=300000
due to: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind | org.apache.activemq.broker.BrokerService
| main
java.io.IOException: Transport Connector could not be registered in JMX: Failed to bind to
server socket: tcp://0.0.0.0:61616?keepAlive=true&wireFormat.tightEncodingEnabled=false&wireFormat.cacheEnabled=false&wireFormat.maxInactivityDuration=300000
due to: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:27)
at org.apache.activemq.broker.BrokerService.registerConnectorMBean(BrokerService.java:1678)
at org.apache.activemq.broker.BrokerService.startTransportConnector(BrokerService.java:2166)
at org.apache.activemq.broker.BrokerService.startAllConnectors(BrokerService.java:2082)
at org.apache.activemq.broker.BrokerService.start(BrokerService.java:516)
---

When exiting the client process, the ActiveMQ service is able to start up again.

I had a look at the source code, and I think the bug is inside the TcpTransportFactory.cs:
{code}
if(!String.IsNullOrEmpty(location.AbsolutePath) && !location.AbsolutePath.Equals("/"))
			{
				int index = location.AbsolutePath.IndexOf(':');
				try
				{
					localPort = Int16.Parse(location.AbsolutePath.Substring(index + 1));					
					localAddress = location.AbsolutePath.Substring(1, index - 1);
					Tracer.DebugFormat("Binding Socket to {0} on port: {1}", localAddress, localPort);
				}
				catch
				{
            		Tracer.Warn("Invalid Port value on URI for local bind option, ignoring.");
				}
			}

{code}

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