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

chenhang 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 901f76ce4c Fix QueueEntry recycle problem. (#3747)
901f76ce4c is described below

commit 901f76ce4c4f9f771363424dbb60da4d590ad122
Author: Yan Zhao <[email protected]>
AuthorDate: Fri Feb 3 10:34:41 2023 +0800

    Fix QueueEntry recycle problem. (#3747)
    
    Descriptions of the changes in this PR:
    In the QueueEntry recycle, it only recycles itself to the object pool, but 
didn't reset some properties.
    Like entry, cb, etc. We should reset the filed before recycles itself.
---
 .../src/main/java/org/apache/bookkeeper/bookie/Journal.java    | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

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 fff4644522..3942e7662a 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
@@ -347,8 +347,8 @@ public class Journal extends BookieCriticalThread 
implements CheckpointSource {
             cbThreadPoolQueueSize.dec();
             
journalAddEntryStats.registerSuccessfulEvent(MathUtils.elapsedNanos(enqueueTime),
 TimeUnit.NANOSECONDS);
             cb.writeComplete(0, ledgerId, entryId, null, ctx);
-            recycle();
             callbackTime.addLatency(MathUtils.elapsedNanos(startTime), 
TimeUnit.NANOSECONDS);
+            recycle();
         }
 
         private final Handle<QueueEntry> recyclerHandle;
@@ -365,6 +365,14 @@ public class Journal extends BookieCriticalThread 
implements CheckpointSource {
         };
 
         private void recycle() {
+            this.entry = null;
+            this.cb = null;
+            this.ctx = null;
+            this.journalAddEntryStats = null;
+            this.journalCbQueuedLatency = null;
+            this.journalCbQueueSize = null;
+            this.cbThreadPoolQueueSize = null;
+            this.callbackTime = null;
             recyclerHandle.recycle(this);
         }
     }

Reply via email to