java.io.EOFException

Apache's JIRA Issue Tracker | Jacob Burkhart | 9 years ago
  1. 0

    This is a reproducible case of a DEAD Consumer that never gets cleaned up. I am using telnet to manually test STOMP message consumption. First I put a message into the queue I then connect and subscribe to that queue and get the message: CONNECT login: test passcode: test ^@ CONNECTED session:ID:jacob-64807-1188509209664-4:3 SUBSCRIBE destination: /queue/Prescriptions ack: client ^@ This works and I receive the queued messages. They remain in the Q because I am not send ACK If I use the DISCONNECT command. I am properly disconnected and I can repeat this process to get the same message again. Good. If I disconnect by killing the telnet process I see the following stack trace in MQ. AND I can still repeat the same process of re-retrieving the un-acknowledged messages: DEBUG Transport - Transport failed: java.io.EOFException java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:243) at org.apache.activemq.transport.stomp.StompWireFormat.readLine(StompWireFormat.java:186) at org.apache.activemq.transport.stomp.StompWireFormat.unmarshal(StompWireFormat.java:94) at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:196) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:188) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:176) at java.lang.Thread.run(Thread.java:613) DEBUG TransportConnection - Stopping connection: /XXXXXXXXXXXXXX:4880 DEBUG TcpTransport - Stopping transport tcp:///XXXXXXXXXXXXXX:4880 DEBUG TransportConnection - Stopped connection: /XXXXXXXXXXXXXX:4880 DEBUG TransportConnection - Cleaning up connection resources: /XXXXXXXXXXXXXX:4880 DEBUG AMQPersistenceAdapter - Checkpoint started. DEBUG AMQPersistenceAdapter - Checkpoint done. HOWEVER, If I disconnect by repeatedly typing Control-C to close the telnet program I see the following stack trace: DEBUG Transport - Transport failed: org.apache.activemq.transport.stomp.ProtocolException: Unable to parser header line [????????????] org.apache.activemq.transport.stomp.ProtocolException: Unable to parser header line [????????????] at org.apache.activemq.transport.stomp.StompWireFormat.unmarshal(StompWireFormat.java:121) at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:196) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:188) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:176) at java.lang.Thread.run(Thread.java:613) DEBUG TransportConnection - Stopping connection: /XXXXXXXXXXXXXX:64820 DEBUG TcpTransport - Stopping transport tcp:///XXXXXXXXXXXXXX:64820 DEBUG AMQPersistenceAdapter - Checkpoint started. DEBUG AMQPersistenceAdapter - Checkpoint done. AND, I am no longer able to retrieve the queued up messages. Looking at the admin console I see Number Of Consumers = 1, leading me to believe that ActiveMQ didn't properly handle the disconnection. In the other 2 cases (DISCONNECT and kill) the "Number Of Consumers" drops to zero on connection termination. I believe the correct behavior should be to properly handle and clean-up the connection on bad data. Or perhaps periodically check each of the supposed "Consumers" to make sure that they are still alive. This is clearly a reproducible case of a DEAD Consumer that never gets cleaned up. Comparing the DEBUG output the follows the 2 stack traces, it is clear in the second case that ActiveMQ fails to clean up the connections resources for the unexpectedly disconnected consumer.

    Apache's JIRA Issue Tracker | 9 years ago | Jacob Burkhart
    java.io.EOFException
  2. 0

    ActiveMQ in failover with PHP/Stomp client

    Stack Overflow | 2 years ago | chilladx
    java.io.EOFException
  3. Speed up your debug routine!

    Automated exception search integrated into your IDE

  4. 0

    RMI- client don't work

    Oracle Community | 1 decade ago | 843793
    java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: java.io.EOFException

  1. Aria Pahlavan 25 times, last 2 weeks ago
  2. poroszd 4 times, last 3 months ago
9 unregistered visitors
Not finding the right solution?
Take a tour to get the most out of Samebug.

Tired of useless tips?

Automated exception search integrated into your IDE

Root Cause Analysis

  1. java.io.EOFException

    No message provided

    at java.io.DataInputStream.readByte()
  2. Java RT
    DataInputStream.readByte
    1. java.io.DataInputStream.readByte(DataInputStream.java:243)
    1 frame
  3. ActiveMQ :: Core
    TcpTransport.run
    1. org.apache.activemq.transport.stomp.StompWireFormat.readLine(StompWireFormat.java:186)
    2. org.apache.activemq.transport.stomp.StompWireFormat.unmarshal(StompWireFormat.java:94)
    3. org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:210)
    4. org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:202)
    5. org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
    5 frames
  4. Java RT
    Thread.run
    1. java.lang.Thread.run(Thread.java:595)
    1 frame