You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by sh...@apache.org on 2023/03/06 08:56:11 UTC

[bookkeeper] branch master updated: BP61: revert BP-59 to release ByteBuf using ReferenceCountUtil.release() instead of ReferenceCountUtil.safeRelease() (#3796)

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

shoothzj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new bf5a6aabb6 BP61: revert BP-59 to release ByteBuf using ReferenceCountUtil.release() instead of ReferenceCountUtil.safeRelease() (#3796)
bf5a6aabb6 is described below

commit bf5a6aabb69d4898a261480a867b0a15416a6b88
Author: Hang Chen <ch...@apache.org>
AuthorDate: Mon Mar 6 16:55:54 2023 +0800

    BP61: revert BP-59 to release ByteBuf using ReferenceCountUtil.release() instead of ReferenceCountUtil.safeRelease() (#3796)
---
 .../impl/ByteBufAllocatorBuilderTest.java          | 12 +++++------
 .../org/apache/bookkeeper/bookie/BookieImpl.java   | 10 ++++-----
 .../apache/bookkeeper/bookie/BufferedChannel.java  |  2 +-
 .../bookkeeper/bookie/DefaultEntryLogger.java      | 10 ++++-----
 .../bookie/InterleavedLedgerStorage.java           |  2 +-
 .../java/org/apache/bookkeeper/bookie/Journal.java |  4 ++--
 .../bookie/datainteg/EntryCopierImpl.java          |  2 +-
 .../bookie/storage/directentrylogger/Buffer.java   |  2 +-
 .../directentrylogger/DirectEntryLogger.java       |  2 +-
 .../storage/directentrylogger/DirectReader.java    |  6 +++---
 .../storage/directentrylogger/LogMetadata.java     |  8 ++++----
 .../storage/directentrylogger/LogReaderScan.java   |  2 +-
 .../ldb/SingleDirectoryDbLedgerStorage.java        |  4 ++--
 .../apache/bookkeeper/proto/BookieClientImpl.java  |  4 ++--
 .../apache/bookkeeper/proto/BookieProtocol.java    |  4 ++--
 .../bookkeeper/proto/PerChannelBookieClient.java   |  4 ++--
 .../bookkeeper/proto/checksum/DigestManager.java   |  2 +-
 .../org/apache/bookkeeper/util/ByteBufList.java    |  2 +-
 .../bookkeeper/bookie/BookieJournalTest.java       | 10 ++++-----
 .../bookie/CheckpointOnNewLedgersTest.java         |  4 ++--
 .../directentrylogger/TestDirectEntryLogger.java   |  8 ++++----
 .../bookie/storage/ldb/DbLedgerStorageTest.java    | 12 +++++------
 .../bookie/storage/ldb/WriteCacheTest.java         |  4 ++--
 .../apache/bookkeeper/util/ByteBufListTest.java    |  8 ++++----
 .../clients/impl/kv/PByteBufSimpleTableImpl.java   | 24 +++++++++++-----------
 .../clients/impl/kv/PByteBufTableRangeImpl.java    | 24 +++++++++++-----------
 .../common/router/AbstractHashRouter.java          |  2 +-
 .../distributedlog/io/TestCompressionCodec.java    | 12 +++++------
 .../org/apache/bookkeeper/client/LedgerReader.java |  2 +-
 .../org/apache/distributedlog/EnvelopedEntry.java  |  2 +-
 .../distributedlog/EnvelopedEntryReader.java       |  2 +-
 .../distributedlog/EnvelopedEntryWriter.java       |  8 ++++----
 .../impl/logsegment/BKLogSegmentEntryReader.java   |  2 +-
 .../distributedlog/tools/DistributedLogTool.java   |  6 +++---
 .../java/org/apache/distributedlog/TestEntry.java  |  8 ++++----
 .../distributedlog/EnvelopedRecordSetReader.java   |  8 ++++----
 .../distributedlog/EnvelopedRecordSetWriter.java   |  8 ++++----
 .../java/org/apache/distributedlog/LogRecord.java  |  2 +-
 .../journal/AbstractStateStoreWithJournal.java     |  4 ++--
 .../bookkeeper/statelib/impl/kv/KVUtils.java       |  2 +-
 .../statelib/impl/kv/RocksdbKVAsyncStore.java      |  4 ++--
 .../bookkeeper/statelib/impl/mvcc/MVCCRecord.java  |  4 ++--
 .../statelib/impl/mvcc/MVCCRecordCoder.java        |  2 +-
 .../statelib/impl/mvcc/MVCCStoreImpl.java          |  2 +-
 .../routing/RoutingHeaderProxyInterceptor.java     |  2 +-
 .../tools/perf/journal/JournalWriter.java          |  2 +-
 .../bookkeeper/tools/perf/table/IncrementTask.java |  2 +-
 .../bookkeeper/tools/perf/table/WriteTask.java     |  4 ++--
 .../stream/cli/commands/table/DelCommand.java      |  2 +-
 49 files changed, 134 insertions(+), 134 deletions(-)

diff --git a/bookkeeper-common-allocator/src/test/java/org/apache/bookkeeper/common/allocator/impl/ByteBufAllocatorBuilderTest.java b/bookkeeper-common-allocator/src/test/java/org/apache/bookkeeper/common/allocator/impl/ByteBufAllocatorBuilderTest.java
index 22918890cf..6f2538d6c8 100644
--- a/bookkeeper-common-allocator/src/test/java/org/apache/bookkeeper/common/allocator/impl/ByteBufAllocatorBuilderTest.java
+++ b/bookkeeper-common-allocator/src/test/java/org/apache/bookkeeper/common/allocator/impl/ByteBufAllocatorBuilderTest.java
@@ -230,17 +230,17 @@ public class ByteBufAllocatorBuilderTest {
         ByteBuf buf1 = alloc.buffer();
         assertEquals(pooledAlloc, buf1.alloc());
         assertFalse(buf1.hasArray());
-        ReferenceCountUtil.safeRelease(buf1);
+        ReferenceCountUtil.release(buf1);
 
         ByteBuf buf2 = alloc.directBuffer();
         assertEquals(pooledAlloc, buf2.alloc());
         assertFalse(buf2.hasArray());
-        ReferenceCountUtil.safeRelease(buf2);
+        ReferenceCountUtil.release(buf2);
 
         ByteBuf buf3 = alloc.heapBuffer();
         assertEquals(pooledAlloc, buf3.alloc());
         assertTrue(buf3.hasArray());
-        ReferenceCountUtil.safeRelease(buf3);
+        ReferenceCountUtil.release(buf3);
     }
 
     @Test
@@ -256,14 +256,14 @@ public class ByteBufAllocatorBuilderTest {
         assertEquals(PooledByteBufAllocator.class, buf1.alloc().getClass());
         assertEquals(3, ((PooledByteBufAllocator) buf1.alloc()).metric().numDirectArenas());
         assertFalse(buf1.hasArray());
-        ReferenceCountUtil.safeRelease(buf1);
+        ReferenceCountUtil.release(buf1);
 
         ByteBuf buf2 = alloc.directBuffer();
         assertFalse(buf2.hasArray());
-        ReferenceCountUtil.safeRelease(buf2);
+        ReferenceCountUtil.release(buf2);
 
         ByteBuf buf3 = alloc.heapBuffer();
         assertTrue(buf3.hasArray());
-        ReferenceCountUtil.safeRelease(buf3);
+        ReferenceCountUtil.release(buf3);
     }
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java
index cd4179c416..0db230d9d3 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BookieImpl.java
@@ -941,7 +941,7 @@ public class BookieImpl extends BookieCriticalThread implements Bookie {
                     getJournal(ledgerId).logAddEntry(
                             masterKeyEntry, false /* ackBeforeSync */, new NopWriteCallback(), null);
                 } finally {
-                    ReferenceCountUtil.safeRelease(masterKeyEntry);
+                    ReferenceCountUtil.release(masterKeyEntry);
                 }
             }
         }
@@ -988,7 +988,7 @@ public class BookieImpl extends BookieCriticalThread implements Bookie {
                 bookieStats.getAddBytesStats().registerFailedValue(entrySize);
             }
 
-            ReferenceCountUtil.safeRelease(entry);
+            ReferenceCountUtil.release(entry);
         }
     }
 
@@ -1019,9 +1019,9 @@ public class BookieImpl extends BookieCriticalThread implements Bookie {
             stateManager.transitionToReadOnlyMode();
             throw new IOException(e);
         } finally {
-            ReferenceCountUtil.safeRelease(entry);
+            ReferenceCountUtil.release(entry);
             if (explicitLACEntry != null) {
-                ReferenceCountUtil.safeRelease(explicitLACEntry);
+                ReferenceCountUtil.release(explicitLACEntry);
             }
         }
     }
@@ -1082,7 +1082,7 @@ public class BookieImpl extends BookieCriticalThread implements Bookie {
                 bookieStats.getAddBytesStats().registerFailedValue(entrySize);
             }
 
-            ReferenceCountUtil.safeRelease(entry);
+            ReferenceCountUtil.release(entry);
         }
     }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BufferedChannel.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BufferedChannel.java
index 67c6fb6a06..3197165827 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BufferedChannel.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/BufferedChannel.java
@@ -101,7 +101,7 @@ public class BufferedChannel extends BufferedReadChannel implements Closeable {
         if (closed) {
             return;
         }
-        ReferenceCountUtil.safeRelease(writeBuffer);
+        ReferenceCountUtil.release(writeBuffer);
         fileChannel.close();
         closed = true;
     }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/DefaultEntryLogger.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/DefaultEntryLogger.java
index 12149dcd56..b6321c6f38 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/DefaultEntryLogger.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/DefaultEntryLogger.java
@@ -191,7 +191,7 @@ public class DefaultEntryLogger implements EntryLogger {
                     throw e;
                 }
             } finally {
-                ReferenceCountUtil.safeRelease(serializedMap);
+                ReferenceCountUtil.release(serializedMap);
             }
             // Flush the ledger's map out before we write the header.
             // Otherwise the header might point to something that is not fully
@@ -843,7 +843,7 @@ public class DefaultEntryLogger implements EntryLogger {
         ByteBuf data = allocator.buffer(entrySize, entrySize);
         int rc = readFromLogChannel(entryLogId, fc, data, pos);
         if (rc != entrySize) {
-            ReferenceCountUtil.safeRelease(data);
+            ReferenceCountUtil.release(data);
             throw new IOException("Bad entry read from log file id: " + entryLogId,
                     new EntryLookupException("Short read for " + ledgerId + "@"
                                               + entryId + " in " + entryLogId + "@"
@@ -877,7 +877,7 @@ public class DefaultEntryLogger implements EntryLogger {
             int ledgersCount = headers.readInt();
             return new Header(headerVersion, ledgersMapOffset, ledgersCount);
         } finally {
-            ReferenceCountUtil.safeRelease(headers);
+            ReferenceCountUtil.release(headers);
         }
     }
 
@@ -1026,7 +1026,7 @@ public class DefaultEntryLogger implements EntryLogger {
                 pos += entrySize;
             }
         } finally {
-            ReferenceCountUtil.safeRelease(data);
+            ReferenceCountUtil.release(data);
         }
     }
 
@@ -1118,7 +1118,7 @@ public class DefaultEntryLogger implements EntryLogger {
         } catch (IndexOutOfBoundsException e) {
             throw new IOException(e);
         } finally {
-            ReferenceCountUtil.safeRelease(ledgersMap);
+            ReferenceCountUtil.release(ledgersMap);
         }
 
         if (meta.getLedgersMap().size() != header.ledgersCount) {
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/InterleavedLedgerStorage.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/InterleavedLedgerStorage.java
index abc6d96213..c6e6010672 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/InterleavedLedgerStorage.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/InterleavedLedgerStorage.java
@@ -370,7 +370,7 @@ public class InterleavedLedgerStorage implements CompactableLedgerStorage, Entry
                     lac = bb.readLong();
                     lac = ledgerCache.updateLastAddConfirmed(ledgerId, lac);
                 } finally {
-                    ReferenceCountUtil.safeRelease(bb);
+                    ReferenceCountUtil.release(bb);
                 }
             }
         }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java
index d14d5cb8a5..eff1673edb 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Journal.java
@@ -1165,7 +1165,7 @@ public class Journal extends BookieCriticalThread implements CheckpointSource {
                      * (METAENTRY_ID_LEDGER_EXPLICITLAC) to Journal.
                      */
                     memoryLimitController.releaseMemory(qe.entry.readableBytes());
-                    ReferenceCountUtil.safeRelease(qe.entry);
+                    ReferenceCountUtil.release(qe.entry);
                 } else if (qe.entryId != BookieImpl.METAENTRY_ID_FORCE_LEDGER) {
                     int entrySize = qe.entry.readableBytes();
                     journalStats.getJournalWriteBytes().addCount(entrySize);
@@ -1181,7 +1181,7 @@ public class Journal extends BookieCriticalThread implements CheckpointSource {
                     bc.write(lenBuff);
                     bc.write(qe.entry);
                     memoryLimitController.releaseMemory(qe.entry.readableBytes());
-                    ReferenceCountUtil.safeRelease(qe.entry);
+                    ReferenceCountUtil.release(qe.entry);
                 }
 
                 toFlush.add(qe);
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/datainteg/EntryCopierImpl.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/datainteg/EntryCopierImpl.java
index 2a8afed0e6..a9768b32f1 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/datainteg/EntryCopierImpl.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/datainteg/EntryCopierImpl.java
@@ -143,7 +143,7 @@ public class EntryCopierImpl implements EntryCopier {
                         } catch (Throwable t) {
                             promise.completeExceptionally(t);
                         } finally {
-                            ReferenceCountUtil.safeRelease(buffer);
+                            ReferenceCountUtil.release(buffer);
                         }
                     }
                 });
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Buffer.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Buffer.java
index 81f41df064..2af6a17eb0 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Buffer.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/Buffer.java
@@ -243,7 +243,7 @@ class Buffer {
      * Free the memory that backs this buffer.
      */
     void free() {
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
         buffer = null;
         byteBuffer = null;
     }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
index b8c3a5cad2..3b211b54e8 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectEntryLogger.java
@@ -456,7 +456,7 @@ public class DirectEntryLogger implements EntryLogger {
             writer.writeAt(0, buf);
             writer.position(buf.capacity());
         } finally {
-            ReferenceCountUtil.safeRelease(buf);
+            ReferenceCountUtil.release(buf);
         }
         return writer;
     }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectReader.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectReader.java
index 55abd12a11..36d0b263f8 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectReader.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/DirectReader.java
@@ -91,7 +91,7 @@ class DirectReader implements LogReader {
         try {
             readIntoBufferAt(buf, offset, size);
         } catch (IOException e) {
-            ReferenceCountUtil.safeRelease(buf);
+            ReferenceCountUtil.release(buf);
             throw e;
         }
 
@@ -121,7 +121,7 @@ class DirectReader implements LogReader {
                 try {
                     return intBuf.getInt(0);
                 } finally {
-                    ReferenceCountUtil.safeRelease(intBuf);
+                    ReferenceCountUtil.release(intBuf);
                 }
             }
         }
@@ -138,7 +138,7 @@ class DirectReader implements LogReader {
                 try {
                     return longBuf.getLong(0);
                 } finally {
-                    ReferenceCountUtil.safeRelease(longBuf);
+                    ReferenceCountUtil.release(longBuf);
                 }
             }
         }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogMetadata.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogMetadata.java
index 7f916dad7a..7cb40e4d8d 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogMetadata.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogMetadata.java
@@ -108,14 +108,14 @@ class LogMetadata {
                 throw e;
             }
         } finally {
-            ReferenceCountUtil.safeRelease(serializedMap);
+            ReferenceCountUtil.release(serializedMap);
         }
         ByteBuf buf = allocator.buffer(Buffer.ALIGNMENT);
         try {
             Header.writeHeader(buf, ledgerMapOffset, numberOfLedgers);
             writer.writeAt(0, buf);
         } finally {
-            ReferenceCountUtil.safeRelease(buf);
+            ReferenceCountUtil.release(buf);
         }
         writer.flush();
     }
@@ -178,7 +178,7 @@ class LogMetadata {
                                               .toString());
                     }
                 } finally {
-                    ReferenceCountUtil.safeRelease(ledgerMapBuffer);
+                    ReferenceCountUtil.release(ledgerMapBuffer);
                 }
             }
             return meta;
@@ -186,7 +186,7 @@ class LogMetadata {
             throw new IOException(exMsg("Error reading index").kv("logId", reader.logId())
                                   .kv("reason", ioe.getMessage()).toString(), ioe);
         } finally {
-            ReferenceCountUtil.safeRelease(header);
+            ReferenceCountUtil.release(header);
         }
     }
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogReaderScan.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogReaderScan.java
index e1421d6526..fdc9a0662f 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogReaderScan.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/directentrylogger/LogReaderScan.java
@@ -56,7 +56,7 @@ class LogReaderScan {
                 offset += entrySize;
             }
         } finally {
-            ReferenceCountUtil.safeRelease(entry);
+            ReferenceCountUtil.release(entry);
         }
     }
 }
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
index 03e29f8c8b..565732d428 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/SingleDirectoryDbLedgerStorage.java
@@ -652,7 +652,7 @@ public class SingleDirectoryDbLedgerStorage implements CompactableLedgerStorage
                     currentEntryLocation += 4 + entry.readableBytes();
                     currentEntryLogId = currentEntryLocation >> 32;
                 } finally {
-                    ReferenceCountUtil.safeRelease(entry);
+                    ReferenceCountUtil.release(entry);
                 }
             }
         } catch (Exception e) {
@@ -927,7 +927,7 @@ public class SingleDirectoryDbLedgerStorage implements CompactableLedgerStorage
                 lac = bb.readLong();
                 lac = getOrAddLedgerInfo(ledgerId).setLastAddConfirmed(lac);
             } finally {
-                ReferenceCountUtil.safeRelease(bb);
+                ReferenceCountUtil.release(bb);
             }
         }
         return lac;
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClientImpl.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClientImpl.java
index 43374776d4..cd11bc17d7 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClientImpl.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieClientImpl.java
@@ -270,7 +270,7 @@ public class BookieClientImpl implements BookieClient, PerChannelBookieClientFac
                 pcbc.writeLac(ledgerId, masterKey, lac, toSend, cb, ctx);
             }
 
-            ReferenceCountUtil.safeRelease(toSend);
+            ReferenceCountUtil.release(toSend);
         }, ledgerId, useV3Enforced);
     }
 
@@ -398,7 +398,7 @@ public class BookieClientImpl implements BookieClient, PerChannelBookieClientFac
                               toSend, cb, ctx, options, allowFastFail, writeFlags);
             }
 
-            ReferenceCountUtil.safeRelease(toSend);
+            ReferenceCountUtil.release(toSend);
             recycle();
         }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java
index feeb2499c8..89654449aa 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieProtocol.java
@@ -298,7 +298,7 @@ public interface BookieProtocol {
             ledgerId = -1;
             entryId = -1;
             masterKey = null;
-            ReferenceCountUtil.safeRelease(data);
+            ReferenceCountUtil.release(data);
             data = null;
             recyclerHandle.recycle(this);
         }
@@ -333,7 +333,7 @@ public interface BookieProtocol {
         }
 
         void release() {
-            ReferenceCountUtil.safeRelease(data);
+            ReferenceCountUtil.release(data);
         }
 
         private final Handle<ParsedAddRequest> recyclerHandle;
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
index aea77fba29..47d5303bb3 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
@@ -837,7 +837,7 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
             // usually checked in writeAndFlush, but we have extra check
             // because we need to release toSend.
             errorOut(completionKey);
-            ReferenceCountUtil.safeRelease(toSend);
+            ReferenceCountUtil.release(toSend);
             return;
         } else {
             // addEntry times out on backpressure
@@ -1942,7 +1942,7 @@ public class PerChannelBookieClient extends ChannelInboundHandlerAdapter {
             handleReadResponse(readResponse.getLedgerId(),
                                readResponse.getEntryId(),
                                status, buffer, maxLAC, lacUpdateTimestamp);
-            ReferenceCountUtil.safeRelease(
+            ReferenceCountUtil.release(
                     buffer); // meaningless using unpooled, but client may expect to hold the last reference
         }
 
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/checksum/DigestManager.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/checksum/DigestManager.java
index 87fd58eebf..a97c301311 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/checksum/DigestManager.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/checksum/DigestManager.java
@@ -116,7 +116,7 @@ public abstract class DigestManager {
         final ByteBuf unwrapped = data.unwrap() != null && data.unwrap() instanceof CompositeByteBuf
                 ? data.unwrap() : data;
         ReferenceCountUtil.retain(unwrapped);
-        ReferenceCountUtil.safeRelease(data);
+        ReferenceCountUtil.release(data);
 
         if (unwrapped instanceof CompositeByteBuf) {
             CompositeByteBuf cbb = ((CompositeByteBuf) unwrapped);
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ByteBufList.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ByteBufList.java
index 3cd814f4df..3a0d7b2bde 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ByteBufList.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/ByteBufList.java
@@ -328,7 +328,7 @@ public class ByteBufList extends AbstractReferenceCounted {
                         ctx.write(bx.retainedDuplicate(), i == (buffersCount - 1) ? promise : ctx.voidPromise());
                     }
                 } finally {
-                    ReferenceCountUtil.safeRelease(b);
+                    ReferenceCountUtil.release(b);
                 }
             } else {
                 ctx.write(msg, promise);
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java
index d8f0a7a785..eeee8ca050 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieJournalTest.java
@@ -175,7 +175,7 @@ public class BookieJournalTest {
 
             fc.write(lenBuff);
             fc.write(packet.nioBuffer());
-            ReferenceCountUtil.safeRelease(packet);
+            ReferenceCountUtil.release(packet);
         }
     }
 
@@ -219,7 +219,7 @@ public class BookieJournalTest {
 
             bc.write(Unpooled.wrappedBuffer(lenBuff));
             bc.write(packet);
-            ReferenceCountUtil.safeRelease(packet);
+            ReferenceCountUtil.release(packet);
         }
         bc.flushAndForceWrite(false);
 
@@ -253,7 +253,7 @@ public class BookieJournalTest {
 
             bc.write(Unpooled.wrappedBuffer(lenBuff));
             bc.write(packet);
-            ReferenceCountUtil.safeRelease(packet);
+            ReferenceCountUtil.release(packet);
         }
         bc.flushAndForceWrite(false);
 
@@ -286,7 +286,7 @@ public class BookieJournalTest {
             lenBuff.flip();
             bc.write(Unpooled.wrappedBuffer(lenBuff));
             bc.write(packet);
-            ReferenceCountUtil.safeRelease(packet);
+            ReferenceCountUtil.release(packet);
         }
         // write fence key
         ByteBuf packet = generateFenceEntry(1);
@@ -334,7 +334,7 @@ public class BookieJournalTest {
             }
             bc.write(lenBuff);
             bc.write(packet);
-            ReferenceCountUtil.safeRelease(packet);
+            ReferenceCountUtil.release(packet);
             Journal.writePaddingBytes(jc, paddingBuff, JournalChannel.SECTOR_SIZE);
         }
         // write fence key
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CheckpointOnNewLedgersTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CheckpointOnNewLedgersTest.java
index 9f4193ee9d..be8ad075d5 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CheckpointOnNewLedgersTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/CheckpointOnNewLedgersTest.java
@@ -184,14 +184,14 @@ public class CheckpointOnNewLedgersTest {
             assertNotNull(entry);
             assertEquals(l2, entry.readLong());
             assertEquals((long) i, entry.readLong());
-            ReferenceCountUtil.safeRelease(entry);
+            ReferenceCountUtil.release(entry);
         }
 
         ByteBuf entry = newBookie.readEntry(l1, 0L);
         assertNotNull(entry);
         assertEquals(l1, entry.readLong());
         assertEquals(0L, entry.readLong());
-        ReferenceCountUtil.safeRelease(entry);
+        ReferenceCountUtil.release(entry);
         newBookie.shutdown();
     }
 
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
index 8b4c4a705b..73ae500a77 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/directentrylogger/TestDirectEntryLogger.java
@@ -139,15 +139,15 @@ public class TestDirectEntryLogger {
             ByteBuf e2read = elog.readEntry(ledgerId1, 2L, loc2);
             assertEntryEquals(e1read, e1);
             assertEntryEquals(e2read, e2);
-            ReferenceCountUtil.safeRelease(e1read);
-            ReferenceCountUtil.safeRelease(e2read);
+            ReferenceCountUtil.release(e1read);
+            ReferenceCountUtil.release(e2read);
 
             long loc3 = elog.addEntry(ledgerId1, e3.slice());
             elog.flush();
 
             ByteBuf e3read = elog.readEntry(ledgerId1, 3L, loc3);
             assertEntryEquals(e3read, e3);
-            ReferenceCountUtil.safeRelease(e3read);
+            ReferenceCountUtil.release(e3read);
         }
     }
 
@@ -200,7 +200,7 @@ public class TestDirectEntryLogger {
             }
             elog.flush();
             for (Long loc : locations) {
-                ReferenceCountUtil.safeRelease(elog.readEntry(loc));
+                ReferenceCountUtil.release(elog.readEntry(loc));
             }
             assertThat(outstandingReaders.get(), equalTo(maxCachedReaders));
         } finally {
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
index 873b823fd9..4efdf06edb 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
@@ -358,7 +358,7 @@ public class DbLedgerStorageTest {
 
         ByteBuf res = storage.getEntry(1, 2);
         assertEquals(entry2, res);
-        ReferenceCountUtil.safeRelease(res);
+        ReferenceCountUtil.release(res);
 
         storage.flush();
 
@@ -371,7 +371,7 @@ public class DbLedgerStorageTest {
 
         res = storage.getEntry(1, 2);
         assertEquals(entry2, res);
-        ReferenceCountUtil.safeRelease(res);
+        ReferenceCountUtil.release(res);
 
         ByteBuf entry1 = Unpooled.buffer(1024);
         entry1.writeLong(1); // ledger id
@@ -382,21 +382,21 @@ public class DbLedgerStorageTest {
 
         res = storage.getEntry(1, 1);
         assertEquals(entry1, res);
-        ReferenceCountUtil.safeRelease(res);
+        ReferenceCountUtil.release(res);
 
         res = storage.getEntry(1, 2);
         assertEquals(entry2, res);
-        ReferenceCountUtil.safeRelease(res);
+        ReferenceCountUtil.release(res);
 
         storage.flush();
 
         res = storage.getEntry(1, 1);
         assertEquals(entry1, res);
-        ReferenceCountUtil.safeRelease(res);
+        ReferenceCountUtil.release(res);
 
         res = storage.getEntry(1, 2);
         assertEquals(entry2, res);
-        ReferenceCountUtil.safeRelease(res);
+        ReferenceCountUtil.release(res);
     }
 
     @Test
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/WriteCacheTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/WriteCacheTest.java
index bd622d6566..9ac84984b6 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/WriteCacheTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/WriteCacheTest.java
@@ -80,7 +80,7 @@ public class WriteCacheTest {
         assertEquals(0, cache.count());
         assertEquals(0, cache.size());
 
-        ReferenceCountUtil.safeRelease(entry1);
+        ReferenceCountUtil.release(entry1);
         cache.close();
     }
 
@@ -121,7 +121,7 @@ public class WriteCacheTest {
 
         assertEquals(0, findCount.get());
 
-        ReferenceCountUtil.safeRelease(entry);
+        ReferenceCountUtil.release(entry);
         cache.close();
     }
 
diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/ByteBufListTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/ByteBufListTest.java
index bd077c3e54..ac7aca7722 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/ByteBufListTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/util/ByteBufListTest.java
@@ -301,25 +301,25 @@ public class ByteBufListTest {
 
         @Override
         public ChannelFuture write(Object msg) {
-            ReferenceCountUtil.safeRelease(msg);
+            ReferenceCountUtil.release(msg);
             return null;
         }
 
         @Override
         public ChannelFuture write(Object msg, ChannelPromise promise) {
-            ReferenceCountUtil.safeRelease(msg);
+            ReferenceCountUtil.release(msg);
             return null;
         }
 
         @Override
         public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) {
-            ReferenceCountUtil.safeRelease(msg);
+            ReferenceCountUtil.release(msg);
             return null;
         }
 
         @Override
         public ChannelFuture writeAndFlush(Object msg) {
-            ReferenceCountUtil.safeRelease(msg);
+            ReferenceCountUtil.release(msg);
             return null;
         }
 
diff --git a/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufSimpleTableImpl.java b/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufSimpleTableImpl.java
index 75b847a8b6..2ae5ef2e22 100644
--- a/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufSimpleTableImpl.java
+++ b/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufSimpleTableImpl.java
@@ -152,10 +152,10 @@ public class PByteBufSimpleTableImpl
         ))
         .thenApply(response -> KvUtils.newRangeResult(response, resultFactory, kvFactory))
         .whenComplete((value, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
             if (null != option.endKey()) {
-                ReferenceCountUtil.safeRelease(option.endKey());
+                ReferenceCountUtil.release(option.endKey());
             }
         });
     }
@@ -176,9 +176,9 @@ public class PByteBufSimpleTableImpl
             ))
             .thenApply(response -> KvUtils.newPutResult(response, resultFactory, kvFactory))
             .whenComplete((ignored, cause) -> {
-                ReferenceCountUtil.safeRelease(pKey);
-                ReferenceCountUtil.safeRelease(lKey);
-                ReferenceCountUtil.safeRelease(value);
+                ReferenceCountUtil.release(pKey);
+                ReferenceCountUtil.release(lKey);
+                ReferenceCountUtil.release(value);
             });
     }
 
@@ -200,10 +200,10 @@ public class PByteBufSimpleTableImpl
         ))
         .thenApply(response -> KvUtils.newDeleteResult(response, resultFactory, kvFactory))
         .whenComplete((ignored, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
             if (null != option.endKey()) {
-                ReferenceCountUtil.safeRelease(option.endKey());
+                ReferenceCountUtil.release(option.endKey());
             }
         });
     }
@@ -223,8 +223,8 @@ public class PByteBufSimpleTableImpl
         ))
         .thenApply(response -> KvUtils.newIncrementResult(response, resultFactory, kvFactory))
         .whenComplete((ignored, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
         });
     }
 
@@ -298,7 +298,7 @@ public class PByteBufSimpleTableImpl
             ))
             .thenApply(response -> KvUtils.newKvTxnResult(response, resultFactory, kvFactory))
             .whenComplete((ignored, cause) -> {
-                ReferenceCountUtil.safeRelease(pKey);
+                ReferenceCountUtil.release(pKey);
                 for (AutoCloseable resource : resourcesToRelease) {
                     closeResource(resource);
                 }
diff --git a/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufTableRangeImpl.java b/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufTableRangeImpl.java
index 18ceee6f37..a82e2f8fce 100644
--- a/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufTableRangeImpl.java
+++ b/stream/clients/java/kv/src/main/java/org/apache/bookkeeper/clients/impl/kv/PByteBufTableRangeImpl.java
@@ -104,10 +104,10 @@ class PByteBufTableRangeImpl implements PTable<ByteBuf, ByteBuf> {
             executor,
             backoffPolicy
         ).process().whenComplete((value, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
             if (null != option.endKey()) {
-                ReferenceCountUtil.safeRelease(option.endKey());
+                ReferenceCountUtil.release(option.endKey());
             }
         });
     }
@@ -129,9 +129,9 @@ class PByteBufTableRangeImpl implements PTable<ByteBuf, ByteBuf> {
             executor,
             backoffPolicy
         ).process().whenComplete((ignored, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
-            ReferenceCountUtil.safeRelease(value);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
+            ReferenceCountUtil.release(value);
         });
     }
 
@@ -153,10 +153,10 @@ class PByteBufTableRangeImpl implements PTable<ByteBuf, ByteBuf> {
             executor,
             backoffPolicy
         ).process().whenComplete((ignored, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
             if (null != option.endKey()) {
-                ReferenceCountUtil.safeRelease(option.endKey());
+                ReferenceCountUtil.release(option.endKey());
             }
         });
     }
@@ -177,8 +177,8 @@ class PByteBufTableRangeImpl implements PTable<ByteBuf, ByteBuf> {
             executor,
             backoffPolicy
         ).process().whenComplete((ignored, cause) -> {
-            ReferenceCountUtil.safeRelease(pKey);
-            ReferenceCountUtil.safeRelease(lKey);
+            ReferenceCountUtil.release(pKey);
+            ReferenceCountUtil.release(lKey);
         });
     }
 
@@ -252,7 +252,7 @@ class PByteBufTableRangeImpl implements PTable<ByteBuf, ByteBuf> {
                 executor,
                 backoffPolicy
             ).process().whenComplete((ignored, cause) -> {
-                ReferenceCountUtil.safeRelease(pKey);
+                ReferenceCountUtil.release(pKey);
                 for (AutoCloseable resource : resourcesToRelease) {
                     closeResource(resource);
                 }
diff --git a/stream/common/src/main/java/org/apache/bookkeeper/common/router/AbstractHashRouter.java b/stream/common/src/main/java/org/apache/bookkeeper/common/router/AbstractHashRouter.java
index b5bad37ef1..fee3cc6061 100644
--- a/stream/common/src/main/java/org/apache/bookkeeper/common/router/AbstractHashRouter.java
+++ b/stream/common/src/main/java/org/apache/bookkeeper/common/router/AbstractHashRouter.java
@@ -39,7 +39,7 @@ public abstract class AbstractHashRouter<K> implements HashRouter<K> {
             return Murmur3.hash128(
                 keyData, keyData.readerIndex(), keyData.readableBytes(), HASH_SEED)[0];
         } finally {
-            ReferenceCountUtil.safeRelease(keyData);
+            ReferenceCountUtil.release(keyData);
         }
     }
 
diff --git a/stream/distributedlog/common/src/test/java/org/apache/distributedlog/io/TestCompressionCodec.java b/stream/distributedlog/common/src/test/java/org/apache/distributedlog/io/TestCompressionCodec.java
index fa60f95d94..715eee6415 100644
--- a/stream/distributedlog/common/src/test/java/org/apache/distributedlog/io/TestCompressionCodec.java
+++ b/stream/distributedlog/common/src/test/java/org/apache/distributedlog/io/TestCompressionCodec.java
@@ -71,9 +71,9 @@ public class TestCompressionCodec {
         decompressedBuf.readBytes(decompressedData);
         assertArrayEquals("The decompressed bytes should be same as the original bytes",
                 data, decompressedData);
-        ReferenceCountUtil.safeRelease(buf);
-        ReferenceCountUtil.safeRelease(compressedBuf);
-        ReferenceCountUtil.safeRelease(decompressedBuf);
+        ReferenceCountUtil.release(buf);
+        ReferenceCountUtil.release(compressedBuf);
+        ReferenceCountUtil.release(decompressedBuf);
     }
 
     private void testCompressionCodec2(CompressionCodec codec) throws Exception {
@@ -94,9 +94,9 @@ public class TestCompressionCodec {
         byte[] decompressedData = new byte[decompressedBuf.readableBytes()];
         decompressedBuf.slice().readBytes(decompressedData);
 
-        ReferenceCountUtil.safeRelease(buffer);
-        ReferenceCountUtil.safeRelease(compressedBuf);
-        ReferenceCountUtil.safeRelease(decompressedBuf);
+        ReferenceCountUtil.release(buffer);
+        ReferenceCountUtil.release(compressedBuf);
+        ReferenceCountUtil.release(decompressedBuf);
     }
 
 }
diff --git a/stream/distributedlog/core/src/main/java/org/apache/bookkeeper/client/LedgerReader.java b/stream/distributedlog/core/src/main/java/org/apache/bookkeeper/client/LedgerReader.java
index 3a3a4c5413..5c918d7102 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/bookkeeper/client/LedgerReader.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/bookkeeper/client/LedgerReader.java
@@ -111,7 +111,7 @@ public class LedgerReader {
                             eid, BKException.Code.DigestMatchException, null, bookieAddress.getSocketAddress());
 
                     } finally {
-                        ReferenceCountUtil.safeRelease(buffer);
+                        ReferenceCountUtil.release(buffer);
                     }
                 }
                 readResults.add(rr);
diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntry.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntry.java
index e904b06e74..11d5c465e1 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntry.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntry.java
@@ -103,7 +103,7 @@ class EnvelopedEntry {
             CompressionCodec codec = CompressionUtils.getCompressionCodec(Type.of(codecCode));
             decompressedBuf = codec.decompress(compressedBuf, originDataLen);
         } finally {
-            ReferenceCountUtil.safeRelease(compressedBuf);
+            ReferenceCountUtil.release(compressedBuf);
         }
         return decompressedBuf;
     }
diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryReader.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryReader.java
index a7f6c4f3ae..c681a02d89 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryReader.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryReader.java
@@ -81,7 +81,7 @@ class EnvelopedEntryReader implements Entry.Reader, RecordStream {
 
     private void releaseBuffer() {
         isExhausted = true;
-        ReferenceCountUtil.safeRelease(this.src);
+        ReferenceCountUtil.release(this.src);
     }
 
     @Override
diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryWriter.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryWriter.java
index a81d2d281a..491027b550 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryWriter.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/EnvelopedEntryWriter.java
@@ -210,18 +210,18 @@ class EnvelopedEntryWriter implements Writer {
     @Override
     public void completeTransmit(long lssn, long entryId) {
         satisfyPromises(lssn, entryId);
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
         synchronized (this) {
-            ReferenceCountUtil.safeRelease(finalizedBuffer);
+            ReferenceCountUtil.release(finalizedBuffer);
         }
     }
 
     @Override
     public void abortTransmit(Throwable reason) {
         cancelPromises(reason);
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
         synchronized (this) {
-            ReferenceCountUtil.safeRelease(finalizedBuffer);
+            ReferenceCountUtil.release(finalizedBuffer);
         }
     }
 }
diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java
index dc227f336d..b7f70c9c3a 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/impl/logsegment/BKLogSegmentEntryReader.java
@@ -800,7 +800,7 @@ public class BKLogSegmentEntryReader implements Runnable, LogSegmentEntryReader,
                         return;
                     }
                 } finally {
-                    ReferenceCountUtil.safeRelease(removedEntry);
+                    ReferenceCountUtil.release(removedEntry);
                 }
             } else if (skipBrokenEntries && BKException.Code.DigestMatchException == entry.getRc()) {
                 // skip this entry and move forward
diff --git a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/tools/DistributedLogTool.java b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/tools/DistributedLogTool.java
index c891ecac0d..9af7f6dff3 100644
--- a/stream/distributedlog/core/src/main/java/org/apache/distributedlog/tools/DistributedLogTool.java
+++ b/stream/distributedlog/core/src/main/java/org/apache/distributedlog/tools/DistributedLogTool.java
@@ -1720,7 +1720,7 @@ import org.slf4j.LoggerFactory;
                     .setEnvelopeEntry(LogSegmentMetadata.supportsEnvelopedEntries(segment.getVersion()))
                     .setEntry(lastEntry.getEntryBuffer())
                     .buildReader();
-            ReferenceCountUtil.safeRelease(lastEntry.getEntryBuffer());
+            ReferenceCountUtil.release(lastEntry.getEntryBuffer());
             LogRecordWithDLSN record = reader.nextRecord();
             LogRecordWithDLSN lastRecord = null;
             while (null != record) {
@@ -2034,7 +2034,7 @@ import org.slf4j.LoggerFactory;
                                     .setEntry(rr.getValue())
                                     .setEnvelopeEntry(LogSegmentMetadata.supportsEnvelopedEntries(metadataVersion))
                                     .buildReader();
-                            ReferenceCountUtil.safeRelease(rr.getValue());
+                            ReferenceCountUtil.release(rr.getValue());
                             printEntry(reader);
                         } else {
                             System.out.println("status = " + BKException.getMessage(rr.getResultCode()));
@@ -2096,7 +2096,7 @@ import org.slf4j.LoggerFactory;
                         .setEntry(entry.getEntryBuffer())
                         .setEnvelopeEntry(LogSegmentMetadata.supportsEnvelopedEntries(metadataVersion))
                         .buildReader();
-                ReferenceCountUtil.safeRelease(entry.getEntryBuffer());
+                ReferenceCountUtil.release(entry.getEntryBuffer());
                 printEntry(reader);
                 ++i;
             }
diff --git a/stream/distributedlog/core/src/test/java/org/apache/distributedlog/TestEntry.java b/stream/distributedlog/core/src/test/java/org/apache/distributedlog/TestEntry.java
index eb225809eb..5b2e7af35f 100644
--- a/stream/distributedlog/core/src/test/java/org/apache/distributedlog/TestEntry.java
+++ b/stream/distributedlog/core/src/test/java/org/apache/distributedlog/TestEntry.java
@@ -73,7 +73,7 @@ public class TestEntry {
         Assert.assertNull("Empty record set should return null",
             reader.nextRecord());
         assertEquals(refCnt - 1, reader.getSrcBuf().refCnt());
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
     }
 
     @Test(timeout = 20000)
@@ -98,7 +98,7 @@ public class TestEntry {
 
         ByteBuf buffer = writer.getBuffer();
         assertEquals("zero bytes", HEADER_LENGTH, buffer.readableBytes());
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
     }
 
     @Test(timeout = 20000)
@@ -159,7 +159,7 @@ public class TestEntry {
                 .setEntryId(0L)
                 .setEnvelopeEntry(true)
                 .buildReader();
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
         LogRecordWithDLSN record = reader.nextRecord();
         int numReads = 0;
         long expectedTxid = 0L;
@@ -277,7 +277,7 @@ public class TestEntry {
                 new DLSN(1L, 1L, 12L), 0, 0, 3,
                 new DLSN(1L, 1L, 12L), 12L);
 
-        ReferenceCountUtil.safeRelease(buffer);
+        ReferenceCountUtil.release(buffer);
     }
 
     void verifyReadResult(ByteBuf data,
diff --git a/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetReader.java b/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetReader.java
index 30c0f910f4..1f147f5725 100644
--- a/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetReader.java
+++ b/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetReader.java
@@ -81,10 +81,10 @@ class EnvelopedRecordSetReader implements LogRecordSet.Reader {
             CompressionCodec codec = CompressionUtils.getCompressionCodec(Type.of(codecCode));
             this.reader = codec.decompress(compressedBuf, decompressedDataLen);
         } finally {
-            ReferenceCountUtil.safeRelease(compressedBuf);
+            ReferenceCountUtil.release(compressedBuf);
         }
         if (numRecords == 0) {
-            ReferenceCountUtil.safeRelease(this.reader);
+            ReferenceCountUtil.release(this.reader);
         }
     }
 
@@ -111,7 +111,7 @@ class EnvelopedRecordSetReader implements LogRecordSet.Reader {
 
         // release the record set buffer when exhausting the reader
         if (0 == numRecords) {
-            ReferenceCountUtil.safeRelease(this.reader);
+            ReferenceCountUtil.release(this.reader);
         }
 
         return record;
@@ -121,7 +121,7 @@ class EnvelopedRecordSetReader implements LogRecordSet.Reader {
     public void release() {
         if (0 != numRecords) {
             numRecords = 0;
-            ReferenceCountUtil.safeRelease(reader);
+            ReferenceCountUtil.release(reader);
         }
     }
 }
diff --git a/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetWriter.java b/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetWriter.java
index 0c4b2fb475..f1ba4c40da 100644
--- a/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetWriter.java
+++ b/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/EnvelopedRecordSetWriter.java
@@ -157,14 +157,14 @@ class EnvelopedRecordSetWriter implements LogRecordSet.Writer {
     @Override
     public synchronized void completeTransmit(long lssn, long entryId, long startSlotId) {
         satisfyPromises(lssn, entryId, startSlotId);
-        ReferenceCountUtil.safeRelease(buffer);
-        ReferenceCountUtil.safeRelease(recordSetBuffer);
+        ReferenceCountUtil.release(buffer);
+        ReferenceCountUtil.release(recordSetBuffer);
     }
 
     @Override
     public synchronized void abortTransmit(Throwable reason) {
         cancelPromises(reason);
-        ReferenceCountUtil.safeRelease(buffer);
-        ReferenceCountUtil.safeRelease(recordSetBuffer);
+        ReferenceCountUtil.release(buffer);
+        ReferenceCountUtil.release(recordSetBuffer);
     }
 }
diff --git a/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/LogRecord.java b/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/LogRecord.java
index 56fc17f76b..4de2249677 100644
--- a/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/LogRecord.java
+++ b/stream/distributedlog/protocol/src/main/java/org/apache/distributedlog/LogRecord.java
@@ -226,7 +226,7 @@ public class LogRecord {
 
     void setPayloadBuf(ByteBuf payload, boolean copyData) {
         if (null != this.payload) {
-            ReferenceCountUtil.safeRelease(this.payload);
+            ReferenceCountUtil.release(this.payload);
         }
         if (copyData) {
             this.payload = Unpooled.copiedBuffer(payload);
diff --git a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/journal/AbstractStateStoreWithJournal.java b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/journal/AbstractStateStoreWithJournal.java
index 600c9bc346..58977f3b63 100644
--- a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/journal/AbstractStateStoreWithJournal.java
+++ b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/journal/AbstractStateStoreWithJournal.java
@@ -549,7 +549,7 @@ public abstract class AbstractStateStoreWithJournal<LocalStateStoreT extends Sta
         long txId = ++nextRevision;
         return FutureUtils.ensure(
             writer.write(new LogRecord(txId, cmdBuf.nioBuffer())),
-            () -> ReferenceCountUtil.safeRelease(cmdBuf));
+            () -> ReferenceCountUtil.release(cmdBuf));
     }
 
     protected synchronized CompletableFuture<Long> writeCommandBufReturnTxId(ByteBuf cmdBuf) {
@@ -557,7 +557,7 @@ public abstract class AbstractStateStoreWithJournal<LocalStateStoreT extends Sta
         return FutureUtils.ensure(
             writer.write(new LogRecord(txId, cmdBuf.nioBuffer()))
                 .thenApply(dlsn -> txId),
-            () -> ReferenceCountUtil.safeRelease(cmdBuf));
+            () -> ReferenceCountUtil.release(cmdBuf));
     }
 
     //
diff --git a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/KVUtils.java b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/KVUtils.java
index aeac76d153..2af8d8012b 100644
--- a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/KVUtils.java
+++ b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/KVUtils.java
@@ -77,7 +77,7 @@ final class KVUtils {
         try {
             cmd.writeTo(new ByteBufOutputStream(buf));
         } catch (IOException e) {
-            ReferenceCountUtil.safeRelease(buf);
+            ReferenceCountUtil.release(buf);
             throw e;
         }
         return buf;
diff --git a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/RocksdbKVAsyncStore.java b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/RocksdbKVAsyncStore.java
index 0bceee6a09..63150d11d5 100644
--- a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/RocksdbKVAsyncStore.java
+++ b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/kv/RocksdbKVAsyncStore.java
@@ -100,7 +100,7 @@ public class RocksdbKVAsyncStore<K, V>
                 byte[] serializedBytes = ByteBufUtil.getBytes(serializedBuf);
                 localStore.put(keyBytes, serializedBytes, revision);
             } finally {
-                ReferenceCountUtil.safeRelease(serializedBuf);
+                ReferenceCountUtil.release(serializedBuf);
             }
             return null;
         }, writeIOScheduler);
@@ -126,7 +126,7 @@ public class RocksdbKVAsyncStore<K, V>
                     return KVUtils.deserialize(valCoder, Unpooled.wrappedBuffer(prevValue));
                 }
             } finally {
-                ReferenceCountUtil.safeRelease(serializedBuf);
+                ReferenceCountUtil.release(serializedBuf);
             }
         }, writeIOScheduler);
     }
diff --git a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecord.java b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecord.java
index 7dbcf57587..4e071c3625 100644
--- a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecord.java
+++ b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecord.java
@@ -90,7 +90,7 @@ public class MVCCRecord implements Recycled, Predicate<RangeOption<?>> {
 
     public void setValue(ByteBuf buf, ValueType valueType) {
         if (null != value) {
-            ReferenceCountUtil.safeRelease(value);
+            ReferenceCountUtil.release(value);
         }
         this.value = buf;
         this.valueType = valueType;
@@ -105,7 +105,7 @@ public class MVCCRecord implements Recycled, Predicate<RangeOption<?>> {
 
     private void reset() {
         if (null != value) {
-            ReferenceCountUtil.safeRelease(value);
+            ReferenceCountUtil.release(value);
             value = null;
         }
         modRev = -1L;
diff --git a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecordCoder.java b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecordCoder.java
index 9e8d673bad..44628a22b7 100644
--- a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecordCoder.java
+++ b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCRecordCoder.java
@@ -77,7 +77,7 @@ final class MVCCRecordCoder implements Coder<MVCCRecord> {
         buf.writerIndex(buf.writerIndex() + metaLen);
         buf.writeInt(valLen);
         buf.writeBytes(record.getValue().slice());
-        ReferenceCountUtil.safeRelease(buf);
+        ReferenceCountUtil.release(buf);
 
         return data;
     }
diff --git a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCStoreImpl.java b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCStoreImpl.java
index 4bdeeca0aa..0e501ff00c 100644
--- a/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCStoreImpl.java
+++ b/stream/statelib/src/main/java/org/apache/bookkeeper/statelib/impl/mvcc/MVCCStoreImpl.java
@@ -492,7 +492,7 @@ class MVCCStoreImpl<K, V> extends RocksdbKVStore<K, V> implements MVCCStore<K, V
         try {
             record = getKeyRecord(key, rawKey);
         } catch (StateStoreRuntimeException e) {
-            ReferenceCountUtil.safeRelease(rawValBuf);
+            ReferenceCountUtil.release(rawValBuf);
             throw e;
         }
 
diff --git a/stream/storage/impl/src/main/java/org/apache/bookkeeper/stream/storage/impl/routing/RoutingHeaderProxyInterceptor.java b/stream/storage/impl/src/main/java/org/apache/bookkeeper/stream/storage/impl/routing/RoutingHeaderProxyInterceptor.java
index 3c08f01598..ce529c5dd5 100644
--- a/stream/storage/impl/src/main/java/org/apache/bookkeeper/stream/storage/impl/routing/RoutingHeaderProxyInterceptor.java
+++ b/stream/storage/impl/src/main/java/org/apache/bookkeeper/stream/storage/impl/routing/RoutingHeaderProxyInterceptor.java
@@ -228,7 +228,7 @@ public class RoutingHeaderProxyInterceptor implements ClientInterceptor {
             buffer.writeBytes(is, bytes);
         } catch (IOException e) {
             log.warn("Encountered exceptions in transferring bytes to the buffer", e);
-            ReferenceCountUtil.safeRelease(buffer);
+            ReferenceCountUtil.release(buffer);
             throw new RuntimeException("Encountered exceptions in transferring bytes to the buffer", e);
         }
         return method
diff --git a/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/journal/JournalWriter.java b/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/journal/JournalWriter.java
index b1451de098..383ccfb982 100644
--- a/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/journal/JournalWriter.java
+++ b/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/journal/JournalWriter.java
@@ -390,7 +390,7 @@ public class JournalWriter implements Runnable {
                     buf,
                     false,
                     (rc, ledgerId, entryId, addr, ctx) -> {
-                        ReferenceCountUtil.safeRelease(buf);
+                        ReferenceCountUtil.release(buf);
                         if (0 == rc) {
                             if (null != semaphore) {
                                 semaphore.release(len);
diff --git a/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/IncrementTask.java b/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/IncrementTask.java
index 16b295786d..121eadf27b 100644
--- a/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/IncrementTask.java
+++ b/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/IncrementTask.java
@@ -90,7 +90,7 @@ abstract class IncrementTask extends BenchmarkTask {
                     );
                     writeOpStats.recordOp(latencyMicros);
                 }
-                ReferenceCountUtil.safeRelease(keyBuf);
+                ReferenceCountUtil.release(keyBuf);
             });
     }
 
diff --git a/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/WriteTask.java b/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/WriteTask.java
index 00215bc4a4..82b03d115d 100644
--- a/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/WriteTask.java
+++ b/tools/perf/src/main/java/org/apache/bookkeeper/tools/perf/table/WriteTask.java
@@ -96,8 +96,8 @@ abstract class WriteTask extends BenchmarkTask {
                     );
                     writeOpStats.recordOp(latencyMicros);
                 }
-                ReferenceCountUtil.safeRelease(keyBuf);
-                ReferenceCountUtil.safeRelease(valBuf);
+                ReferenceCountUtil.release(keyBuf);
+                ReferenceCountUtil.release(valBuf);
             });
     }
 
diff --git a/tools/stream/src/main/java/org/apache/bookkeeper/stream/cli/commands/table/DelCommand.java b/tools/stream/src/main/java/org/apache/bookkeeper/stream/cli/commands/table/DelCommand.java
index df85b0c8d4..3827764013 100644
--- a/tools/stream/src/main/java/org/apache/bookkeeper/stream/cli/commands/table/DelCommand.java
+++ b/tools/stream/src/main/java/org/apache/bookkeeper/stream/cli/commands/table/DelCommand.java
@@ -70,7 +70,7 @@ public class DelCommand extends ClientCommand<Flags> {
             ByteBuf value = result(table.delete(
                 Unpooled.wrappedBuffer(key.getBytes(UTF_8))));
             if (null != value) {
-                ReferenceCountUtil.safeRelease(value);
+                ReferenceCountUtil.release(value);
                 spec.console().println("Successfully deleted key: ('" + key + "').");
             } else {
                 spec.console().println("key '" + key + "' doesn't exist.");