You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2017/06/22 22:57:24 UTC

[05/50] [abbrv] helix git commit: Fix a bug in BestPossibleExternalViewVerifier.

Fix a bug in BestPossibleExternalViewVerifier.


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

Branch: refs/heads/master
Commit: df215edb63551b24a73a4995dfc0579a800ea757
Parents: 65cb316
Author: Lei Xia <lx...@linkedin.com>
Authored: Thu Nov 3 14:13:42 2016 -0700
Committer: Lei Xia <lx...@linkedin.com>
Committed: Wed Feb 8 09:57:59 2017 -0800

----------------------------------------------------------------------
 .../BestPossibleExternalViewVerifier.java          | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/df215edb/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier/BestPossibleExternalViewVerifier.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier/BestPossibleExternalViewVerifier.java b/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier/BestPossibleExternalViewVerifier.java
index 970973c..e1d660c 100644
--- a/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier/BestPossibleExternalViewVerifier.java
+++ b/helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier/BestPossibleExternalViewVerifier.java
@@ -20,6 +20,7 @@ package org.apache.helix.tools.ClusterStateVerifier;
  */
 
 import org.apache.helix.HelixDefinedState;
+import org.apache.helix.HelixException;
 import org.apache.helix.PropertyKey;
 import org.apache.helix.controller.pipeline.Stage;
 import org.apache.helix.controller.pipeline.StageContext;
@@ -31,7 +32,6 @@ import org.apache.helix.controller.stages.ClusterEvent;
 import org.apache.helix.controller.stages.CurrentStateComputationStage;
 import org.apache.helix.controller.stages.ResourceComputationStage;
 import org.apache.helix.manager.zk.ZkClient;
-import org.apache.helix.model.BuiltInStateModelDefinitions;
 import org.apache.helix.model.ExternalView;
 import org.apache.helix.model.IdealState;
 import org.apache.helix.model.Partition;
@@ -269,7 +269,14 @@ public class BestPossibleExternalViewVerifier extends ZkHelixClusterVerifier {
         Map<Partition, Map<String, String>> bpStateMap =
             bestPossOutput.getResourceMap(resourceName);
 
-        boolean result = verifyExternalView(is, extView, bpStateMap);
+        StateModelDefinition stateModelDef = cache.getStateModelDef(is.getStateModelDefRef());
+        if (stateModelDef == null) {
+          throw new HelixException(
+              "State model definition " + is.getStateModelDefRef() + " for resource not found!" + is
+                  .getResourceName());
+        }
+
+        boolean result = verifyExternalView(is, extView, bpStateMap, stateModelDef);
         if (!result) {
           LOG.debug("verifyExternalView fails! ExternalView: " + extView + " BestPossibleState: "
               + bpStateMap);
@@ -284,11 +291,7 @@ public class BestPossibleExternalViewVerifier extends ZkHelixClusterVerifier {
   }
 
   private boolean verifyExternalView(IdealState idealState, ExternalView externalView,
-      Map<Partition, Map<String, String>> bestPossibleState) {
-
-    StateModelDefinition stateModelDef =
-        BuiltInStateModelDefinitions.valueOf(idealState.getStateModelDefRef())
-            .getStateModelDefinition();
+      Map<Partition, Map<String, String>> bestPossibleState, StateModelDefinition stateModelDef) {
     Set<String> ignoreStaes = new HashSet<String>(
         Arrays.asList(stateModelDef.getInitialState(), HelixDefinedState.DROPPED.toString()));