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

yong pushed a commit to branch branch-4.16
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/branch-4.16 by this push:
     new 7733db1c9a Fix: Garbage collection stuck on corrupt entry log file 
(#4544)
7733db1c9a is described below

commit 7733db1c9a673371301d585e3d0e35c44d4110f9
Author: Andrey Yegorov <8622884+dl...@users.noreply.github.com>
AuthorDate: Thu Feb 13 11:41:21 2025 -0800

    Fix: Garbage collection stuck on corrupt entry log file (#4544)
    
    (cherry picked from commit 175e29407ece25fbb50d52afbcca384f2182e058)
---
 .../org/apache/bookkeeper/bookie/GarbageCollectorThread.java     | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
index d70082256f..41eb1d941f 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/GarbageCollectorThread.java
@@ -809,8 +809,13 @@ public class GarbageCollectorThread implements Runnable {
                     entryLogMetaMap.put(entryLogId, entryLogMeta);
                 }
             } catch (IOException | RuntimeException e) {
-                LOG.warn("Premature exception when processing " + entryLogId
-                         + " recovery will take care of the problem", e);
+                LOG.warn("Premature exception when processing {} recovery will 
take care of the problem",
+                        entryLogId, e);
+            } catch (OutOfMemoryError oome) {
+                // somewhat similar to 
https://github.com/apache/bookkeeper/pull/3901
+                // entrylog file can be corrupted but instead having a 
negative entry size
+                // it ends up with very large value for the entry size causing 
OODME
+                LOG.warn("OutOfMemoryError when processing {} - skipping the 
entry log", entryLogId, oome);
             }
         }
     }

Reply via email to