From e73aa06d843cde5a5c17372f5aba81c26a68be8c Mon Sep 17 00:00:00 2001 From: Priyesh Karatha Date: Tue, 16 Sep 2025 16:20:13 +0530 Subject: [PATCH 1/2] getting db and check befor writeOptions creation. --- .../java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java index a561023f5300..c667272bf37d 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java @@ -213,13 +213,12 @@ public RDBStore build() throws RocksDatabaseException { rocksDBOption = getDefaultDBOptions(tableConfigs); } setDBOptionsProps(rocksDBOption); - ManagedWriteOptions writeOptions = new ManagedWriteOptions(); - writeOptions.setSync(rocksDBConfiguration.getSyncOption()); - File dbFile = getDBFile(); if (!dbFile.getParentFile().exists()) { throw new RocksDatabaseException("The DB destination directory should exist."); } + ManagedWriteOptions writeOptions = new ManagedWriteOptions(); + writeOptions.setSync(rocksDBConfiguration.getSyncOption()); return new RDBStore(dbFile, rocksDBOption, statistics, writeOptions, tableConfigs, openReadOnly, dbJmxBeanNameName, enableCompactionDag, From efee9c7af13323f2858b441de94688a9638b4741 Mon Sep 17 00:00:00 2001 From: Priyesh Karatha Date: Wed, 17 Sep 2025 08:17:03 +0530 Subject: [PATCH 2/2] handling constructor fails for any reason --- .../apache/hadoop/hdds/utils/db/DBStoreBuilder.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java index c667272bf37d..f8b415b1747c 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/DBStoreBuilder.java @@ -207,7 +207,7 @@ public RDBStore build() throws RocksDatabaseException { } Set tableConfigs = makeTableConfigs(); - + ManagedWriteOptions writeOptions = null; try { if (rocksDBOption == null) { rocksDBOption = getDefaultDBOptions(tableConfigs); @@ -217,13 +217,22 @@ public RDBStore build() throws RocksDatabaseException { if (!dbFile.getParentFile().exists()) { throw new RocksDatabaseException("The DB destination directory should exist."); } - ManagedWriteOptions writeOptions = new ManagedWriteOptions(); + writeOptions = new ManagedWriteOptions(); writeOptions.setSync(rocksDBConfiguration.getSyncOption()); return new RDBStore(dbFile, rocksDBOption, statistics, writeOptions, tableConfigs, openReadOnly, dbJmxBeanNameName, enableCompactionDag, maxDbUpdatesSizeThreshold, createCheckpointDirs, configuration, enableRocksDbMetrics); + } catch (Exception ex) { + try { + if (writeOptions != null) { + writeOptions.close(); + } + } catch (Exception suppressed) { + ex.addSuppressed(suppressed); + } + throw ex; } finally { tableConfigs.forEach(TableConfig::close); }