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 182d106c40 HDDS-12132. Parameterize testUpdateTransactionInfoTable for
SCM (#7768)
182d106c40 is described below
commit 182d106c401051a517d8a8027b3e40c5ee6fe96f
Author: Sarveksha Yeshavantha Raju
<[email protected]>
AuthorDate: Fri Jan 31 13:06:12 2025 +0530
HDDS-12132. Parameterize testUpdateTransactionInfoTable for SCM (#7768)
---
.../hadoop/ozone/shell/TestOzoneRepairShell.java | 42 ++++++++++++++++------
.../org/apache/hadoop/ozone/repair/RepairTool.java | 2 +-
.../hadoop/ozone/repair/TransactionInfoRepair.java | 5 ++-
3 files changed, 34 insertions(+), 15 deletions(-)
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
index 7446bd0afa..aa2ff69735 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneRepairShell.java
@@ -18,18 +18,23 @@
package org.apache.hadoop.ozone.shell;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import org.apache.hadoop.hdds.server.ServerUtils;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.client.OzoneClient;
import org.apache.hadoop.ozone.debug.OzoneDebug;
import org.apache.hadoop.ozone.om.OMStorage;
import org.apache.hadoop.ozone.repair.OzoneRepair;
+import org.apache.hadoop.ozone.repair.RepairTool.Component;
+import org.apache.hadoop.ozone.repair.TransactionInfoRepair;
import org.apache.ozone.test.GenericTestUtils;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
import picocli.CommandLine;
import java.io.File;
@@ -37,6 +42,7 @@
import java.util.regex.Pattern;
import static org.apache.hadoop.ozone.OzoneConsts.OM_DB_NAME;
+import static org.apache.hadoop.ozone.OzoneConsts.SCM_DB_NAME;
import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_ADDRESS_KEY;
import static org.apache.ozone.test.IntLambda.withTextFromSystemIn;
import static org.assertj.core.api.Assertions.assertThat;
@@ -52,7 +58,6 @@ public class TestOzoneRepairShell {
private static MiniOzoneCluster cluster = null;
private static OzoneConfiguration conf = null;
private static String om;
-
private static final String TRANSACTION_INFO_TABLE_TERM_INDEX_PATTERN =
"([0-9]+#[0-9]+)";
@BeforeAll
@@ -80,20 +85,23 @@ static void cleanup() {
IOUtils.closeQuietly(cluster);
}
- @Test
- public void testUpdateTransactionInfoTable() throws Exception {
+ @ParameterizedTest
+ @EnumSource(value = Component.class, names = {"OM", "SCM"})
+ public void testUpdateTransactionInfoTable(Component component) throws
Exception {
CommandLine cmd = new OzoneRepair().getCmd();
- String dbPath = new File(OMStorage.getOmDbDir(conf) + "/" +
OM_DB_NAME).getPath();
+ String dbPath = getDbPath(component);
+ String componentLowerCase = component.name().toLowerCase();
cluster.getOzoneManager().stop();
+ cluster.getStorageContainerManager().stop();
- String cmdOut = scanTransactionInfoTable(dbPath);
+ String cmdOut = scanTransactionInfoTable(dbPath, component);
String[] originalHighestTermIndex = parseScanOutput(cmdOut);
String testTerm = "1111";
String testIndex = "1111";
int exitCode = withTextFromSystemIn("y")
- .execute(() -> cmd.execute("om", "update-transaction",
+ .execute(() -> cmd.execute(componentLowerCase, "update-transaction",
"--db", dbPath,
"--term", testTerm,
"--index", testIndex));
@@ -105,23 +113,35 @@ public void testUpdateTransactionInfoTable() throws
Exception {
String.format("The highest transaction info has been updated to:
(t:%s, i:%s)", testTerm, testIndex)
);
- String cmdOut2 = scanTransactionInfoTable(dbPath);
+ String cmdOut2 = scanTransactionInfoTable(dbPath, component);
assertThat(cmdOut2).contains(testTerm + "#" + testIndex);
withTextFromSystemIn("y")
- .execute(() -> cmd.execute("om", "update-transaction",
+ .execute(() -> cmd.execute(componentLowerCase, "update-transaction",
"--db", dbPath,
"--term", originalHighestTermIndex[0],
"--index", originalHighestTermIndex[1]));
cluster.getOzoneManager().restart();
try (OzoneClient ozoneClient = cluster.newClient()) {
- ozoneClient.getObjectStore().createVolume("vol1");
+ ozoneClient.getObjectStore().createVolume("vol-" + componentLowerCase);
+ }
+ }
+
+ private String getDbPath(Component component) {
+ switch (component) {
+ case OM:
+ return new File(OMStorage.getOmDbDir(conf) + "/" + OM_DB_NAME).getPath();
+ case SCM:
+ return new File(ServerUtils.getScmDbDir(conf) + "/" +
SCM_DB_NAME).getPath();
+ default:
+ throw new IllegalStateException("Unknown component: " + component);
}
}
- private String scanTransactionInfoTable(String dbPath) {
+ private String scanTransactionInfoTable(String dbPath, Component component) {
CommandLine debugCmd = new OzoneDebug().getCmd();
- debugCmd.execute("ldb", "--db", dbPath, "scan", "--column_family",
"transactionInfoTable");
+ debugCmd.execute("ldb", "--db", dbPath, "scan", "--column_family",
+ TransactionInfoRepair.getColumnFamily(component).getName());
return out.get();
}
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
index 3fa1033fb2..aac0680a10 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/RepairTool.java
@@ -142,7 +142,7 @@ private String getConsoleReadLineWithFormat(String
currentUser) {
}
/** Ozone component for offline tools. */
- protected enum Component {
+ public enum Component {
DATANODE,
OM,
SCM,
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
index 8b44c30877..07ee93c0b7 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/repair/TransactionInfoRepair.java
@@ -73,7 +73,7 @@ public void execute() throws Exception {
List<ColumnFamilyHandle> cfHandleList = new ArrayList<>();
List<ColumnFamilyDescriptor> cfDescList =
RocksDBUtils.getColumnFamilyDescriptors(
dbPath);
- String columnFamilyName = getColumnFamily().getName();
+ String columnFamilyName = getColumnFamily(serviceToBeOffline()).getName();
try (ManagedRocksDB db = ManagedRocksDB.open(dbPath, cfDescList,
cfHandleList)) {
ColumnFamilyHandle transactionInfoCfh =
RocksDBUtils.getColumnFamilyHandle(columnFamilyName, cfHandleList);
@@ -122,8 +122,7 @@ protected Component serviceToBeOffline() {
}
}
- private DBColumnFamilyDefinition<String, TransactionInfo> getColumnFamily() {
- Component component = serviceToBeOffline();
+ public static DBColumnFamilyDefinition<String, TransactionInfo>
getColumnFamily(Component component) {
switch (component) {
case OM:
return OMDBDefinition.TRANSACTION_INFO_TABLE;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]