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 7b32a51 HDDS-4675. Support scanning content of DN rocksdb instances
with current scheme. (#1786)
7b32a51 is described below
commit 7b32a51c43e8c95d774b660ab2883bc74d084582
Author: Elek, Márton <[email protected]>
AuthorDate: Thu Feb 4 17:59:39 2021 +0100
HDDS-4675. Support scanning content of DN rocksdb instances with current
scheme. (#1786)
---
.../metadata/DatanodeSchemaTwoDBDefinition.java | 2 +-
.../hadoop/ozone/debug/DBDefinitionFactory.java | 38 +++++++++++++++++-----
.../org/apache/hadoop/ozone/debug/DBScanner.java | 4 +--
.../ozone/debug/TestDBDefinitionFactory.java | 13 ++++++--
4 files changed, 42 insertions(+), 15 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/metadata/DatanodeSchemaTwoDBDefinition.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/metadata/DatanodeSchemaTwoDBDefinition.java
index fb66e3d..b72bad1 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/metadata/DatanodeSchemaTwoDBDefinition.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/metadata/DatanodeSchemaTwoDBDefinition.java
@@ -70,7 +70,7 @@ public class DatanodeSchemaTwoDBDefinition extends
StorageContainerDatanodeProtocolProtos.DeletedBlocksTransaction.class,
new DeletedBlocksTransactionCodec());
- protected DatanodeSchemaTwoDBDefinition(String dbPath) {
+ public DatanodeSchemaTwoDBDefinition(String dbPath) {
super(dbPath);
}
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBDefinitionFactory.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBDefinitionFactory.java
index d9d0d70..4d2927a 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBDefinitionFactory.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBDefinitionFactory.java
@@ -18,17 +18,21 @@
package org.apache.hadoop.ozone.debug;
-import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_CONTAINER_KEY_DB;
-import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_OM_SNAPSHOT_DB;
+import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.HashMap;
import org.apache.hadoop.hdds.scm.metadata.SCMDBDefinition;
import org.apache.hadoop.hdds.utils.db.DBDefinition;
+import
org.apache.hadoop.ozone.container.metadata.DatanodeSchemaTwoDBDefinition;
import org.apache.hadoop.ozone.om.codec.OMDBDefinition;
import org.apache.hadoop.ozone.recon.scm.ReconSCMDBDefinition;
import org.apache.hadoop.ozone.recon.spi.impl.ReconDBDefinition;
-import java.util.Arrays;
-import java.util.HashMap;
+import com.amazonaws.services.kms.model.InvalidArnException;
+import com.google.common.base.Preconditions;
+import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_CONTAINER_KEY_DB;
+import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_OM_SNAPSHOT_DB;
/**
* Utility class to get appropriate DBDefinition.
@@ -44,19 +48,35 @@ public final class DBDefinitionFactory {
dbMap = new HashMap<>();
Arrays.asList(
new SCMDBDefinition(),
- new OMDBDefinition(),
- new ReconSCMDBDefinition()
+ new OMDBDefinition(),
+ new ReconSCMDBDefinition()
).forEach(dbDefinition -> dbMap.put(dbDefinition.getName(), dbDefinition));
}
- public static DBDefinition getDefinition(String dbName){
- if (dbMap.containsKey(dbName)){
+ public static DBDefinition getDefinition(String dbName) {
+ if (dbMap.containsKey(dbName)) {
return dbMap.get(dbName);
}
return getReconDBDefinition(dbName);
}
- private static DBDefinition getReconDBDefinition(String dbName){
+ public static DBDefinition getDefinition(Path dbPath) {
+ Preconditions.checkNotNull(dbPath,
+ "Path is required to identify the used db scheme");
+ final Path fileName = dbPath.getFileName();
+ if (fileName == null) {
+ throw new InvalidArnException(
+ "Path is required to identify the used db scheme");
+ }
+ String dbName = fileName.toString();
+ if (dbName.endsWith("-container.db")) {
+ return new DatanodeSchemaTwoDBDefinition(
+ dbPath.toAbsolutePath().toString());
+ }
+ return getDefinition(dbName);
+ }
+
+ private static DBDefinition getReconDBDefinition(String dbName) {
if (dbName.startsWith(RECON_CONTAINER_KEY_DB)) {
return new ReconDBDefinition(dbName);
} else if (dbName.startsWith(RECON_OM_SNAPSHOT_DB)) {
diff --git
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBScanner.java
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBScanner.java
index d140f80..b8a9002 100644
---
a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBScanner.java
+++
b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/debug/DBScanner.java
@@ -18,9 +18,9 @@
package org.apache.hadoop.ozone.debug;
-import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -172,7 +172,7 @@ public class DBScanner implements Callable<Void>,
SubcommandWithParent {
}
dbPath = removeTrailingSlashIfNeeded(dbPath);
this.constructColumnFamilyMap(DBDefinitionFactory.
- getDefinition(new File(dbPath).getName()));
+ getDefinition(Paths.get(dbPath)));
if (this.columnFamilyMap !=null) {
if (!this.columnFamilyMap.containsKey(tableName)) {
System.out.print("Table with name:" + tableName + " does not exist");
diff --git
a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/debug/TestDBDefinitionFactory.java
b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/debug/TestDBDefinitionFactory.java
index f63d149..7d52ca5 100644
---
a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/debug/TestDBDefinitionFactory.java
+++
b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/debug/TestDBDefinitionFactory.java
@@ -18,15 +18,18 @@
package org.apache.hadoop.ozone.debug;
-import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_CONTAINER_KEY_DB;
-import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_OM_SNAPSHOT_DB;
-import static org.junit.Assert.assertTrue;
+import java.nio.file.Paths;
import org.apache.hadoop.hdds.scm.metadata.SCMDBDefinition;
import org.apache.hadoop.hdds.utils.db.DBDefinition;
+import
org.apache.hadoop.ozone.container.metadata.DatanodeSchemaTwoDBDefinition;
import org.apache.hadoop.ozone.om.codec.OMDBDefinition;
import org.apache.hadoop.ozone.recon.scm.ReconSCMDBDefinition;
import org.apache.hadoop.ozone.recon.spi.impl.ReconDBDefinition;
+
+import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_CONTAINER_KEY_DB;
+import static
org.apache.hadoop.ozone.recon.ReconConstants.RECON_OM_SNAPSHOT_DB;
+import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
@@ -55,5 +58,9 @@ public class TestDBDefinitionFactory {
definition = DBDefinitionFactory.getDefinition(
RECON_CONTAINER_KEY_DB + "_1");
assertTrue(definition instanceof ReconDBDefinition);
+
+ definition =
+ DBDefinitionFactory.getDefinition(Paths.get("/tmp/test-container.db"));
+ assertTrue(definition instanceof DatanodeSchemaTwoDBDefinition);
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]