You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ka...@apache.org on 2014/08/04 23:41:39 UTC

git commit: [HELIX-492] Task should be its own rebalance mode

Repository: helix
Updated Branches:
  refs/heads/master 593918880 -> dd8226b83


[HELIX-492] Task should be its own rebalance mode


Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/dd8226b8
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/dd8226b8
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/dd8226b8

Branch: refs/heads/master
Commit: dd8226b8365c59ab44aa49eec6fd116f757bfbd2
Parents: 5939188
Author: Kanak Biscuitwala <ka...@apache.org>
Authored: Mon Aug 4 14:41:28 2014 -0700
Committer: Kanak Biscuitwala <ka...@apache.org>
Committed: Mon Aug 4 14:41:28 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/helix/model/IdealState.java    | 17 ++++++++++++-----
 .../java/org/apache/helix/task/TaskDriver.java     |  2 +-
 2 files changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/dd8226b8/helix-core/src/main/java/org/apache/helix/model/IdealState.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/model/IdealState.java b/helix-core/src/main/java/org/apache/helix/model/IdealState.java
index b0347ef..e4c2612 100644
--- a/helix-core/src/main/java/org/apache/helix/model/IdealState.java
+++ b/helix-core/src/main/java/org/apache/helix/model/IdealState.java
@@ -45,6 +45,8 @@ import org.apache.helix.controller.rebalancer.FullAutoRebalancer;
 import org.apache.helix.controller.rebalancer.HelixRebalancer;
 import org.apache.helix.controller.rebalancer.RebalancerRef;
 import org.apache.helix.controller.rebalancer.SemiAutoRebalancer;
+import org.apache.helix.task.FixedTargetTaskRebalancer;
+import org.apache.helix.task.GenericTaskRebalancer;
 import org.apache.log4j.Logger;
 
 import com.google.common.base.Enums;
@@ -105,6 +107,7 @@ public class IdealState extends HelixProperty {
     SEMI_AUTO,
     CUSTOMIZED,
     USER_DEFINED,
+    TASK,
     NONE
   }
 
@@ -307,8 +310,8 @@ public class IdealState extends HelixProperty {
     case FULL_AUTO:
       return _record.getListFields().keySet();
     case CUSTOMIZED:
-      return _record.getMapFields().keySet();
     case USER_DEFINED:
+    case TASK:
       return _record.getMapFields().keySet();
     default:
       logger.error("Invalid ideal state mode:" + getResourceName());
@@ -395,7 +398,7 @@ public class IdealState extends HelixProperty {
         return Collections.emptySet();
       }
     } else if (rebalanceMode == RebalanceMode.CUSTOMIZED
-        || rebalanceMode == RebalanceMode.USER_DEFINED) {
+        || rebalanceMode == RebalanceMode.USER_DEFINED || rebalanceMode == RebalanceMode.TASK) {
       // get instances from map fields
       Map<String, String> stateMap = _record.getMapField(partitionName);
       if (stateMap != null) {
@@ -734,10 +737,14 @@ public class IdealState extends HelixProperty {
       property = RebalanceMode.CUSTOMIZED;
       break;
     default:
-      if (getRebalancerClassName() != null) {
-        property = RebalanceMode.USER_DEFINED;
-      } else {
+      String rebalancerName = getRebalancerClassName();
+      if (rebalancerName == null) {
         property = RebalanceMode.SEMI_AUTO;
+      } else if (rebalancerName.equals(FixedTargetTaskRebalancer.class.getName())
+          || rebalancerName.equals(GenericTaskRebalancer.class.getName())) {
+        property = RebalanceMode.TASK;
+      } else {
+        property = RebalanceMode.USER_DEFINED;
       }
       break;
     }

http://git-wip-us.apache.org/repos/asf/helix/blob/dd8226b8/helix-core/src/main/java/org/apache/helix/task/TaskDriver.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/task/TaskDriver.java b/helix-core/src/main/java/org/apache/helix/task/TaskDriver.java
index e4871b5..6f4cc24 100644
--- a/helix-core/src/main/java/org/apache/helix/task/TaskDriver.java
+++ b/helix-core/src/main/java/org/apache/helix/task/TaskDriver.java
@@ -190,7 +190,7 @@ public class TaskDriver {
 
     // Push out new ideal state based on number of target partitions
     CustomModeISBuilder builder = new CustomModeISBuilder(jobResource);
-    builder.setRebalancerMode(IdealState.RebalanceMode.USER_DEFINED);
+    builder.setRebalancerMode(IdealState.RebalanceMode.TASK);
     builder.setNumReplica(1);
     builder.setNumPartitions(numPartitions);
     builder.setStateModel(TaskConstants.STATE_MODEL_NAME);