summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmessagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCTargetPool.java26
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);
}