From c18eb9780163f8995c21b7d1b7b2b04140e4bc0a Mon Sep 17 00:00:00 2001 From: Anu Engineer Date: Wed, 12 Sep 2018 14:09:15 -0700 Subject: [PATCH] HDDS-395. TestOzoneRestWithMiniCluster fails with "Unable to read ROCKDB config". Contributed by Dinesh Chitlangia. --- .../hadoop/utils/db/DBConfigFromFile.java | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/db/DBConfigFromFile.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/db/DBConfigFromFile.java index 753a460072..94370b1cd5 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/db/DBConfigFromFile.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/utils/db/DBConfigFromFile.java @@ -26,6 +26,8 @@ import org.rocksdb.Env; import org.rocksdb.OptionsUtil; import org.rocksdb.RocksDBException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; @@ -44,6 +46,9 @@ * responsibility. */ public final class DBConfigFromFile { + private static final Logger LOG = + LoggerFactory.getLogger(DBConfigFromFile.class); + public static final String CONFIG_DIR = "HADOOP_CONF_DIR"; private DBConfigFromFile() { @@ -59,8 +64,11 @@ public static File getConfigLocation() throws IOException { } if (StringUtil.isBlank(path)) { - throw new IOException("Unable to find the configuration directory. " - + "Please make sure that HADOOP_CONF_DIR is setup correctly "); + LOG.debug("Unable to find the configuration directory. " + + "Please make sure that HADOOP_CONF_DIR is setup correctly."); + } + if(StringUtil.isBlank(path)){ + return null; } return new File(path); @@ -115,17 +123,21 @@ public static DBOptions readFromFile(String dbFileName, //TODO: Add Documentation on how to support RocksDB Mem Env. Env env = Env.getDefault(); DBOptions options = null; - Path optionsFile = Paths.get(getConfigLocation().toString(), - getOptionsFileNameFromDB(dbFileName)); + File configLocation = getConfigLocation(); + if(configLocation != null && + StringUtil.isNotBlank(configLocation.toString())){ + Path optionsFile = Paths.get(configLocation.toString(), + getOptionsFileNameFromDB(dbFileName)); - if (optionsFile.toFile().exists()) { - options = new DBOptions(); - try { - OptionsUtil.loadOptionsFromFile(optionsFile.toString(), - env, options, cfDescs, true); + if (optionsFile.toFile().exists()) { + options = new DBOptions(); + try { + OptionsUtil.loadOptionsFromFile(optionsFile.toString(), + env, options, cfDescs, true); - } catch (RocksDBException rdEx) { - RDBTable.toIOException("Unable to find/open Options file.", rdEx); + } catch (RocksDBException rdEx) { + RDBTable.toIOException("Unable to find/open Options file.", rdEx); + } } } return options;