qpid-proton mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Olivier Letellier (JIRA)" <j...@apache.org>
Subject [jira] [Created] (PROTON-530) MessengerImpl.processActive() do not rethrow IOException
Date Sat, 08 Mar 2014 11:06:42 GMT
Olivier Letellier created PROTON-530:

             Summary: MessengerImpl.processActive() do not rethrow IOException
                 Key: PROTON-530
                 URL: https://issues.apache.org/jira/browse/PROTON-530
             Project: Qpid Proton
          Issue Type: Bug
          Components: proton-j
    Affects Versions: 0.6
         Environment: JDK 7
            Reporter: Olivier Letellier

Test case :
A connection has been established successfully from Messenger in Proton-j, and the client
is waiting (possibly with a timeout) on recv().
Then the peer resets this connection.

Effect :
In MessengerImpl.processActive(), a IOException("Connection reset by peer") is raised and
catched. Until now everything is fine.
A log is emitted, but the exception is not re-thrown, not registered, and the method continues
to process other connections.

>From the client point of view :
 - if recv() has a positive timeout, a TimeoutException is raised, but the client cannot discriminate
it from a timeout when nothing is received on a well established session. My client, for example,
re-do a recv() , exits immediately with a TimeoutException, and then consumes 100% of the
CPU of the JVM.
 - if recv() is blocking (negative timeout), an infinite loop is happening inside waitUntil(),
then consuming 100% of CPU.

I would suggest to throw a new RuntimeException(IOException) after having done the log in
the catch clause.

This problem may be linked to PROTON-525 and PROTON-214.

This message was sent by Atlassian JIRA

View raw message