Vadim Spivak created THRIFT-2108:
------------------------------------

             Summary: Fix TAsyncClientManager timeout race
                 Key: THRIFT-2108
                 URL: https://issues.apache.org/jira/browse/THRIFT-2108
             Project: Thrift
          Issue Type: Bug
          Components: Java - Library
    Affects Versions: 0.9
            Reporter: Vadim Spivak


TAsyncClientManager uses a TreeSet(timeoutWatchSet) for managing timeouts with 
a comparator based on the timeout timestamp. However, this timestamp can be 
mutated externally by changing the client timeout before TAsyncClientManager 
tries to remove (and fails) the TAsyncMethodCall from the timeout set. 

Failing to delete the TAsyncMethodCall from the timeoutWatchSet will break some 
timeouts and cause some callbacks to fire twice, once with onComplete and a 
second time with onError. 

The common use case when this happens is if you want to issue a new request 
with a different timeout to the same client inside an onComplete callback. 



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to