Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JMSException InterruptedIOException - the producer thread get interrupted

I am getting JMS Exception and it seems queue does not exit or it's not finishing the task.

Messages are asynchronous and it work fine most of the time but sometimes get below exception. It seems listener is keep listening at other side but at producer side got this exception.

javax.jms.JMSException: java.io.InterruptedIOException
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1266)
at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1350)
at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:495)
at com.vtech.mqservice.response.SendResponse.sendResponseToQueue(SendResponse.java:44)


Caused by: java.io.InterruptedIOException
at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:102)
at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:74)
at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:79)
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1244)
... 0 more

Please help me to identify what causes the producer thread to get interrupted.

I'll upgrade activemq version to latest and will update the findings.

Please point me in the right direction?

Update : ActiveMQ version being used is activemq-all-5.3.0.jar

like image 486
Santosh Avatar asked Aug 10 '15 19:08

Santosh


People also ask

What happens if the current thread has interrupted by another thread in ThreadInterruptedException ()?

In Java, an InterruptedException will be thrown if the thread is currently blocking. If the thread is not blocking, the exception will not be thrown. For . NET languages, a ThreadInterruptedException will be thrown if the thread is currently blocking.

What does thread currentThread () interrupt ()?

By calling Thread. currentThread(). interrupt() , you set the interrupt flag of the thread, so higher-level interrupt handlers will notice it and can handle it appropriately.

What causes interrupted exception?

Class InterruptedException. Thrown when a thread is waiting, sleeping, or otherwise occupied, and the thread is interrupted, either before or during the activity. Occasionally a method may wish to test whether the current thread has been interrupted, and if so, to immediately throw this exception.

What is InterruptedIOException in Java?

An InterruptedIOException is thrown to indicate that an input or output transfer has been terminated because the thread performing it was interrupted. The field bytesTransferred indicates how many bytes were successfully transferred before the interruption occurred.


1 Answers

I googled your exception got no precise answer, but then I went through the source code for WireFormatNegotiator of ActiveMQ.

You can find here, http://alvinalexander.com/java/jwarehouse/activemq/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java.shtml

public void oneway(Object command) throws IOException {
    try {
        if (!readyCountDownLatch.await(negotiateTimeout, TimeUnit.MILLISECONDS)) {
            throw new IOException("Wire format negotiation timeout: peer did not send his wire format.");
        }
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        throw new InterruptedIOException();
    }
    super.oneway(command);
}

I think your problem is somehow about "negotiateTimeout". Maybe you should set a certain amount of timeout or remove it if you put it before.

like image 176
Afsin Buyuksarac Avatar answered Nov 07 '22 03:11

Afsin Buyuksarac