This is an automated email from the ASF dual-hosted git repository.

duong 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 945e8bfdcf HDDS-9724. Provide stack trace for RocksObject allocation 
(#5631)
945e8bfdcf is described below

commit 945e8bfdcfe0be1fecbca3716d41305c4ae23d00
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Tue Nov 21 02:11:19 2023 +0100

    HDDS-9724. Provide stack trace for RocksObject allocation (#5631)
---
 .../hdds/utils/db/managed/ManagedBloomFilter.java      | 11 ++++++++++-
 .../hdds/utils/db/managed/ManagedCheckpoint.java       |  2 +-
 .../utils/db/managed/ManagedColumnFamilyOptions.java   | 18 ++++++++++++++----
 .../utils/db/managed/ManagedCompactRangeOptions.java   | 11 ++++++++++-
 .../hadoop/hdds/utils/db/managed/ManagedDBOptions.java | 11 ++++++++++-
 .../hdds/utils/db/managed/ManagedEnvOptions.java       | 12 +++++++++++-
 .../hdds/utils/db/managed/ManagedFlushOptions.java     | 11 ++++++++++-
 .../db/managed/ManagedIngestExternalFileOptions.java   | 11 ++++++++++-
 .../hadoop/hdds/utils/db/managed/ManagedLRUCache.java  | 12 +++++++++++-
 .../hadoop/hdds/utils/db/managed/ManagedObject.java    |  3 +++
 .../hadoop/hdds/utils/db/managed/ManagedOptions.java   | 11 ++++++++++-
 .../hdds/utils/db/managed/ManagedReadOptions.java      | 18 ++++++++----------
 .../hadoop/hdds/utils/db/managed/ManagedRocksDB.java   |  2 +-
 .../hdds/utils/db/managed/ManagedRocksObjectUtils.java |  6 +-----
 .../hadoop/hdds/utils/db/managed/ManagedSlice.java     |  8 ++++----
 .../hdds/utils/db/managed/ManagedSstFileWriter.java    | 12 +++++++++++-
 .../hdds/utils/db/managed/ManagedStatistics.java       | 12 +++++++++++-
 .../hdds/utils/db/managed/ManagedWriteBatch.java       | 11 ++++++++++-
 .../hdds/utils/db/managed/ManagedWriteOptions.java     | 16 +++++++++++-----
 19 files changed, 157 insertions(+), 41 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 bf153cf823..9e7bad651f 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
@@ -20,14 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.BloomFilter;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed BloomFilter.
  */
 public class ManagedBloomFilter extends BloomFilter {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
diff --git 
a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCheckpoint.java
 
b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCheckpoint.java
index e2f0179588..884a0d9387 100644
--- 
a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCheckpoint.java
+++ 
b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedCheckpoint.java
@@ -20,7 +20,7 @@ package org.apache.hadoop.hdds.utils.db.managed;
 import org.rocksdb.Checkpoint;
 
 /**
- * Managed RocksIterator.
+ * Managed {@link Checkpoint}.
  */
 public class ManagedCheckpoint extends ManagedObject<Checkpoint> {
   public ManagedCheckpoint(Checkpoint original) {
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 577e0364d5..39ee7b0ce7 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
@@ -21,13 +21,19 @@ package org.apache.hadoop.hdds.utils.db.managed;
 import org.rocksdb.ColumnFamilyOptions;
 import org.rocksdb.TableFormatConfig;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed ColumnFamilyOptions.
  */
 public class ManagedColumnFamilyOptions extends ColumnFamilyOptions {
-  public ManagedColumnFamilyOptions() {
-    super();
-  }
+
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
 
   /**
    * Indicate if this ColumnFamilyOptions is intentionally used across RockDB
@@ -35,6 +41,10 @@ public class ManagedColumnFamilyOptions extends 
ColumnFamilyOptions {
    */
   private boolean reused = false;
 
+  public ManagedColumnFamilyOptions() {
+    super();
+  }
+
   public ManagedColumnFamilyOptions(ColumnFamilyOptions columnFamilyOptions) {
     super(columnFamilyOptions);
   }
@@ -76,7 +86,7 @@ public class ManagedColumnFamilyOptions extends 
ColumnFamilyOptions {
 
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 
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 69379e00fa..6f7da30cdb 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
@@ -20,14 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.CompactRangeOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed CompactRangeOptions.
  */
 public class ManagedCompactRangeOptions extends CompactRangeOptions {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 7c412b7459..a66a04eae9 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
@@ -20,14 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.DBOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed DBOptions.
  */
 public class ManagedDBOptions extends DBOptions {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 9103e4cfb5..38d6f95ce7 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
@@ -20,13 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.EnvOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed EnvOptions.
  */
 public class ManagedEnvOptions extends EnvOptions {
+
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 44fae0bf8b..8801f7d241 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
@@ -20,14 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.FlushOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed FlushOptions.
  */
 public class ManagedFlushOptions extends FlushOptions {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 2e9ec1dec6..94b34e20d2 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
@@ -20,15 +20,24 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.IngestExternalFileOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed IngestExternalFileOptions.
  */
 public class ManagedIngestExternalFileOptions extends
     IngestExternalFileOptions {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 28fe6e95a4..8bf9147c15 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
@@ -20,17 +20,27 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.LRUCache;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed LRUCache.
  */
 public class ManagedLRUCache extends LRUCache {
+
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   public ManagedLRUCache(long capacity) {
     super(capacity);
   }
 
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 8093882a1d..0ab87f156e 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
@@ -20,6 +20,8 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.RocksObject;
 
+import javax.annotation.Nullable;
+
 import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
 
 /**
@@ -29,6 +31,7 @@ import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.fo
 class ManagedObject<T extends RocksObject> implements AutoCloseable {
   private final T original;
 
+  @Nullable
   private final StackTraceElement[] elements;
 
   ManagedObject(T original) {
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 6afbc78675..4ae96e1b76 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
@@ -20,14 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.Options;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed Options.
  */
 public class ManagedOptions extends Options {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 4b445fa36f..a281722d24 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
@@ -20,26 +20,24 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.ReadOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
 import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
 
 /**
- * Managed WriteBatch.
+ * Managed {@link ReadOptions}.
  */
 public class ManagedReadOptions extends ReadOptions {
 
-  private final StackTraceElement[] elements;
-
-  public ManagedReadOptions() {
-    this.elements = ManagedRocksObjectUtils.getStackTrace();
-  }
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
 
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this, getStackTrace());
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 
-  private String getStackTrace() {
-    return formatStackTrace(elements);
-  }
 }
diff --git 
a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksDB.java
 
b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksDB.java
index a2bb1d0f07..5a5a577351 100644
--- 
a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksDB.java
+++ 
b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksDB.java
@@ -33,7 +33,7 @@ import java.time.Duration;
 import java.util.List;
 
 /**
- * Managed BloomFilter.
+ * Managed {@link RocksDB}.
  */
 public class ManagedRocksDB extends ManagedObject<RocksDB> {
   public static final Class<RocksDB> ORIGINAL_CLASS = RocksDB.class;
diff --git 
a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksObjectUtils.java
 
b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksObjectUtils.java
index 6adf147292..b32f1111cb 100644
--- 
a/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksObjectUtils.java
+++ 
b/hadoop-hdds/managed-rocksdb/src/main/java/org/apache/hadoop/hdds/utils/db/managed/ManagedRocksObjectUtils.java
@@ -44,10 +44,6 @@ public final class ManagedRocksObjectUtils {
   private static final Duration POLL_DELAY_DURATION = Duration.ZERO;
   private static final Duration POLL_INTERVAL_DURATION = 
Duration.ofMillis(100);
 
-  static void assertClosed(RocksObject rocksObject) {
-    assertClosed(rocksObject, null);
-  }
-
   public static void assertClosed(ManagedObject<?> object) {
     assertClosed(object.get(), object.getStackTrace());
   }
@@ -75,7 +71,7 @@ public final class ManagedRocksObjectUtils {
     return HddsUtils.getStackTrace(LOG);
   }
 
-  static String formatStackTrace(StackTraceElement[] elements) {
+  static String formatStackTrace(@Nullable StackTraceElement[] elements) {
     return HddsUtils.formatStackTrace(elements, 3);
   }
 
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 19d702253e..2de2031fb9 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
@@ -20,6 +20,8 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.Slice;
 
+import javax.annotation.Nullable;
+
 import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
 
 /**
@@ -27,6 +29,7 @@ import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.fo
  */
 public class ManagedSlice extends Slice {
 
+  @Nullable
   private final StackTraceElement[] elements;
 
   public ManagedSlice(byte[] var1) {
@@ -43,12 +46,9 @@ public class ManagedSlice extends Slice {
   protected void finalize() throws Throwable {
     ManagedRocksObjectMetrics.INSTANCE.increaseManagedObject();
     if (isOwningHandle()) {
-      ManagedRocksObjectUtils.reportLeak(this, getStackTrace());
+      ManagedRocksObjectUtils.reportLeak(this, formatStackTrace(elements));
     }
     super.finalize();
   }
 
-  private String getStackTrace() {
-    return formatStackTrace(elements);
-  }
 }
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 f2cf267fa7..e6fdcbc2ed 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
@@ -22,10 +22,20 @@ import org.rocksdb.EnvOptions;
 import org.rocksdb.Options;
 import org.rocksdb.SstFileWriter;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed SstFileWriter.
  */
 public class ManagedSstFileWriter extends SstFileWriter {
+
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   public ManagedSstFileWriter(EnvOptions envOptions,
                               Options options) {
     super(envOptions, options);
@@ -33,7 +43,7 @@ public class ManagedSstFileWriter extends SstFileWriter {
 
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 f7b6ae0b0c..4cbd6f9828 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
@@ -20,13 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.Statistics;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed Statistics.
  */
 public class ManagedStatistics extends Statistics {
+
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 44a50dd42d..51c9bcc0df 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
@@ -20,11 +20,20 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.WriteBatch;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
  * Managed WriteBatch.
  */
 public class ManagedWriteBatch extends WriteBatch {
 
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
+
   public ManagedWriteBatch() {
     super();
   }
@@ -35,7 +44,7 @@ public class ManagedWriteBatch extends WriteBatch {
 
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }
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 88bd6d2bd2..7ba05a0ee6 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
@@ -20,17 +20,23 @@ package org.apache.hadoop.hdds.utils.db.managed;
 
 import org.rocksdb.WriteOptions;
 
+import javax.annotation.Nullable;
+
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.assertClosed;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.formatStackTrace;
+import static 
org.apache.hadoop.hdds.utils.db.managed.ManagedRocksObjectUtils.getStackTrace;
+
 /**
- * Managed WriteBatch.
+ * Managed {@link WriteOptions}.
  */
 public class ManagedWriteOptions extends WriteOptions {
-  public ManagedWriteOptions() {
-    super();
-  }
+
+  @Nullable
+  private final StackTraceElement[] elements = getStackTrace();
 
   @Override
   protected void finalize() throws Throwable {
-    ManagedRocksObjectUtils.assertClosed(this);
+    assertClosed(this, formatStackTrace(elements));
     super.finalize();
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to