[ 
https://issues.apache.org/jira/browse/THRIFT-945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12918345#action_12918345
 ] 

Eric Jensen commented on THRIFT-945:
------------------------------------

oh, the title of this ticket confused me.  the bug we are really fixing is that 
it fails with the wrong, uninformative, message if you try to make a concurrent 
call.  do we really intend for these to not be reusable?  i think the only 
problem we should protect against is using them for two concurrent calls as 
opposed to making them non-reusable.  ning?

> TAsyncClient class's currentMethod is never set, hence a second call on the 
> same client will fail if a previous call is ongoing.
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-945
>                 URL: https://issues.apache.org/jira/browse/THRIFT-945
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Library
>    Affects Versions: 0.4
>            Reporter: Zhenlei Cai
>            Assignee: Bryan Duxbury
>         Attachments: thrift-945.patch
>
>
> TAsyncClient has this check:
>   protected void checkReady() {
>     // Ensure we are not currently executing a method
>     if (currentMethod != null) {
>       throw new IllegalStateException("Client is currently executing another 
> method: " + currentMethod.getClass().getName());
>     }
> However currentMethod is not being set anywhere. 
> In my code I have a TAsyncClient  and  method calls made on it are not 
> necessarily serialized (one starts after previous finishes), so interleaving 
> calls will fail with mysterious messages such as:
> java.lang.IllegalArgumentException
>       at java.nio.ByteBuffer.allocate(ByteBuffer.java:311)
>       at 
> org.apache.thrift.async.TAsyncMethodCall.doReadingResponseSize(TAsyncMethodCall.java:175)
>       at 
> org.apache.thrift.async.TAsyncMethodCall.transition(TAsyncMethodCall.java:128)
>       at 
> org.apache.thrift.async.TAsyncClientManager$SelectThread.run(TAsyncClientManager.java:99)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to