From 65786fecbf6b466182e9daba7c27bd6a3e13d45c Mon Sep 17 00:00:00 2001 From: "Chung, Ming-Yen" Date: Tue, 20 Aug 2024 09:26:43 +0800 Subject: [PATCH] KAFKA-17181 Replace fileChannel.write with Utils.writeFully to prevent partial write (#16707) Reviewers: Chia-Ping Tsai --- .../kafka/storage/internals/log/ProducerStateManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/storage/src/main/java/org/apache/kafka/storage/internals/log/ProducerStateManager.java b/storage/src/main/java/org/apache/kafka/storage/internals/log/ProducerStateManager.java index 5aafa176624..994f34744e4 100644 --- a/storage/src/main/java/org/apache/kafka/storage/internals/log/ProducerStateManager.java +++ b/storage/src/main/java/org/apache/kafka/storage/internals/log/ProducerStateManager.java @@ -24,6 +24,7 @@ import org.apache.kafka.common.utils.ByteUtils; import org.apache.kafka.common.utils.Crc32C; import org.apache.kafka.common.utils.LogContext; import org.apache.kafka.common.utils.Time; +import org.apache.kafka.common.utils.Utils; import org.apache.kafka.server.log.remote.metadata.storage.generated.ProducerSnapshot; import org.slf4j.Logger; @@ -684,7 +685,7 @@ public class ProducerStateManager { ByteUtils.writeUnsignedInt(buffer, CRC_OFFSET, crc); try (FileChannel fileChannel = FileChannel.open(file.toPath(), StandardOpenOption.CREATE, StandardOpenOption.WRITE)) { - fileChannel.write(buffer); + Utils.writeFully(fileChannel, buffer); if (sync) { fileChannel.force(true); }