From e8d20ad054ade179d29f05bd5e837b458636722e Mon Sep 17 00:00:00 2001 From: Shichao Nie Date: Sun, 3 Nov 2024 15:35:05 +0800 Subject: [PATCH] fix(issue2108): avoid blocking at the end of a compaction iteration when there are un-uploaded data Signed-off-by: Shichao Nie --- .../stream/s3/compact/CompactionManager.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/s3stream/src/main/java/com/automq/stream/s3/compact/CompactionManager.java b/s3stream/src/main/java/com/automq/stream/s3/compact/CompactionManager.java index 0fd4ae2255..bd623e1fe6 100644 --- a/s3stream/src/main/java/com/automq/stream/s3/compact/CompactionManager.java +++ b/s3stream/src/main/java/com/automq/stream/s3/compact/CompactionManager.java @@ -749,14 +749,16 @@ void executeCompactionPlans(CommitStreamSetObjectRequest request, List uploader.forceUploadStreamSetObject()) - .exceptionally(ex -> { - uploader.release().thenAccept(v -> { - for (CompactedObject compactedObject : compactionPlan.compactedObjects()) { - compactedObject.streamDataBlocks().forEach(StreamDataBlock::release); - } - }).join(); - throw new IllegalStateException("Error while uploading compaction objects", ex); + .whenComplete((v, ex) -> { + uploader.forceUploadStreamSetObject(); + if (ex != null) { + logger.error("Error while uploading compaction objects", ex); + uploader.release().thenAccept(vv -> { + for (CompactedObject compactedObject : compactionPlan.compactedObjects()) { + compactedObject.streamDataBlocks().forEach(StreamDataBlock::release); + } + }).join(); + } }); } try {