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");
}
}