This is an automated email from the ASF dual-hosted git repository. hulee pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/helix.git
commit ab1d6a409218121b37b35c262dca51dba9249411 Author: Yi Wang <[email protected]> AuthorDate: Fri May 17 15:48:07 2019 -0700 Skip the sibling checks for resource without minActiveReplica checks RB=1670752 RB=1670752 RB=1670752 G=helix-reviewers A=jxue Signed-off-by: Hunter Lee <[email protected]> --- .../main/java/org/apache/helix/util/InstanceValidationUtil.java | 5 +++-- .../java/org/apache/helix/util/TestInstanceValidationUtil.java | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java b/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java index 2d4d2ba..7239eeb 100644 --- a/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java +++ b/helix-core/src/main/java/org/apache/helix/util/InstanceValidationUtil.java @@ -304,8 +304,9 @@ public class InstanceValidationUtil { // Get the minActiveReplicas constraint for the resource int minActiveReplicas = externalView.getMinActiveReplicas(); if (minActiveReplicas == -1) { - throw new HelixException( - "ExternalView " + resourceName + " is missing minActiveReplica field"); + _logger.warn("Resource " + resourceName + + " is missing minActiveReplica field. Skip the sibling check"); + continue; } String stateModeDef = externalView.getStateModelDefRef(); StateModelDefinition stateModelDefinition = diff --git a/helix-core/src/test/java/org/apache/helix/util/TestInstanceValidationUtil.java b/helix-core/src/test/java/org/apache/helix/util/TestInstanceValidationUtil.java index 38b54f1..2b193b4 100644 --- a/helix-core/src/test/java/org/apache/helix/util/TestInstanceValidationUtil.java +++ b/helix-core/src/test/java/org/apache/helix/util/TestInstanceValidationUtil.java @@ -390,8 +390,8 @@ public class TestInstanceValidationUtil { Assert.assertFalse(result); } - @Test(expectedExceptions = HelixException.class) - public void TestSiblingNodesActiveReplicaCheck_exception_whenIdealStatesMisMatch() { + @Test + public void TestSiblingNodesActiveReplicaCheck_whenNoMinActiveReplica() { String resource = "resource"; Mock mock = new Mock(); doReturn(ImmutableList.of(resource)).when(mock.dataAccessor) @@ -404,11 +404,13 @@ public class TestInstanceValidationUtil { doReturn(idealState).when(mock.dataAccessor).getProperty(argThat(new PropertyKeyArgument(PropertyType.IDEALSTATES))); //set externalView ExternalView externalView = mock(ExternalView.class); + // the resource sibling check will be skipped by design when(externalView.getMinActiveReplicas()).thenReturn(-1); doReturn(externalView).when(mock.dataAccessor) .getProperty(argThat(new PropertyKeyArgument(PropertyType.EXTERNALVIEW))); - InstanceValidationUtil.siblingNodesActiveReplicaCheck(mock.dataAccessor, TEST_INSTANCE); + boolean result = InstanceValidationUtil.siblingNodesActiveReplicaCheck(mock.dataAccessor, TEST_INSTANCE); + Assert.assertTrue(result); } @Test(expectedExceptions = HelixException.class)
