You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by eo...@apache.org on 2022/12/07 09:30:25 UTC

[bookkeeper] branch master updated: [fix][server]fix memory leak when closeRecovered,failed on clearing newEnsemblesFromRecovery (#3672)

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

eolivelli 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 a19d849a37 [fix][server]fix memory leak when closeRecovered,failed on clearing newEnsemblesFromRecovery (#3672)
a19d849a37 is described below

commit a19d849a370d0b3eed73bb90f329b47f00730146
Author: StevenLuMT <ls...@126.com>
AuthorDate: Wed Dec 7 17:30:17 2022 +0800

    [fix][server]fix memory leak when closeRecovered,failed on clearing newEnsemblesFromRecovery (#3672)
    
    Co-authored-by: lushiji <lu...@didiglobal.com>
---
 .../org/apache/bookkeeper/client/ReadOnlyLedgerHandle.java  | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadOnlyLedgerHandle.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadOnlyLedgerHandle.java
index 954665404e..9e883a8246 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadOnlyLedgerHandle.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/ReadOnlyLedgerHandle.java
@@ -326,11 +326,14 @@ class ReadOnlyLedgerHandle extends LedgerHandle implements LedgerMetadataListene
                     return builder.withClosedState().withLastEntryId(lac).withLength(len).build();
                 },
                 this::setLedgerMetadata).run();
-        f.thenRun(() -> {
-                synchronized (metadataLock) {
-                    newEnsemblesFromRecovery.clear();
-                }
-            });
+        f.whenComplete((result, exception) -> {
+            synchronized (metadataLock) {
+                newEnsemblesFromRecovery.clear();
+            }
+            if (exception != null) {
+                LOG.error("When closeRecovered,failed on clearing newEnsemblesFromRecovery.", exception);
+            }
+        });
         return f;
     }