From 4e84fb5f036366f1770980ae504a223fb251d01b Mon Sep 17 00:00:00 2001 From: fjy Date: Tue, 16 Jul 2013 16:50:52 -0700 Subject: [PATCH] better logic for exiting load rule assign if replicants cannot be created --- .../metamx/druid/master/rules/LoadRule.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/com/metamx/druid/master/rules/LoadRule.java b/server/src/main/java/com/metamx/druid/master/rules/LoadRule.java index 9677b5028bc..3c6c58593e7 100644 --- a/server/src/main/java/com/metamx/druid/master/rules/LoadRule.java +++ b/server/src/main/java/com/metamx/druid/master/rules/LoadRule.java @@ -92,6 +92,12 @@ public abstract class LoadRule implements Rule final MasterStats stats = new MasterStats(); while (totalReplicants < expectedReplicants) { + boolean replicate = totalReplicants > 0; + + if (replicate && !replicationManager.canAddReplicant(getTier())) { + break; + } + final ServerHolder holder = analyzer.findNewSegmentHomeAssign(segment, serverHolderList); if (holder == null) { @@ -104,15 +110,10 @@ public abstract class LoadRule implements Rule break; } - if (totalReplicants > 0) { // don't throttle if there's only 1 copy of this segment in the cluster - if (!replicationManager.canAddReplicant(getTier()) || - !replicationManager.registerReplicantCreation( - getTier(), - segment.getIdentifier(), - holder.getServer().getHost() - )) { - break; - } + if (replicate && !replicationManager.registerReplicantCreation( + getTier(), segment.getIdentifier(), holder.getServer().getHost() + )) { + break; } holder.getPeon().loadSegment(