From 6fb455a1d4dc7416c81ad447fbfe4f9429765609 Mon Sep 17 00:00:00 2001 From: bxfjb <48467309+bxfjb@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:53:39 +0800 Subject: [PATCH] [ISSUE #8409] Fix tiered storage roll file logic if committing the last part of a file failed (#8410) Co-authored-by: zhaoyuhan --- .../rocketmq/tieredstore/file/FlatAppendFile.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/file/FlatAppendFile.java b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/file/FlatAppendFile.java index d0484137982..b9ba80d08d4 100644 --- a/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/file/FlatAppendFile.java +++ b/tieredstore/src/main/java/org/apache/rocketmq/tieredstore/file/FlatAppendFile.java @@ -175,8 +175,14 @@ public AppendResult append(ByteBuffer buffer, long timestamp) { FileSegment fileSegment = this.getFileToWrite(); result = fileSegment.append(buffer, timestamp); if (result == AppendResult.FILE_FULL) { - fileSegment.commitAsync().join(); - return this.rollingNewFile(this.getAppendOffset()).append(buffer, timestamp); + boolean commitResult = fileSegment.commitAsync().join(); + log.info("FlatAppendFile#append not successful for the file {} is full, commit result={}", + fileSegment.getPath(), commitResult); + if (commitResult) { + return this.rollingNewFile(this.getAppendOffset()).append(buffer, timestamp); + } else { + return AppendResult.UNKNOWN_ERROR; + } } } finally { fileSegmentLock.writeLock().unlock();