From f101a335afe819370df903ac106e1181aeed5b33 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Tue, 16 Jan 2024 10:32:36 +0100 Subject: [PATCH 1/3] HDDS-10134. ManagedReadOptions is not closed properly --- .../apache/hadoop/hdds/utils/db/RocksDatabase.java | 7 ++++--- .../hdds/utils/db/managed/ManagedObject.java | 14 ++++++++++++++ .../utils/db/managed/ManagedRocksIterator.java | 11 +++++++---- .../ozone/om/snapshot/RocksDbPersistentMap.java | 12 ++---------- .../org/apache/hadoop/ozone/debug/DBScanner.java | 12 +++++------- 5 files changed, 32 insertions(+), 24 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java index 4dd1042fde2b..95d9dd4936ff 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java @@ -774,10 +774,11 @@ public ManagedRocksIterator newIterator(ColumnFamily family) public ManagedRocksIterator newIterator(ColumnFamily family, boolean fillCache) throws IOException { - try (UncheckedAutoCloseable ignored = acquire(); - ManagedReadOptions readOptions = new ManagedReadOptions()) { + try (UncheckedAutoCloseable ignored = acquire()) { + ManagedReadOptions readOptions = new ManagedReadOptions(); readOptions.setFillCache(fillCache); - return managed(db.get().newIterator(family.getHandle(), readOptions)); + return managed(db.get().newIterator(family.getHandle(), readOptions), + readOptions); } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java index cae72ab73078..21d152300d23 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java @@ -18,6 +18,7 @@ */ package org.apache.hadoop.hdds.utils.db.managed; +import org.apache.hadoop.hdds.utils.IOUtils; import org.apache.ratis.util.UncheckedAutoCloseable; import org.rocksdb.RocksObject; @@ -28,11 +29,23 @@ * @param */ class ManagedObject implements AutoCloseable { + + private static final AutoCloseable[] EMPTY_CLOSEABLES = new AutoCloseable[0]; + private final T original; + private final AutoCloseable[] baggage; private final UncheckedAutoCloseable leakTracker = track(this); ManagedObject(T original) { + this(original, EMPTY_CLOSEABLES); + } + + /** + * @param baggage (optional) additional objects to be closed when this object is closed + */ + ManagedObject(T original, AutoCloseable... baggage) { this.original = original; + this.baggage = baggage; } public T get() { @@ -42,6 +55,7 @@ public T get() { @Override public void close() { original.close(); + IOUtils.close(ManagedRocksObjectUtils.LOG, baggage); leakTracker.close(); } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java index 5a0f8e7214ff..1a3834e99b21 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java @@ -24,11 +24,14 @@ */ public class ManagedRocksIterator extends ManagedObject { - public ManagedRocksIterator(RocksIterator original) { - super(original); + public ManagedRocksIterator(RocksIterator original, AutoCloseable... baggage) { + super(original, baggage); } - public static ManagedRocksIterator managed(RocksIterator iterator) { - return new ManagedRocksIterator(iterator); + /** + * @param baggage (optional) objects to be closed when the iterator is closed (readOptions, slice, etc.) + */ + public static ManagedRocksIterator managed(RocksIterator iterator, AutoCloseable... baggage) { + return new ManagedRocksIterator(iterator, baggage); } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java index 4387baa521a4..5bc587eed8d0 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java @@ -95,7 +95,6 @@ public void remove(K key) { public ClosableIterator> iterator(Optional lowerBound, Optional upperBound) { final ManagedReadOptions readOptions = new ManagedReadOptions(); - ManagedRocksIterator iterator; final ManagedSlice lowerBoundSlice; final ManagedSlice upperBoundSlice; try { @@ -119,8 +118,8 @@ public ClosableIterator> iterator(Optional lowerBound, throw new RuntimeException(exception); } - iterator = ManagedRocksIterator.managed( - db.get().newIterator(columnFamilyHandle, readOptions)); + ManagedRocksIterator iterator = ManagedRocksIterator.managed(db.get().newIterator(columnFamilyHandle, readOptions), + readOptions, lowerBoundSlice, upperBoundSlice); iterator.get().seekToFirst(); @@ -170,13 +169,6 @@ public V setValue(V value) { @Override public void close() { iterator.close(); - readOptions.close(); - if (upperBoundSlice != null) { - upperBoundSlice.close(); - } - if (lowerBoundSlice != null) { - lowerBoundSlice.close(); - } } }; } 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 91cf38dada6d..7850ec5158ce 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 @@ -371,18 +371,16 @@ private boolean printTable(List columnFamilyHandleList, } ManagedRocksIterator iterator = null; - ManagedReadOptions readOptions = null; - ManagedSlice slice = null; try { if (containerId > 0L && schemaV3) { // Handle SchemaV3 DN DB - readOptions = new ManagedReadOptions(); - slice = new ManagedSlice( + ManagedReadOptions readOptions = new ManagedReadOptions(); + ManagedSlice slice = new ManagedSlice( DatanodeSchemaThreeDBDefinition.getContainerKeyPrefixBytes( containerId + 1L)); readOptions.setIterateUpperBound(slice); - iterator = new ManagedRocksIterator( - rocksDB.get().newIterator(columnFamilyHandle, readOptions)); + iterator = new ManagedRocksIterator(rocksDB.get().newIterator(columnFamilyHandle, readOptions), + readOptions, slice); iterator.get().seek( DatanodeSchemaThreeDBDefinition.getContainerKeyPrefixBytes( containerId)); @@ -394,7 +392,7 @@ private boolean printTable(List columnFamilyHandleList, return displayTable(iterator, columnFamilyDefinition, schemaV3); } finally { - IOUtils.closeQuietly(iterator, readOptions, slice); + IOUtils.closeQuietly(iterator); } } From dde3596847105c83f335138e2a0659b9f6da0129 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Thu, 18 Jan 2024 10:16:28 +0100 Subject: [PATCH 2/3] Revert "HDDS-10134. ManagedReadOptions is not closed properly" This reverts commit f101a335afe819370df903ac106e1181aeed5b33. --- .../apache/hadoop/hdds/utils/db/RocksDatabase.java | 7 +++---- .../hdds/utils/db/managed/ManagedObject.java | 14 -------------- .../utils/db/managed/ManagedRocksIterator.java | 11 ++++------- .../ozone/om/snapshot/RocksDbPersistentMap.java | 12 ++++++++++-- .../org/apache/hadoop/ozone/debug/DBScanner.java | 12 +++++++----- 5 files changed, 24 insertions(+), 32 deletions(-) diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java index 95d9dd4936ff..4dd1042fde2b 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RocksDatabase.java @@ -774,11 +774,10 @@ public ManagedRocksIterator newIterator(ColumnFamily family) public ManagedRocksIterator newIterator(ColumnFamily family, boolean fillCache) throws IOException { - try (UncheckedAutoCloseable ignored = acquire()) { - ManagedReadOptions readOptions = new ManagedReadOptions(); + try (UncheckedAutoCloseable ignored = acquire(); + ManagedReadOptions readOptions = new ManagedReadOptions()) { readOptions.setFillCache(fillCache); - return managed(db.get().newIterator(family.getHandle(), readOptions), - readOptions); + return managed(db.get().newIterator(family.getHandle(), readOptions)); } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java index 21d152300d23..cae72ab73078 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java @@ -18,7 +18,6 @@ */ package org.apache.hadoop.hdds.utils.db.managed; -import org.apache.hadoop.hdds.utils.IOUtils; import org.apache.ratis.util.UncheckedAutoCloseable; import org.rocksdb.RocksObject; @@ -29,23 +28,11 @@ * @param */ class ManagedObject implements AutoCloseable { - - private static final AutoCloseable[] EMPTY_CLOSEABLES = new AutoCloseable[0]; - private final T original; - private final AutoCloseable[] baggage; private final UncheckedAutoCloseable leakTracker = track(this); ManagedObject(T original) { - this(original, EMPTY_CLOSEABLES); - } - - /** - * @param baggage (optional) additional objects to be closed when this object is closed - */ - ManagedObject(T original, AutoCloseable... baggage) { this.original = original; - this.baggage = baggage; } public T get() { @@ -55,7 +42,6 @@ public T get() { @Override public void close() { original.close(); - IOUtils.close(ManagedRocksObjectUtils.LOG, baggage); leakTracker.close(); } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java index 1a3834e99b21..5a0f8e7214ff 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksIterator.java @@ -24,14 +24,11 @@ */ public class ManagedRocksIterator extends ManagedObject { - public ManagedRocksIterator(RocksIterator original, AutoCloseable... baggage) { - super(original, baggage); + public ManagedRocksIterator(RocksIterator original) { + super(original); } - /** - * @param baggage (optional) objects to be closed when the iterator is closed (readOptions, slice, etc.) - */ - public static ManagedRocksIterator managed(RocksIterator iterator, AutoCloseable... baggage) { - return new ManagedRocksIterator(iterator, baggage); + public static ManagedRocksIterator managed(RocksIterator iterator) { + return new ManagedRocksIterator(iterator); } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java index 5bc587eed8d0..4387baa521a4 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/snapshot/RocksDbPersistentMap.java @@ -95,6 +95,7 @@ public void remove(K key) { public ClosableIterator> iterator(Optional lowerBound, Optional upperBound) { final ManagedReadOptions readOptions = new ManagedReadOptions(); + ManagedRocksIterator iterator; final ManagedSlice lowerBoundSlice; final ManagedSlice upperBoundSlice; try { @@ -118,8 +119,8 @@ public ClosableIterator> iterator(Optional lowerBound, throw new RuntimeException(exception); } - ManagedRocksIterator iterator = ManagedRocksIterator.managed(db.get().newIterator(columnFamilyHandle, readOptions), - readOptions, lowerBoundSlice, upperBoundSlice); + iterator = ManagedRocksIterator.managed( + db.get().newIterator(columnFamilyHandle, readOptions)); iterator.get().seekToFirst(); @@ -169,6 +170,13 @@ public V setValue(V value) { @Override public void close() { iterator.close(); + readOptions.close(); + if (upperBoundSlice != null) { + upperBoundSlice.close(); + } + if (lowerBoundSlice != null) { + lowerBoundSlice.close(); + } } }; } 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 7850ec5158ce..91cf38dada6d 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 @@ -371,16 +371,18 @@ private boolean printTable(List columnFamilyHandleList, } ManagedRocksIterator iterator = null; + ManagedReadOptions readOptions = null; + ManagedSlice slice = null; try { if (containerId > 0L && schemaV3) { // Handle SchemaV3 DN DB - ManagedReadOptions readOptions = new ManagedReadOptions(); - ManagedSlice slice = new ManagedSlice( + readOptions = new ManagedReadOptions(); + slice = new ManagedSlice( DatanodeSchemaThreeDBDefinition.getContainerKeyPrefixBytes( containerId + 1L)); readOptions.setIterateUpperBound(slice); - iterator = new ManagedRocksIterator(rocksDB.get().newIterator(columnFamilyHandle, readOptions), - readOptions, slice); + iterator = new ManagedRocksIterator( + rocksDB.get().newIterator(columnFamilyHandle, readOptions)); iterator.get().seek( DatanodeSchemaThreeDBDefinition.getContainerKeyPrefixBytes( containerId)); @@ -392,7 +394,7 @@ private boolean printTable(List columnFamilyHandleList, return displayTable(iterator, columnFamilyDefinition, schemaV3); } finally { - IOUtils.closeQuietly(iterator); + IOUtils.closeQuietly(iterator, readOptions, slice); } } From abb4b7a09be24a50ad24310689032bf09e0acae9 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Thu, 18 Jan 2024 10:31:18 +0100 Subject: [PATCH 3/3] use try-finally --- .../hadoop/hdds/utils/db/managed/ManagedBloomFilter.java | 7 +++++-- .../hdds/utils/db/managed/ManagedColumnFamilyOptions.java | 7 +++++-- .../hdds/utils/db/managed/ManagedCompactRangeOptions.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedDBOptions.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedEnvOptions.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedFlushOptions.java | 7 +++++-- .../utils/db/managed/ManagedIngestExternalFileOptions.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedLRUCache.java | 7 +++++-- .../apache/hadoop/hdds/utils/db/managed/ManagedObject.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedOptions.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedReadOptions.java | 7 +++++-- .../apache/hadoop/hdds/utils/db/managed/ManagedSlice.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedSstFileWriter.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedStatistics.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedWriteBatch.java | 7 +++++-- .../hadoop/hdds/utils/db/managed/ManagedWriteOptions.java | 7 +++++-- 16 files changed, 80 insertions(+), 32 deletions(-) diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedBloomFilter.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedBloomFilter.java index 32d08f46f229..8246d10820ba 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedBloomFilter.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedBloomFilter.java @@ -31,7 +31,10 @@ public class ManagedBloomFilter extends BloomFilter { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedColumnFamilyOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedColumnFamilyOptions.java index dc6a8409260c..055d4be9d9a3 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedColumnFamilyOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedColumnFamilyOptions.java @@ -79,8 +79,11 @@ public boolean isReused() { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } /** diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCompactRangeOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCompactRangeOptions.java index 44f4dba8f8ff..6ac4a2fa5b67 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCompactRangeOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCompactRangeOptions.java @@ -31,7 +31,10 @@ public class ManagedCompactRangeOptions extends CompactRangeOptions { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedDBOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedDBOptions.java index dd8e20cd9557..638739ff557e 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedDBOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedDBOptions.java @@ -31,7 +31,10 @@ public class ManagedDBOptions extends DBOptions { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedEnvOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedEnvOptions.java index d19ffbda4f1a..388f5abea397 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedEnvOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedEnvOptions.java @@ -31,7 +31,10 @@ public class ManagedEnvOptions extends EnvOptions { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedFlushOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedFlushOptions.java index 7a2049efda84..b151f836f962 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedFlushOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedFlushOptions.java @@ -31,7 +31,10 @@ public class ManagedFlushOptions extends FlushOptions { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedIngestExternalFileOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedIngestExternalFileOptions.java index 36e8e36ef081..ec68f42e748a 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedIngestExternalFileOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedIngestExternalFileOptions.java @@ -31,7 +31,10 @@ public class ManagedIngestExternalFileOptions extends IngestExternalFileOptions @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedLRUCache.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedLRUCache.java index db8ff7ddbdd2..8130361d79de 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedLRUCache.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedLRUCache.java @@ -35,7 +35,10 @@ public ManagedLRUCache(long capacity) { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java index cae72ab73078..522ca1ac3252 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedObject.java @@ -41,7 +41,10 @@ public T get() { @Override public void close() { - original.close(); - leakTracker.close(); + try { + original.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedOptions.java index 73ee224a1ad3..9cf0a46fd8b6 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedOptions.java @@ -31,7 +31,10 @@ public class ManagedOptions extends Options { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedReadOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedReadOptions.java index af5d3879e7b0..39d41482751a 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedReadOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedReadOptions.java @@ -31,7 +31,10 @@ public class ManagedReadOptions extends ReadOptions { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSlice.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSlice.java index b69dc5d70447..cff320fec5e2 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSlice.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSlice.java @@ -40,9 +40,12 @@ public synchronized long getNativeHandle() { @Override protected void disposeInternal() { - super.disposeInternal(); // RocksMutableObject.close is final thus can't be decorated. // So, we decorate disposeInternal instead to track closure. - leakTracker.close(); + try { + super.disposeInternal(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSstFileWriter.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSstFileWriter.java index a80b7b69a1c8..0c9f27dd5eb5 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSstFileWriter.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedSstFileWriter.java @@ -38,7 +38,10 @@ public ManagedSstFileWriter(EnvOptions envOptions, @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedStatistics.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedStatistics.java index ecd731dd6fae..8fc166bb6122 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedStatistics.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedStatistics.java @@ -31,7 +31,10 @@ public class ManagedStatistics extends Statistics { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteBatch.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteBatch.java index 28aadf95f38e..bda1af7d59bb 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteBatch.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteBatch.java @@ -38,7 +38,10 @@ public ManagedWriteBatch(byte[] data) { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } } diff --git a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteOptions.java b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteOptions.java index d226b3e03eae..4ce8bc037bb6 100644 --- a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteOptions.java +++ b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedWriteOptions.java @@ -31,7 +31,10 @@ public class ManagedWriteOptions extends WriteOptions { @Override public void close() { - super.close(); - leakTracker.close(); + try { + super.close(); + } finally { + leakTracker.close(); + } } }