This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new e8d96f422e HDDS-12022. Enable SCM Ratis in TestStorageContainerManager
(#7651)
e8d96f422e is described below
commit e8d96f422efe094b9191dc2d65459a29e8a8faac
Author: Chung En Lee <[email protected]>
AuthorDate: Tue Jan 7 17:26:12 2025 +0800
HDDS-12022. Enable SCM Ratis in TestStorageContainerManager (#7651)
---
.../hdds/scm/TestStorageContainerManager.java | 71 +++++++---------------
1 file changed, 22 insertions(+), 49 deletions(-)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestStorageContainerManager.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestStorageContainerManager.java
index 47f6d3823d..14df7670f6 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestStorageContainerManager.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/scm/TestStorageContainerManager.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.hdds.scm.events.SCMEvents;
import org.apache.hadoop.hdds.scm.exceptions.SCMException;
import org.apache.hadoop.hdds.scm.ha.RatisUtil;
import org.apache.hadoop.hdds.scm.ha.SCMContext;
+import org.apache.hadoop.hdds.scm.ha.SCMHANodeDetails;
import org.apache.hadoop.hdds.scm.ha.SCMHAUtils;
import org.apache.hadoop.hdds.scm.ha.SCMRatisServerImpl;
import org.apache.hadoop.hdds.scm.node.DatanodeInfo;
@@ -92,7 +93,6 @@ import
org.apache.hadoop.ozone.protocol.commands.CommandForDatanode;
import org.apache.hadoop.ozone.protocol.commands.DeleteBlocksCommand;
import org.apache.hadoop.ozone.protocol.commands.SCMCommand;
import org.apache.hadoop.security.UserGroupInformation;
-import
org.apache.hadoop.security.authentication.client.AuthenticationException;
import org.apache.hadoop.util.ExitUtil;
import org.apache.hadoop.util.Time;
import org.apache.log4j.Level;
@@ -142,15 +142,12 @@ import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_SCM_SAFEMODE_PIPELINE_C
import static org.apache.hadoop.hdds.scm.HddsTestUtils.mockRemoteUser;
import static
org.apache.hadoop.hdds.scm.HddsWhiteboxTestUtils.setInternalState;
import static
org.apache.hadoop.ozone.OzoneConfigKeys.OZONE_BLOCK_DELETING_SERVICE_INTERVAL;
-import static org.apache.ozone.test.GenericTestUtils.PortAllocator.getFreePort;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.any;
@@ -191,11 +188,13 @@ public class TestStorageContainerManager {
public void testRpcPermission() throws Exception {
// Test with default configuration
OzoneConfiguration defaultConf = new OzoneConfiguration();
+ defaultConf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
testRpcPermissionWithConf(defaultConf, any -> false, "unknownUser");
// Test with ozone.administrators defined in configuration
String admins = "adminUser1, adminUser2";
OzoneConfiguration ozoneConf = new OzoneConfiguration();
+ ozoneConf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
ozoneConf.setStrings(OzoneConfigKeys.OZONE_ADMINISTRATORS, admins);
// Non-admin user will get permission denied.
// Admin user will pass the permission check.
@@ -267,6 +266,7 @@ public class TestStorageContainerManager {
public void testBlockDeletionTransactions() throws Exception {
int numKeys = 5;
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL, 100,
TimeUnit.MILLISECONDS);
DatanodeConfiguration datanodeConfiguration = conf.getObject(
@@ -358,6 +358,7 @@ public class TestStorageContainerManager {
@Test
public void testOldDNRegistersToReInitialisedSCM() throws Exception {
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
conf.setTimeDuration(HDDS_HEARTBEAT_INTERVAL, 1000, TimeUnit.MILLISECONDS);
conf.setTimeDuration(ScmConfigKeys.OZONE_SCM_HEARTBEAT_PROCESS_INTERVAL,
3000, TimeUnit.MILLISECONDS);
@@ -369,10 +370,13 @@ public class TestStorageContainerManager {
cluster.waitForClusterToBeReady();
HddsDatanodeService datanode = cluster.getHddsDatanodes().get(0);
StorageContainerManager scm = cluster.getStorageContainerManager();
+ File dbDir = scm.getScmMetadataStore().getStore().getDbLocation();
scm.stop();
// re-initialise SCM with new clusterID
+ GenericTestUtils.deleteDirectory(new
File(SCMHAUtils.getRatisStorageDir(conf)));
+ GenericTestUtils.deleteDirectory(dbDir);
GenericTestUtils.deleteDirectory(
new File(scm.getScmStorageConfig().getStorageDir()));
String newClusterId = UUID.randomUUID().toString();
@@ -413,7 +417,7 @@ public class TestStorageContainerManager {
datanode.getDatanodeDetails());
GenericTestUtils.waitFor(
() -> scmDnHBDispatcherLog.getOutput().contains(expectedLog), 100,
- 5000);
+ 30000);
ExitUtil.disableSystemExit();
// As part of processing response for re-register, DN
EndpointStateMachine
// goes to GET-VERSION state which checks if there is already existing
@@ -432,6 +436,7 @@ public class TestStorageContainerManager {
assertThat(versionEndPointTaskLog.getOutput()).contains(
"org.apache.hadoop.ozone.common" +
".InconsistentStorageStateException: Mismatched ClusterIDs");
+ scm.stop();
}
}
@@ -439,6 +444,7 @@ public class TestStorageContainerManager {
public void testBlockDeletingThrottling() throws Exception {
int numKeys = 15;
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
conf.setTimeDuration(HDDS_CONTAINER_REPORT_INTERVAL, 1, TimeUnit.SECONDS);
conf.setInt(ScmConfigKeys.OZONE_SCM_BLOCK_DELETION_MAX_RETRY, 5);
conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL,
@@ -549,6 +555,7 @@ public class TestStorageContainerManager {
@Test
public void testSCMInitialization(@TempDir Path tempDir) throws Exception {
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
Path scmPath = tempDir.resolve("scm-meta");
conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, scmPath.toString());
@@ -564,27 +571,13 @@ public class TestStorageContainerManager {
assertEquals(NodeType.SCM, scmStore.getNodeType());
assertEquals(testClusterId, scmStore.getClusterID());
assertTrue(scmStore.isSCMHAEnabled());
- }
-
- @Test
- public void testSCMInitializationWithHAEnabled(@TempDir Path tempDir) throws
Exception {
- OzoneConfiguration conf = new OzoneConfiguration();
- conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
- conf.set(ScmConfigKeys.OZONE_SCM_PIPELINE_CREATION_INTERVAL, "10s");
- Path scmPath = tempDir.resolve("scm-meta");
- conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, scmPath.toString());
-
- final UUID clusterId = UUID.randomUUID();
- // This will initialize SCM
- StorageContainerManager.scmInit(conf, clusterId.toString());
- SCMStorageConfig scmStore = new SCMStorageConfig(conf);
- assertTrue(scmStore.isSCMHAEnabled());
validateRatisGroupExists(conf, clusterId.toString());
}
@Test
public void testSCMReinitialization(@TempDir Path tempDir) throws Exception {
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
Path scmPath = tempDir.resolve("scm-meta");
conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, scmPath.toString());
//This will set the cluster id in the version file
@@ -646,6 +639,7 @@ public class TestStorageContainerManager {
@Test
void testSCMInitializationFailure(@TempDir Path tempDir) {
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
Path scmPath = tempDir.resolve("scm-meta");
conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, scmPath.toString());
@@ -658,15 +652,21 @@ public class TestStorageContainerManager {
OzoneConfiguration conf = new OzoneConfiguration();
Path scmPath = tempDir.resolve("scm-meta");
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
conf.set(HddsConfigKeys.OZONE_METADATA_DIRS, scmPath.toString());
SCMStorageConfig scmStore = new SCMStorageConfig(conf);
String clusterId = UUID.randomUUID().toString();
String scmId = UUID.randomUUID().toString();
scmStore.setClusterId(clusterId);
scmStore.setScmId(scmId);
+ scmStore.setSCMHAFlag(true);
// writes the version file properties
scmStore.initialize();
+ SCMRatisServerImpl.initialize(clusterId, scmId,
+ SCMHANodeDetails.loadSCMHAConfig(conf, scmStore)
+ .getLocalNodeDetails(), conf);
StorageContainerManager scm = HddsTestUtils.getScmSimple(conf);
+ scm.start();
//Reads the SCM Info from SCM instance
ScmInfo scmInfo = scm.getClientProtocolServer().getScmInfo();
assertEquals(clusterId, scmInfo.getClusterId());
@@ -684,6 +684,7 @@ public class TestStorageContainerManager {
public void testScmProcessDatanodeHeartbeat() throws Exception {
String rackName = "/rack1";
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
conf.setClass(NET_TOPOLOGY_NODE_SWITCH_MAPPING_IMPL_KEY,
StaticMapping.class, DNSToSwitchMapping.class);
StaticMapping.addNodeToRack(NetUtils.normalizeHostName(HddsUtils.getHostName(conf)),
@@ -726,6 +727,7 @@ public class TestStorageContainerManager {
public void testCloseContainerCommandOnRestart() throws Exception {
int numKeys = 15;
OzoneConfiguration conf = new OzoneConfiguration();
+ conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
conf.setTimeDuration(HDDS_CONTAINER_REPORT_INTERVAL, 1, TimeUnit.SECONDS);
conf.setInt(ScmConfigKeys.OZONE_SCM_BLOCK_DELETION_MAX_RETRY, 5);
conf.setTimeDuration(OZONE_BLOCK_DELETING_SERVICE_INTERVAL,
@@ -943,35 +945,6 @@ public class TestStorageContainerManager {
containerReportExecutors.close();
}
- @Test
- public void testNonRatisToRatis()
- throws IOException, AuthenticationException, InterruptedException,
- TimeoutException {
- final OzoneConfiguration conf = new OzoneConfiguration();
- try (MiniOzoneCluster cluster = MiniOzoneCluster.newBuilder(conf)
- .setNumDatanodes(3)
- .build()) {
- final StorageContainerManager nonRatisSCM = cluster
- .getStorageContainerManager();
- assertNull(nonRatisSCM.getScmHAManager().getRatisServer());
- assertFalse(nonRatisSCM.getScmStorageConfig().isSCMHAEnabled());
- nonRatisSCM.stop();
- nonRatisSCM.join();
-
- DefaultConfigManager.clearDefaultConfigs();
- conf.setBoolean(ScmConfigKeys.OZONE_SCM_HA_ENABLE_KEY, true);
- StorageContainerManager.scmInit(conf, cluster.getClusterId());
- conf.setInt(ScmConfigKeys.OZONE_SCM_DATANODE_PORT_KEY, getFreePort());
- conf.unset(ScmConfigKeys.OZONE_SCM_DATANODE_ADDRESS_KEY);
- cluster.restartStorageContainerManager(false);
-
- final StorageContainerManager ratisSCM = cluster
- .getStorageContainerManager();
- assertNotNull(ratisSCM.getScmHAManager().getRatisServer());
- assertTrue(ratisSCM.getScmStorageConfig().isSCMHAEnabled());
- }
- }
-
private void addTransactions(StorageContainerManager scm,
DeletedBlockLog delLog,
Map<Long, List<Long>> containerBlocksMap)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]