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

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new bea086feb9 [ISSUE #9773] Fix core dump when shutdown broker twice
bea086feb9 is described below

commit bea086feb92f139d9ca814dad469a66834bfed54
Author: qianye <[email protected]>
AuthorDate: Mon Oct 27 19:08:52 2025 +0800

    [ISSUE #9773] Fix core dump when shutdown broker twice
    
    Change-Id: I31338a675c8af1657d3e2675a5783b1afc33d7ab
---
 .../config/v1/RocksDBConsumerOffsetManager.java    | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git 
a/broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConsumerOffsetManager.java
 
b/broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConsumerOffsetManager.java
index 2d015afca3..4f63516777 100644
--- 
a/broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConsumerOffsetManager.java
+++ 
b/broker/src/main/java/org/apache/rocketmq/broker/config/v1/RocksDBConsumerOffsetManager.java
@@ -157,17 +157,21 @@ public class RocksDBConsumerOffsetManager extends 
ConsumerOffsetManager {
 
     @Override
     public synchronized void persist() {
-        try (WriteBatch writeBatch = new WriteBatch()) {
-            for (Entry<String, ConcurrentMap<Integer, Long>> entry : 
this.offsetTable.entrySet()) {
-                putWriteBatch(writeBatch, entry.getKey(), entry.getValue());
-                if (writeBatch.getDataSize() >= 4 * 1024) {
-                    this.rocksDBConfigManager.batchPutWithWal(writeBatch);
+        if (!rocksDBConfigManager.isStop) {
+            try (WriteBatch writeBatch = new WriteBatch()) {
+                for (Entry<String, ConcurrentMap<Integer, Long>> entry : 
this.offsetTable.entrySet()) {
+                    putWriteBatch(writeBatch, entry.getKey(), 
entry.getValue());
+                    if (writeBatch.getDataSize() >= 4 * 1024) {
+                        this.rocksDBConfigManager.batchPutWithWal(writeBatch);
+                    }
                 }
+                this.rocksDBConfigManager.batchPutWithWal(writeBatch);
+                this.rocksDBConfigManager.flushWAL();
+            } catch (Exception e) {
+                log.error("consumer offset persist Failed", e);
             }
-            this.rocksDBConfigManager.batchPutWithWal(writeBatch);
-            this.rocksDBConfigManager.flushWAL();
-        } catch (Exception e) {
-            log.error("consumer offset persist Failed", e);
+        } else {
+            log.warn("RocksDBConsumerOffsetManager has been stopped, persist 
fail");
         }
     }
 

Reply via email to