diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-09 15:40:31 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-09 15:40:31 +0100 |
commit | 91d2b115be0dc28c26c47e5331bdaea01cc3abd3 (patch) | |
tree | 7a5d9e31958dac4da731983798a417d39fc1e228 /vespaclient-core | |
parent | cde0f02e254846f0020fb2c605814bbe049b1c3d (diff) |
Guarantee that numPending will be 0 at least and at most once.
Diffstat (limited to 'vespaclient-core')
-rwxr-xr-x | vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java | 13 |
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) { |