diff options
Diffstat (limited to 'messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java')
-rwxr-xr-x | messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java index e681f0834a8..04d9f4ade68 100755 --- a/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java @@ -95,17 +95,25 @@ public class RPCTargetPool { if (target != null) { return target; } - entry.close(); - targets.remove(key); + dropTarget(entry, key); } - RPCTarget [] tmpTargets = new RPCTarget[numTargetsPerSpec]; - for (int i=0; i < tmpTargets.length; i++) { - tmpTargets[i] = new RPCTarget(spec, orb); - } - entry = new Entry(tmpTargets, now); - targets.put(key, entry); - return entry.getTarget(now); + return createAndAddTarget(orb, spec, key, now); + } + } + + private void dropTarget(Entry entry, String key) { + entry.close(); + targets.remove(key); + } + + private RPCTarget createAndAddTarget(Supervisor orb, Spec spec, String key, long now) { + RPCTarget [] tmpTargets = new RPCTarget[numTargetsPerSpec]; + for (int i=0; i < tmpTargets.length; i++) { + tmpTargets[i] = new RPCTarget(spec, orb); } + Entry entry = new Entry(tmpTargets, now); + targets.put(key, entry); + return entry.getTarget(now); } |