Repository: hadoop Updated Branches: refs/heads/trunk 78bd3b1db -> 64c7a12b5
HDDS-436. Allow SCM chill mode to be disabled by configuration. Contributed by Ajay Kumar. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/64c7a12b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/64c7a12b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/64c7a12b Branch: refs/heads/trunk Commit: 64c7a12b5775a330a04087adda25f85bd08b8366 Parents: 78bd3b1 Author: Anu Engineer <[email protected]> Authored: Wed Sep 12 11:32:46 2018 -0700 Committer: Anu Engineer <[email protected]> Committed: Wed Sep 12 11:40:24 2018 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hdds/HddsConfigKeys.java | 4 ++++ .../common/src/main/resources/ozone-default.xml | 8 ++++++++ .../hdds/scm/server/SCMChillModeManager.java | 7 ++++++- .../scm/server/StorageContainerManager.java | 3 ++- .../scm/server/TestSCMChillModeManager.java | 20 +++++++++++++++----- 5 files changed, 35 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/64c7a12b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java index 63fb17e..492be82 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java @@ -75,6 +75,10 @@ public final class HddsConfigKeys { "hdds.container.close.threshold"; public static final float HDDS_CONTAINER_CLOSE_THRESHOLD_DEFAULT = 0.9f; + public static final String HDDS_SCM_CHILLMODE_ENABLED = + "hdds.scm.chillmode.enabled"; + public static final boolean HDDS_SCM_CHILLMODE_ENABLED_DEFAULT = true; + // % of containers which should have at least one reported replica // before SCM comes out of chill mode. public static final String HDDS_SCM_CHILLMODE_THRESHOLD_PCT = http://git-wip-us.apache.org/repos/asf/hadoop/blob/64c7a12b/hadoop-hdds/common/src/main/resources/ozone-default.xml ---------------------------------------------------------------------- diff --git a/hadoop-hdds/common/src/main/resources/ozone-default.xml b/hadoop-hdds/common/src/main/resources/ozone-default.xml index 850044d..6afc870 100644 --- a/hadoop-hdds/common/src/main/resources/ozone-default.xml +++ b/hadoop-hdds/common/src/main/resources/ozone-default.xml @@ -1122,6 +1122,14 @@ </property> <property> + <name>hdds.scm.chillmode.enabled</name> + <value>true</value> + <tag>HDDS,SCM,OPERATION</tag> + <description>Boolean value to enable or disable SCM chill mode. + </description> + </property> + + <property> <name>hdds.container.action.max.limit</name> <value>20</value> <tag>DATANODE</tag> http://git-wip-us.apache.org/repos/asf/hadoop/blob/64c7a12b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMChillModeManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMChillModeManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMChillModeManager.java index d278637..74affa8 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMChillModeManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMChillModeManager.java @@ -58,10 +58,15 @@ public class SCMChillModeManager implements private Configuration config; private static final String CONT_EXIT_RULE = "ContainerChillModeRule"; - SCMChillModeManager(Configuration conf, List<ContainerInfo> allContainers) { + SCMChillModeManager(Configuration conf, List<ContainerInfo> allContainers, + EventPublisher eventQueue) { this.config = conf; exitRules .put(CONT_EXIT_RULE, new ContainerChillModeRule(config, allContainers)); + if (!conf.getBoolean(HddsConfigKeys.HDDS_SCM_CHILLMODE_ENABLED, + HddsConfigKeys.HDDS_SCM_CHILLMODE_ENABLED_DEFAULT)) { + exitChillMode(eventQueue); + } } private void validateChillModeExitRules(EventPublisher eventQueue) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/64c7a12b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java index 67d5496..28a4983 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java @@ -233,7 +233,8 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl new ContainerReportHandler(scmContainerManager, node2ContainerMap, replicationStatus); scmChillModeManager = new SCMChillModeManager(conf, - getScmContainerManager().getStateManager().getAllContainers()); + getScmContainerManager().getStateManager().getAllContainers(), + eventQueue); PipelineActionEventHandler pipelineActionEventHandler = new PipelineActionEventHandler(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/64c7a12b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMChillModeManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMChillModeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMChillModeManager.java index e98a9ae..486c604 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMChillModeManager.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMChillModeManager.java @@ -17,11 +17,10 @@ */ package org.apache.hadoop.hdds.scm.server; -import static org.junit.Assert.assertTrue; - import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hdds.HddsConfigKeys; import org.apache.hadoop.hdds.conf.OzoneConfiguration; import org.apache.hadoop.hdds.scm.HddsTestUtils; import org.apache.hadoop.hdds.scm.container.common.helpers.ContainerInfo; @@ -33,6 +32,9 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.Timeout; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + /** Test class for SCMChillModeManager. */ public class TestSCMChillModeManager { @@ -62,13 +64,13 @@ public class TestSCMChillModeManager { @Test public void testChillModeStateWithNullContainers() { - new SCMChillModeManager(config, null); + new SCMChillModeManager(config, null, queue); } private void testChillMode(int numContainers) throws Exception { containers = new ArrayList<>(); containers.addAll(HddsTestUtils.getContainerInfo(numContainers)); - scmChillModeManager = new SCMChillModeManager(config, containers); + scmChillModeManager = new SCMChillModeManager(config, containers, queue); queue.addHandler(SCMEvents.NODE_REGISTRATION_CONT_REPORT, scmChillModeManager); assertTrue(scmChillModeManager.getInChillMode()); @@ -83,7 +85,7 @@ public class TestSCMChillModeManager { public void testChillModeExitRule() throws Exception { containers = new ArrayList<>(); containers.addAll(HddsTestUtils.getContainerInfo(25 * 4)); - scmChillModeManager = new SCMChillModeManager(config, containers); + scmChillModeManager = new SCMChillModeManager(config, containers, queue); queue.addHandler(SCMEvents.NODE_REGISTRATION_CONT_REPORT, scmChillModeManager); assertTrue(scmChillModeManager.getInChillMode()); @@ -101,6 +103,14 @@ public class TestSCMChillModeManager { }, 100, 1000 * 5); } + @Test + public void testDisableChillMode() { + OzoneConfiguration conf = new OzoneConfiguration(config); + conf.setBoolean(HddsConfigKeys.HDDS_SCM_CHILLMODE_ENABLED, false); + scmChillModeManager = new SCMChillModeManager(conf, containers, queue); + assertFalse(scmChillModeManager.getInChillMode()); + } + private void testContainerThreshold(List<ContainerInfo> dnContainers, double expectedThreshold) throws Exception { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
