Skip to content

Commit

Permalink
FIX: Invalid isTimeout value when invoking isTimeout().
Browse files Browse the repository at this point in the history
  • Loading branch information
brido4125 committed Jan 23, 2024
1 parent 1aa7fa4 commit 6ad0f31
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/main/java/net/spy/memcached/internal/BulkGetFuture.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;

import net.spy.memcached.MemcachedConnection;
import net.spy.memcached.OperationTimeoutException;
Expand All @@ -44,7 +45,7 @@ public class BulkGetFuture<T> implements BulkFuture<Map<String, T>> {
private final Collection<Operation> ops;
private final CountDownLatch latch;
private final long timeout;
private boolean isTimeout = false;
private AtomicBoolean isTimeout = new AtomicBoolean(false);

public BulkGetFuture(Map<String, Future<T>> rvMap, Collection<Operation> ops,
CountDownLatch latch, Long timeout) {
Expand All @@ -61,6 +62,7 @@ public BulkGetFuture(BulkGetFuture<T> other) {
ops = other.ops;
latch = other.latch;
timeout = other.timeout;
isTimeout = other.isTimeout;
}

@Override
Expand All @@ -87,7 +89,7 @@ public Map<String, T> getSome(long duration, TimeUnit units)
Collection<Operation> timedoutOps = new HashSet<Operation>();
Map<String, T> ret = internalGet(duration, units, timedoutOps);
if (!timedoutOps.isEmpty()) {
isTimeout = true;
isTimeout.set(true);
LoggerFactory.getLogger(getClass()).warn(
new CheckedOperationTimeoutException(duration, units, timedoutOps).getMessage());
}
Expand All @@ -107,7 +109,7 @@ public Map<String, T> get(long duration, TimeUnit units)
Collection<Operation> timedoutOps = new HashSet<Operation>();
Map<String, T> ret = internalGet(duration, units, timedoutOps);
if (!timedoutOps.isEmpty()) {
isTimeout = true;
isTimeout.set(true);
throw new CheckedOperationTimeoutException(duration, units, timedoutOps);
}
return ret;
Expand Down Expand Up @@ -180,6 +182,6 @@ private Map<String, T> internalGet(long to, TimeUnit unit,
* @see net.spy.memcached.internal.BulkFuture#isTimeout()
*/
public boolean isTimeout() {
return isTimeout;
return isTimeout.get();
}
}

0 comments on commit 6ad0f31

Please sign in to comment.