You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Arno Noordover (JIRA)" <ji...@apache.org> on 2017/02/06 10:41:41 UTC

[jira] [Commented] (CAMEL-10756) Mina2 Producer "hang" until timeout if the response message could not be decoded

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

Arno Noordover commented on CAMEL-10756:
----------------------------------------

CAMEL-10024 was introduced to take care of the fact that producers were returned to the pool with an active CloseFuture.
When you reusing this producer the CloseFuture closed the session that was being used.
The Producer should wait for the handler to close the session.
I think the "exceptionCaught" method should not use the same closeSessionIfNeededAndAwaitCloseInHandler (because this method is already inside the handler).
awaiting the CloseFuture should be sufficient (I think/hope).
B.t.w. maybe the session should only be closed based on the "disconnect" setting.

> Mina2 Producer "hang" until timeout if the response message could not be decoded
> --------------------------------------------------------------------------------
>
>                 Key: CAMEL-10756
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10756
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-mina2
>    Affects Versions: 2.18.1
>            Reporter: Thomas Papke
>         Attachments: camel_mina2.patch
>
>
> I have tried to upgrade from camel 2.16 to 2.18 and run into an issue with camel-mina2. It looks like CAMEL-10024 has maybe introduced this issue.
> *The scenario which fail:*
> A Mina2 producer send a request to a server, the server provide a response which could not be interpreted/decoded by a custom codec on the producer side (e.g. due to invalid encoding).
> *Expected behavior:*
> * The Exception from the decoder on the producer side will be directly propogated to the caller. The mina2 session will be closed.
> *Current behavior:*
> * Instead of the exception from the decoder, the producer wait until the timeout is reached and the caller get a timeout exception after the timeout is reached.
> *First analysis:*
> I have attached a patch for the camel-mina2 module which contain a test {{org.apache.camel.component.mina2.Mina2CustomCodecTest.testProducerFailInDecodingResponse()}} to reproduce this issue. 
> *If i revert the changes done within CAMEL-10024, the test run correct.* If I debug into the new code, i see that the producer "hang" in {{Mina2Producer.closeSessionIfNeededAndAwaitCloseInHandler(IoSession)}} -- {{closeLatch.await(timeout, TimeUnit.MILLISECONDS);}} which was introduced with CAML-10024.
> I could not yet provide a fix as well, since I don't really understand the details of CAMEL-10024. But hopefully my testcase helps to fix this issue.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)