summaryrefslogtreecommitdiffstats
path: root/vespaclient-core
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-09 15:40:31 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-09 15:40:31 +0100
commit91d2b115be0dc28c26c47e5331bdaea01cc3abd3 (patch)
tree7a5d9e31958dac4da731983798a417d39fc1e228 /vespaclient-core
parentcde0f02e254846f0020fb2c605814bbe049b1c3d (diff)
Guarantee that numPending will be 0 at least and at most once.
Diffstat (limited to 'vespaclient-core')
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
index 67581438956..4c96a7efc0b 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
@@ -191,15 +191,18 @@ public class SharedSender implements ReplyHandler {
return;
}
- boolean active = owner.handleReply(r, state.getNumPending() - 1);
+ int numPending = state.getNumPending() - 1;
+ boolean noMorePending = state.decPending(1);
+ if (noMorePending) {
+ numPending = 0;
+ }
+ boolean active = owner.handleReply(r, numPending);
if (log.isLoggable(LogLevel.SPAM)) {
log.log(LogLevel.SPAM, "Received reply for file " + owner.toString() + ", count was " + state.getNumPending());
}
if (!active) {
state.clearPending();
activeOwners.remove(owner);
- } else {
- state.decPending(1);
}
}
@@ -241,8 +244,8 @@ public class SharedSender implements ReplyHandler {
sync.releaseShared(-count);
}
- void decPending(int count) {
- sync.releaseShared(count);
+ boolean decPending(int count) {
+ return sync.releaseShared(count);
}
void waitMaxPendingBelow(int limit) {