TAsyncClient class's currentMethod is never used, 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


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