diff options
author | Arne H Juul <arnej@yahoo-inc.com> | 2017-01-12 13:14:41 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahoo-inc.com> | 2017-01-12 13:41:07 +0000 |
commit | 636b8de120c40124f086ec5a130ac55ceba87b0a (patch) | |
tree | b08fb2e82735cb93bbea643b7c1693b4d25e1b8f /vespaclient-core | |
parent | d433b1cd3fdad87f4fab647eeb7e564159ab768d (diff) |
add back waiting on shutdown()
* add a global pending replies counter
* wait for all outstanding replies on shutdown
Diffstat (limited to 'vespaclient-core')
-rwxr-xr-x | vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java | 8 |
1 files changed, 7 insertions, 1 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 a29693aee1c..6d089abf0b4 100755 --- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java +++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java @@ -24,6 +24,7 @@ public class SharedSender implements ReplyHandler { private SendSession sender; private RouteMetricSet metrics; + private Pending globalPending = new Pending(); /** * Creates a new shared sender. @@ -46,7 +47,10 @@ public class SharedSender implements ReplyHandler { } public void shutdown() { - // XXX may need to wait here? + try { + globalPending.waitForZero(); + } catch (InterruptedException e) { + } sender.close(); } @@ -116,6 +120,7 @@ public class SharedSender implements ReplyHandler { msg.setContext(owner); owner.getPending().inc(); + globalPending.inc(); try { com.yahoo.messagebus.Result r = sender.send(msg, blockingQueue); @@ -138,6 +143,7 @@ public class SharedSender implements ReplyHandler { */ @Override public void handleReply(Reply r) { + globalPending.dec(); ResultCallback owner = (ResultCallback) r.getContext(); if (owner != null) { |