You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ki...@apache.org on 2013/11/20 22:12:26 UTC
[11/52] [abbrv] git commit: [HELIX-290] Prefer ideal state for 0.7.0
rebalancer if not user defined, rb=15381
[HELIX-290] Prefer ideal state for 0.7.0 rebalancer if not user defined, rb=15381
Project: http://git-wip-us.apache.org/repos/asf/incubator-helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-helix/commit/0cb37755
Tree: http://git-wip-us.apache.org/repos/asf/incubator-helix/tree/0cb37755
Diff: http://git-wip-us.apache.org/repos/asf/incubator-helix/diff/0cb37755
Branch: refs/heads/helix-yarn
Commit: 0cb3775564cb53c4129b9afcaecc0876a33a120f
Parents: ea8c61d
Author: Kanak Biscuitwala <ka...@apache.org>
Authored: Fri Nov 8 16:03:24 2013 -0800
Committer: Kanak Biscuitwala <ka...@apache.org>
Committed: Mon Nov 11 14:09:17 2013 -0800
----------------------------------------------------------------------
.../helix/api/accessor/ResourceAccessor.java | 8 ++++--
.../context/CustomRebalancerContext.java | 3 +-
.../context/FullAutoRebalancerContext.java | 3 +-
.../context/PartitionedRebalancerContext.java | 30 ++++++++++++++++----
.../context/SemiAutoRebalancerContext.java | 8 +++---
5 files changed, 38 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/0cb37755/helix-core/src/main/java/org/apache/helix/api/accessor/ResourceAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/api/accessor/ResourceAccessor.java b/helix-core/src/main/java/org/apache/helix/api/accessor/ResourceAccessor.java
index 0dfceca..e5ac57c 100644
--- a/helix-core/src/main/java/org/apache/helix/api/accessor/ResourceAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/api/accessor/ResourceAccessor.java
@@ -436,12 +436,14 @@ public class ResourceAccessor {
int bucketSize = 0;
boolean batchMessageMode = false;
if (idealState != null) {
- if (resourceConfiguration != null) {
+ if (resourceConfiguration != null
+ && idealState.getRebalanceMode() != RebalanceMode.USER_DEFINED) {
+ // prefer rebalancer context for non-user_defined data rebalancing
rebalancerContext =
resourceConfiguration.getRebalancerContext(PartitionedRebalancerContext.class);
}
if (rebalancerContext == null) {
- // fallback: get rebalancer context from ideal state
+ // prefer ideal state for non-user_defined data rebalancing
rebalancerContext = PartitionedRebalancerContext.from(idealState);
}
bucketSize = idealState.getBucketSize();
@@ -454,7 +456,7 @@ public class ResourceAccessor {
rebalancerContext = rebalancerConfig.getRebalancerContext(RebalancerContext.class);
}
if (rebalancerContext == null) {
- rebalancerContext = new PartitionedRebalancerContext(RebalanceMode.NONE);
+ rebalancerContext = new PartitionedRebalancerContext();
}
return new Resource(resourceId, type, idealState, resourceAssignment, externalView,
rebalancerContext, userConfig, bucketSize, batchMessageMode);
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/0cb37755/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/CustomRebalancerContext.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/CustomRebalancerContext.java b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/CustomRebalancerContext.java
index 1fc1cda..0d2c1f2 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/CustomRebalancerContext.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/CustomRebalancerContext.java
@@ -53,7 +53,7 @@ public class CustomRebalancerContext extends PartitionedRebalancerContext {
* Instantiate a CustomRebalancerContext
*/
public CustomRebalancerContext() {
- super(RebalanceMode.CUSTOMIZED);
+ setRebalanceMode(RebalanceMode.CUSTOMIZED);
setRebalancerRef(RebalancerRef.from(CustomRebalancer.class));
_preferenceMaps = Maps.newHashMap();
}
@@ -133,6 +133,7 @@ public class CustomRebalancerContext extends PartitionedRebalancerContext {
public Builder(ResourceId resourceId) {
super(resourceId);
super.rebalancerRef(RebalancerRef.from(CustomRebalancer.class));
+ super.rebalanceMode(RebalanceMode.CUSTOMIZED);
_preferenceMaps = Maps.newHashMap();
}
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/0cb37755/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/FullAutoRebalancerContext.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/FullAutoRebalancerContext.java b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/FullAutoRebalancerContext.java
index 2db9ac6..2400707 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/FullAutoRebalancerContext.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/FullAutoRebalancerContext.java
@@ -30,7 +30,7 @@ import org.apache.helix.model.IdealState.RebalanceMode;
*/
public class FullAutoRebalancerContext extends PartitionedRebalancerContext {
public FullAutoRebalancerContext() {
- super(RebalanceMode.FULL_AUTO);
+ setRebalanceMode(RebalanceMode.FULL_AUTO);
setRebalancerRef(RebalancerRef.from(FullAutoRebalancer.class));
}
@@ -46,6 +46,7 @@ public class FullAutoRebalancerContext extends PartitionedRebalancerContext {
public Builder(ResourceId resourceId) {
super(resourceId);
super.rebalancerRef(RebalancerRef.from(FullAutoRebalancer.class));
+ super.rebalanceMode(RebalanceMode.FULL_AUTO);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/0cb37755/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/PartitionedRebalancerContext.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/PartitionedRebalancerContext.java b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/PartitionedRebalancerContext.java
index 9d24e68..15fcf9c 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/PartitionedRebalancerContext.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/PartitionedRebalancerContext.java
@@ -49,17 +49,17 @@ public class PartitionedRebalancerContext extends BasicRebalancerContext impleme
private boolean _anyLiveParticipant;
private int _replicaCount;
private int _maxPartitionsPerParticipant;
- private final RebalanceMode _rebalanceMode;
+ private RebalanceMode _rebalanceMode;
/**
* Instantiate a DataRebalancerContext
*/
- public PartitionedRebalancerContext(RebalanceMode rebalanceMode) {
+ public PartitionedRebalancerContext() {
_partitionMap = Collections.emptyMap();
_replicaCount = 1;
_anyLiveParticipant = false;
_maxPartitionsPerParticipant = Integer.MAX_VALUE;
- _rebalanceMode = rebalanceMode;
+ _rebalanceMode = RebalanceMode.USER_DEFINED;
}
/**
@@ -140,6 +140,14 @@ public class PartitionedRebalancerContext extends BasicRebalancerContext impleme
}
/**
+ * Set the rebalancer mode of the partitioned resource
+ * @param rebalanceMode {@link RebalanceMode} enum value
+ */
+ public void setRebalanceMode(RebalanceMode rebalanceMode) {
+ _rebalanceMode = rebalanceMode;
+ }
+
+ /**
* Get the rebalancer mode of the resource
* @return RebalanceMode
*/
@@ -258,8 +266,7 @@ public class PartitionedRebalancerContext extends BasicRebalancerContext impleme
@Override
public PartitionedRebalancerContext build() {
- PartitionedRebalancerContext context =
- new PartitionedRebalancerContext(RebalanceMode.USER_DEFINED);
+ PartitionedRebalancerContext context = new PartitionedRebalancerContext();
super.update(context);
return context;
}
@@ -272,6 +279,7 @@ public class PartitionedRebalancerContext extends BasicRebalancerContext impleme
extends BasicRebalancerContext.AbstractBuilder<T> {
private final ResourceId _resourceId;
private final Map<PartitionId, Partition> _partitionMap;
+ private RebalanceMode _rebalanceMode;
private boolean _anyLiveParticipant;
private int _replicaCount;
private int _maxPartitionsPerParticipant;
@@ -284,12 +292,23 @@ public class PartitionedRebalancerContext extends BasicRebalancerContext impleme
super(resourceId);
_resourceId = resourceId;
_partitionMap = Maps.newHashMap();
+ _rebalanceMode = RebalanceMode.USER_DEFINED;
_anyLiveParticipant = false;
_replicaCount = 1;
_maxPartitionsPerParticipant = Integer.MAX_VALUE;
}
/**
+ * Set the rebalance mode for a partitioned rebalancer context
+ * @param rebalanceMode {@link RebalanceMode} enum value
+ * @return Builder
+ */
+ public T rebalanceMode(RebalanceMode rebalanceMode) {
+ _rebalanceMode = rebalanceMode;
+ return self();
+ }
+
+ /**
* Add a partition that the resource serves
* @param partition fully-qualified partition
* @return Builder
@@ -364,6 +383,7 @@ public class PartitionedRebalancerContext extends BasicRebalancerContext impleme
if (_partitionMap.isEmpty()) {
addPartitions(1);
}
+ context.setRebalanceMode(_rebalanceMode);
context.setPartitionMap(_partitionMap);
context.setAnyLiveParticipant(_anyLiveParticipant);
context.setMaxPartitionsPerParticipant(_maxPartitionsPerParticipant);
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/0cb37755/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/SemiAutoRebalancerContext.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/SemiAutoRebalancerContext.java b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/SemiAutoRebalancerContext.java
index f574a62..afa81e2 100644
--- a/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/SemiAutoRebalancerContext.java
+++ b/helix-core/src/main/java/org/apache/helix/controller/rebalancer/context/SemiAutoRebalancerContext.java
@@ -56,7 +56,7 @@ public final class SemiAutoRebalancerContext extends PartitionedRebalancerContex
* Instantiate a SemiAutoRebalancerContext
*/
public SemiAutoRebalancerContext() {
- super(RebalanceMode.SEMI_AUTO);
+ setRebalanceMode(RebalanceMode.SEMI_AUTO);
setRebalancerRef(RebalancerRef.from(SemiAutoRebalancer.class));
_preferenceLists = Maps.newHashMap();
}
@@ -110,9 +110,8 @@ public final class SemiAutoRebalancerContext extends PartitionedRebalancerContex
Set<ParticipantId> disabledParticipants = Collections.emptySet();
Map<ParticipantId, State> emptyCurrentState = Collections.emptyMap();
Map<ParticipantId, State> initialMap =
- ConstraintBasedAssignment.computeAutoBestStateForPartition(upperBounds,
- participantSet, stateModelDef, preferenceList, emptyCurrentState,
- disabledParticipants);
+ ConstraintBasedAssignment.computeAutoBestStateForPartition(upperBounds, participantSet,
+ stateModelDef, preferenceList, emptyCurrentState, disabledParticipants);
currentMapping.put(partitionId, initialMap);
}
}
@@ -148,6 +147,7 @@ public final class SemiAutoRebalancerContext extends PartitionedRebalancerContex
public Builder(ResourceId resourceId) {
super(resourceId);
super.rebalancerRef(RebalancerRef.from(SemiAutoRebalancer.class));
+ super.rebalanceMode(RebalanceMode.SEMI_AUTO);
_preferenceLists = Maps.newHashMap();
}