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]

Reply via email to