From 194f0114c27f6a41c96be6d5702895bf5c1519e3 Mon Sep 17 00:00:00 2001 From: Roger Meier Date: Wed, 22 Jan 2014 00:10:31 +0100 Subject: [PATCH] THRIFT-2108 java: Fix TAsyncClientManager timeout race Patch: Vadim Spivak --- .../src/org/apache/thrift/async/TAsyncMethodCall.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java b/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java index fcd50ea0..5c679b62 100644 --- a/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java +++ b/lib/java/src/org/apache/thrift/async/TAsyncMethodCall.java @@ -65,7 +65,8 @@ public abstract class TAsyncMethodCall { private final AsyncMethodCallback callback; private final boolean isOneway; private long sequenceId; - + private final long timeout; + private ByteBuffer sizeBuffer; private final byte[] sizeBufferArray = new byte[4]; private ByteBuffer frameBuffer; @@ -79,6 +80,7 @@ public abstract class TAsyncMethodCall { this.client = client; this.isOneway = isOneway; this.sequenceId = TAsyncMethodCall.sequenceIdCounter.getAndIncrement(); + this.timeout = client.getTimeout(); } protected State getState() { @@ -102,11 +104,11 @@ public abstract class TAsyncMethodCall { } public boolean hasTimeout() { - return client.hasTimeout(); + return timeout > 0; } public long getTimeoutTimestamp() { - return client.getTimeout() + startTime; + return timeout + startTime; } protected abstract void write_args(TProtocol protocol) throws TException; -- 2.17.1