[
https://issues.apache.org/jira/browse/THRIFT-945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12918545#action_12918545
]
Bryan Duxbury commented on THRIFT-945:
--------------------------------------
With this patch, the error message will be improved, but it's still not OK to
try to make another method call before the first one is complete.
> 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.