You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Mikhail Kolesnikov (JIRA)" <ji...@apache.org> on 2018/11/29 16:36:00 UTC

[jira] [Commented] (AMQ-6600) cannot open connection to broker when JAR file is missing (and misleading error)

    [ https://issues.apache.org/jira/browse/AMQ-6600?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16703463#comment-16703463 ] 

Mikhail Kolesnikov commented on AMQ-6600:
-----------------------------------------

Such exception are very hard to reproduce... The root cause -- AMQ create separate thread for controling each of connection:
{code:java}
public abstract class TransportThreadSupport extends TransportSupport implements Runnable {
    private Thread runner;
    protected void doStart() throws Exception {
        runner = new Thread(null, this, "ActiveMQ Transport: " + toString(), stackSize);
{code}

In case of some problem with connection this thread try to set "closed" status for connection and some times it happens *after* the *close* method called on Session object from main thread.

Generally, such an exception means that connection is broken.

> cannot open connection to broker when JAR file is missing (and misleading error)
> --------------------------------------------------------------------------------
>
>                 Key: AMQ-6600
>                 URL: https://issues.apache.org/jira/browse/AMQ-6600
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, JMS client
>    Affects Versions: 5.14.3
>         Environment: Broker: Remote on Windows Server 2012 R2 (IP: 172.23.60.19)
> Client: local on Windows 7 (IP: 10.29.15.133)
>            Reporter: Daniel Held
>            Priority: Minor
>
> While trying to send a Message, I get an Error: Cannot send, channel has already failed. However, it seems that this happens already during establishing the connection (see Stacktrace).
> As this is an rather old project, we do not use Maven (yet). It seems that a jar File is missing: hawtbuf-1.11.jar. Because i got no Classloading problems, i did not check this first. However, I wonder why it is not possible here to include some better error Message?
> Stacktrace on Client is as follows:
> javax.jms.JMSException: Cannot send, channel has already failed: tcp://172.23.60.19:61616
> 	at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72)
> 	at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1413)
> 	at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1478)
> 	at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:329)
> 	at org.apache.activemq.ActiveMQConnection.createQueueSession(ActiveMQConnection.java:1275)
> 	at (my code follows)
> (and further down the Stacktrace:)
> Caused by: org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed: tcp://172.23.60.19:61616
> 	at org.apache.activemq.transport.AbstractInactivityMonitor.doOnewaySend(AbstractInactivityMonitor.java:328)
> 	at org.apache.activemq.transport.AbstractInactivityMonitor.oneway(AbstractInactivityMonitor.java:317)
> 	at org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:94)
> 	at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:116)
> 	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
> 	at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
> 	at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
> 	at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1388)
> The Server Log has the following Entry:
> WARN  | Transport Connection to: tcp://10.29.15.133:56578 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///10.29.15.133:56578@61616
> What I'm doing here is:
> QueueConnectionFactory qcf = (some Spring Bean)
> QueueConnection qc  = qcf.createQueueConnection();
> QueueSession qs  = qc.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)