Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-1547

Client always displays exception on Windows

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • M4
    • M4
    • JMS AMQP 0-x
    • None

    Description

      A java client running on Windows always displays the following exception when closing a JMS connection:
      org.apache.qpid.AMQException: socket closed
      at org.apache.qpid.client.AMQConnectionDelegate_0_10.closeConnection(AMQConnectionDelegate_0_10.java:188)
      at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:926)
      at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:893)
      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:880)
      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:873)
      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:868)
      at org.apache.qpid.example.jmsexample.direct.Producer.runTest(Producer.java:126)
      at org.apache.qpid.example.jmsexample.direct.Producer.main(Producer.java:63)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
      Caused by: org.apache.qpid.transport.ConnectionException: socket closed
      at org.apache.qpid.transport.Connection.close(Connection.java:487)
      at org.apache.qpid.transport.Connection.close(Connection.java:458)
      at org.apache.qpid.client.AMQConnectionDelegate_0_10.closeConnection(AMQConnectionDelegate_0_10.java:184)
      ... 12 more
      Caused by: org.apache.qpid.transport.ConnectionException: socket closed
      at org.apache.qpid.transport.Connection.exception(Connection.java:398)
      at org.apache.qpid.transport.network.Assembler.exception(Assembler.java:108)
      at org.apache.qpid.transport.network.InputHandler.exception(InputHandler.java:196)
      at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:136)
      Caused by: java.net.SocketException: socket closed
      at java.net.SocketInputStream.socketRead0(Native Method)
      at java.net.SocketInputStream.read(SocketInputStream.java:129)
      at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:111)
      Producer: Caught an Exception: javax.jms.JMSException: Error closing connection: org.apache.qpid.AMQException: socket closed
      javax.jms.JMSException: Error closing connection: org.apache.qpid.AMQException: socket closed
      at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:942)
      at org.apache.qpid.client.AMQConnection.doClose(AMQConnection.java:893)
      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:880)
      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:873)
      at org.apache.qpid.client.AMQConnection.close(AMQConnection.java:868)
      at org.apache.qpid.example.jmsexample.direct.Producer.runTest(Producer.java:126)
      at org.apache.qpid.example.jmsexample.direct.Producer.main(Producer.java:63)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

      This exception is displayed on windows because the socket is closed (see qpid-1251 for more details). I would suggest the following fix:

      add the following catch clause to method run() of class org.apache.qpid.transport.network.io.IoReceiver
      catch (SocketException se)
      {
      if( ! (se.getMessage().equalsIgnoreCase("socket closed") && closed.get()))

      { receiver.exception(se); }

      }

      This would swallow socket closed exception when the connection has previously been closed

      Attachments

        Activity

          People

            arnaudsimon Arnaud Simon
            arnaudsimon Arnaud Simon
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: