You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ch...@apache.org on 2025/09/11 10:21:41 UTC

(kafka) branch trunk updated: KAFKA-19676 EpochState should override close to avoid throwing IOException (#20508)

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

chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 8a79ea2e5bd KAFKA-19676 EpochState should override close to avoid throwing IOException (#20508)
8a79ea2e5bd is described below

commit 8a79ea2e5bde348e4ab3e45c28a7b2661fc6bfef
Author: jimmy <wa...@gmail.com>
AuthorDate: Thu Sep 11 18:21:35 2025 +0800

    KAFKA-19676 EpochState should override close to avoid throwing IOException (#20508)
    
    Jira: [KAFKA-19676](https://issues.apache.org/jira/browse/KAFKA-19676)
    All subclasses of EpochState do not throw an IOException when closing,
    so catching it is unnecessary. We could override close to remove the
    IOException declaration.
    
    Reviewers: Jhen-Yung Hsu <jh...@gmail.com>, TaiJuWu
     <tj...@gmail.com>, Chia-Ping Tsai <ch...@gmail.com>
---
 raft/src/main/java/org/apache/kafka/raft/EpochState.java  | 7 +++++++
 raft/src/main/java/org/apache/kafka/raft/QuorumState.java | 9 +--------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/raft/src/main/java/org/apache/kafka/raft/EpochState.java b/raft/src/main/java/org/apache/kafka/raft/EpochState.java
index 338f6603181..e4afba6893a 100644
--- a/raft/src/main/java/org/apache/kafka/raft/EpochState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/EpochState.java
@@ -59,4 +59,11 @@ public interface EpochState extends Closeable {
      * User-friendly description of the state
      */
     String name();
+
+    /**
+     * Since all subclasses implement the Closeable interface while none throw any IOException,
+     * this implementation is provided to eliminate the need for exception handling in the close operation.
+     */
+    @Override
+    void close();
 }
diff --git a/raft/src/main/java/org/apache/kafka/raft/QuorumState.java b/raft/src/main/java/org/apache/kafka/raft/QuorumState.java
index 1462b824fab..4ae24c84eaf 100644
--- a/raft/src/main/java/org/apache/kafka/raft/QuorumState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/QuorumState.java
@@ -27,8 +27,6 @@ import org.apache.kafka.server.common.OffsetAndEpoch;
 
 import org.slf4j.Logger;
 
-import java.io.IOException;
-import java.io.UncheckedIOException;
 import java.util.List;
 import java.util.Optional;
 import java.util.OptionalInt;
@@ -736,12 +734,7 @@ public class QuorumState {
 
     private void memoryTransitionTo(EpochState newState) {
         if (state != null) {
-            try {
-                state.close();
-            } catch (IOException e) {
-                throw new UncheckedIOException(
-                    "Failed to transition from " + state.name() + " to " + newState.name(), e);
-            }
+            state.close();
         }
 
         EpochState from = state;