atom feed1 message in org.apache.helix.commitshelix git commit: Make more user frie...
FromSent OnAttachments
lx...@apache.orgMar 30, 2017 3:57 pm 
Subject:helix git commit: Make more user friendly API change
From:lx...@apache.org (lx@apache.org)
Date:Mar 30, 2017 3:57:41 pm
List:org.apache.helix.commits

Repository: helix Updated Branches: refs/heads/helix-0.6.x c9216c48e -> 7038c78eb

Make more user friendly API change

Current API provide a map that returns resource to disabled partitions that
combined in one String. Change to return a map that returns resource to list of
disabled partitions.

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

Branch: refs/heads/helix-0.6.x Commit: 7038c78eb5737f706621265bbba6a3bfe09c081f Parents: c9216c4 Author: Junkai Xue <jx@linkedin.com> Authored: Thu Mar 30 15:45:26 2017 -0700 Committer: Junkai Xue <jx@linkedin.com> Committed: Thu Mar 30 15:50:36 2017 -0700

---------------------------------------------------------------------- .../controller/stages/ReadClusterDataStage.java | 2 +- .../org/apache/helix/model/InstanceConfig.java | 24 ++++++++++++++++---- .../monitoring/mbeans/ClusterStatusMonitor.java | 10 ++++---- .../monitoring/mbeans/InstanceMonitor.java | 6 ++--- .../helix/manager/zk/TestZkHelixAdmin.java | 10 +++----- 5 files changed, 31 insertions(+), 21 deletions(-)

----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/7038c78e/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java

---------------------------------------------------------------------- diff --git
a/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
b/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java index 521d315..971d719 100644 ---
a/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java +++
b/helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java @@ -67,7 +67,7 @@ public class ReadClusterDataStage extends AbstractBaseStage { Set<String> instanceSet = Sets.newHashSet(); Set<String> liveInstanceSet = Sets.newHashSet(); Set<String> disabledInstanceSet = Sets.newHashSet(); - Map<String, Map<String, String>> disabledPartitions = Maps.newHashMap(); + Map<String, Map<String, List<String>>> disabledPartitions =
Maps.newHashMap(); Map<String, Set<String>> tags = Maps.newHashMap(); Map<String, LiveInstance> liveInstanceMap = _cache.getLiveInstances(); for (Map.Entry<String, InstanceConfig> e :
_cache.getInstanceConfigMap().entrySet()) {

http://git-wip-us.apache.org/repos/asf/helix/blob/7038c78e/helix-core/src/main/java/org/apache/helix/model/InstanceConfig.java

---------------------------------------------------------------------- diff --git a/helix-core/src/main/java/org/apache/helix/model/InstanceConfig.java
b/helix-core/src/main/java/org/apache/helix/model/InstanceConfig.java index 8dcd1ef..ce1d47e 100644 --- a/helix-core/src/main/java/org/apache/helix/model/InstanceConfig.java +++ b/helix-core/src/main/java/org/apache/helix/model/InstanceConfig.java @@ -317,13 +317,27 @@ public class InstanceConfig extends HelixProperty { }

/** - * Get a map that mapping resource name to disabled partitions - * @return A map of resource name mapping to disabled partitions - */ - public Map<String, String> getDisabledPartitionsMap() { - return
_record.getMapField(InstanceConfigProperty.HELIX_DISABLED_PARTITION.name()); + * Get a map that mapping resource name to disabled partitions + * @return A map of resource name mapping to disabled partitions. If no + * resource/partitions disabled, return an empty map. + */ + public Map<String, List<String>> getDisabledPartitionsMap() { + Map<String, String> disabledPartitionsRawMap = +
_record.getMapField(InstanceConfigProperty.HELIX_DISABLED_PARTITION.name()); + if (disabledPartitionsRawMap == null) { + return Collections.emptyMap(); + } + + Map<String, List<String>> disabledPartitionsMap = new HashMap<String,
List<String>>(); + for (String resourceName : disabledPartitionsRawMap.keySet()) { + disabledPartitionsMap.put(resourceName,
getDisabledPartitions(resourceName)); + } + + return disabledPartitionsMap; }

+ + /** * Set the enabled state for a partition on this instance across all the
resources *

http://git-wip-us.apache.org/repos/asf/helix/blob/7038c78e/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java

---------------------------------------------------------------------- diff --git
a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java
b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java index 22d7209..468a0ce 100644 ---
a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java +++
b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java @@ -75,7 +75,7 @@ public class ClusterStatusMonitor implements
ClusterStatusMonitorMBean { private Set<String> _liveInstances = Collections.emptySet(); private Set<String> _instances = Collections.emptySet(); private Set<String> _disabledInstances = Collections.emptySet(); - private Map<String, Map<String, String>> _disabledPartitions =
Collections.emptyMap(); + private Map<String, Map<String, List<String>>> _disabledPartitions =
Collections.emptyMap(); private Map<String, Long> _instanceMsgQueueSizes = Maps.newConcurrentMap();

private final ConcurrentHashMap<String, ResourceMonitor> _resourceMbeanMap = @@ -133,10 +133,10 @@ public class ClusterStatusMonitor implements
ClusterStatusMonitorMBean {

@Override public long getDisabledPartitionsGauge() { int numDisabled = 0; - for (Map<String, String> perInstance : _disabledPartitions.values()) { - for (String partitions : perInstance.values()) { + for (Map<String, List<String>> perInstance : _disabledPartitions.values())
{ + for (List<String> partitions : perInstance.values()) { if (partitions != null) { - numDisabled += HelixUtil.deserializeByComma(partitions).size(); + numDisabled += partitions.size(); } } } @@ -200,7 +200,7 @@ public class ClusterStatusMonitor implements
ClusterStatusMonitorMBean { * @param tags a map of instance name to the set of tags on it */ public void setClusterInstanceStatus(Set<String> liveInstanceSet, Set<String>
instanceSet, - Set<String> disabledInstanceSet, Map<String, Map<String, String>>
disabledPartitions, + Set<String> disabledInstanceSet, Map<String, Map<String, List<String>>>
disabledPartitions, Map<String, Set<String>> tags) { // Unregister beans for instances that are no longer configured Set<String> toUnregister = Sets.newHashSet(_instanceMbeanMap.keySet());

http://git-wip-us.apache.org/repos/asf/helix/blob/7038c78e/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/InstanceMonitor.java

---------------------------------------------------------------------- diff --git
a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/InstanceMonitor.java
b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/InstanceMonitor.java index 46d8a96..722303b 100644 ---
a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/InstanceMonitor.java +++
b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/InstanceMonitor.java @@ -119,7 +119,7 @@ public class InstanceMonitor implements InstanceMonitorMBean
{ * @param isLive true if running, false otherwise * @param isEnabled true if enabled, false if disabled */ - public synchronized void updateInstance(Set<String> tags, Map<String, String>
disabledPartitions, + public synchronized void updateInstance(Set<String> tags, Map<String,
List<String>> disabledPartitions, boolean isLive, boolean isEnabled) { if (tags == null || tags.isEmpty()) { _tags = ImmutableList.of(ClusterStatusMonitor.DEFAULT_TAG); @@ -129,9 +129,9 @@ public class InstanceMonitor implements InstanceMonitorMBean
{ } _disabledPartitions = 0L; if (disabledPartitions != null) { - for (String partitions : disabledPartitions.values()) { + for (List<String> partitions : disabledPartitions.values()) { if (partitions != null) { - _disabledPartitions +=
HelixUtil.deserializeByComma(partitions).size(); + _disabledPartitions += partitions.size(); } } }

http://git-wip-us.apache.org/repos/asf/helix/blob/7038c78e/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java

---------------------------------------------------------------------- diff --git
a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java index bb1b079..a431171 100644 --- a/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java +++ b/helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java @@ -429,15 +429,11 @@ public class TestZkHelixAdmin extends ZkUnitTestBase { Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "0").size(), 2); Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "1").size(), 3);

- // Test enable partition across resources - instanceConfig.setInstanceEnabledForPartition("2", true); - Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "0").size(), 1); - Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "1").size(), 2); - // Test disable partition across resources + // TODO : Remove this part once setInstanceEnabledForPartition(partition,
enabled) is removed instanceConfig.setInstanceEnabledForPartition("10", false); - Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "0").size(), 2); - Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "1").size(), 3); + Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "0").size(), 3); + Assert.assertEquals(instanceConfig.getDisabledPartitions(testResourcePrefix
+ "1").size(), 4); }

@Test