This is an automated email from the ASF dual-hosted git repository.
chia7712 pushed a commit to branch 3.9
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/3.9 by this push:
new bcf4c73bae5 KAFKA-17238 Move VoterSet and ReplicaKey from
raft.internals to raft (#16775)
bcf4c73bae5 is described below
commit bcf4c73bae59d0425417c24fd526a3a232f6f640
Author: TengYao Chi <[email protected]>
AuthorDate: Fri Aug 16 00:24:51 2024 +0800
KAFKA-17238 Move VoterSet and ReplicaKey from raft.internals to raft
(#16775)
Reviewers: Chia-Ping Tsai <[email protected]>
---
core/src/test/scala/unit/kafka/tools/DumpLogSegmentsTest.scala | 3 +--
.../src/main/java/org/apache/kafka/metadata/storage/Formatter.java | 2 +-
raft/src/main/java/org/apache/kafka/raft/CandidateState.java | 2 --
raft/src/main/java/org/apache/kafka/raft/DynamicVoter.java | 2 --
raft/src/main/java/org/apache/kafka/raft/DynamicVoters.java | 1 -
raft/src/main/java/org/apache/kafka/raft/ElectionState.java | 1 -
raft/src/main/java/org/apache/kafka/raft/EpochState.java | 2 --
raft/src/main/java/org/apache/kafka/raft/FollowerState.java | 1 -
raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java | 2 --
raft/src/main/java/org/apache/kafka/raft/LeaderState.java | 2 --
raft/src/main/java/org/apache/kafka/raft/QuorumState.java | 2 --
raft/src/main/java/org/apache/kafka/raft/RaftUtil.java | 1 -
.../main/java/org/apache/kafka/raft/{internals => }/ReplicaKey.java | 2 +-
raft/src/main/java/org/apache/kafka/raft/ResignedState.java | 1 -
raft/src/main/java/org/apache/kafka/raft/UnattachedState.java | 1 -
.../main/java/org/apache/kafka/raft/{internals => }/VoterSet.java | 5 ++---
.../main/java/org/apache/kafka/raft/internals/AddVoterHandler.java | 2 ++
.../java/org/apache/kafka/raft/internals/AddVoterHandlerState.java | 1 +
.../apache/kafka/raft/internals/KRaftControlRecordStateMachine.java | 1 +
.../main/java/org/apache/kafka/raft/internals/KafkaRaftMetrics.java | 1 +
.../java/org/apache/kafka/raft/internals/RemoveVoterHandler.java | 2 ++
.../java/org/apache/kafka/raft/internals/UpdateVoterHandler.java | 2 ++
.../main/java/org/apache/kafka/raft/internals/VoterSetHistory.java | 2 ++
.../main/java/org/apache/kafka/snapshot/RecordsSnapshotWriter.java | 2 +-
raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java | 3 ---
raft/src/test/java/org/apache/kafka/raft/DynamicVoterTest.java | 2 --
raft/src/test/java/org/apache/kafka/raft/DynamicVotersTest.java | 1 -
raft/src/test/java/org/apache/kafka/raft/ElectionStateTest.java | 1 -
.../test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java | 1 -
raft/src/test/java/org/apache/kafka/raft/FollowerStateTest.java | 1 -
.../src/test/java/org/apache/kafka/raft/KafkaNetworkChannelTest.java | 1 -
.../test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java | 3 ---
.../test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java | 3 ---
raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java | 3 ---
raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java | 3 ---
raft/src/test/java/org/apache/kafka/raft/MockNetworkChannel.java | 1 -
raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java | 3 ---
raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java | 2 --
raft/src/test/java/org/apache/kafka/raft/ResignedStateTest.java | 2 --
raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java | 1 -
.../test/java/org/apache/kafka/raft/UnattachedStateWithVoteTest.java | 1 -
.../java/org/apache/kafka/raft/{internals => }/VoterSetTest.java | 3 +--
.../kafka/raft/internals/KRaftControlRecordStateMachineTest.java | 2 ++
.../java/org/apache/kafka/raft/internals/KafkaRaftMetricsTest.java | 3 +++
.../java/org/apache/kafka/raft/internals/RecordsIteratorTest.java | 2 ++
.../java/org/apache/kafka/raft/internals/VoterSetHistoryTest.java | 3 +++
.../java/org/apache/kafka/snapshot/RecordsSnapshotWriterTest.java | 4 ++--
47 files changed, 30 insertions(+), 62 deletions(-)
diff --git a/core/src/test/scala/unit/kafka/tools/DumpLogSegmentsTest.scala
b/core/src/test/scala/unit/kafka/tools/DumpLogSegmentsTest.scala
index 977f9dcb3cb..82c2bfd03ad 100644
--- a/core/src/test/scala/unit/kafka/tools/DumpLogSegmentsTest.scala
+++ b/core/src/test/scala/unit/kafka/tools/DumpLogSegmentsTest.scala
@@ -42,8 +42,7 @@ import org.apache.kafka.coordinator.group.{CoordinatorRecord,
CoordinatorRecordS
import
org.apache.kafka.coordinator.group.generated.{ConsumerGroupMemberMetadataValue,
ConsumerGroupMetadataKey, ConsumerGroupMetadataValue, GroupMetadataKey,
GroupMetadataValue}
import org.apache.kafka.coordinator.transaction.TransactionLogConfigs
import org.apache.kafka.metadata.MetadataRecordSerde
-import org.apache.kafka.raft.{KafkaRaftClient, OffsetAndEpoch}
-import org.apache.kafka.raft.internals.VoterSetTest
+import org.apache.kafka.raft.{KafkaRaftClient, OffsetAndEpoch, VoterSetTest}
import org.apache.kafka.server.common.{ApiMessageAndVersion, KRaftVersion}
import org.apache.kafka.server.config.ServerLogConfigs
import
org.apache.kafka.server.log.remote.metadata.storage.serialization.RemoteLogMetadataSerde
diff --git
a/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java
b/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java
index df639eef5b9..72995fb753e 100644
--- a/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java
+++ b/metadata/src/main/java/org/apache/kafka/metadata/storage/Formatter.java
@@ -27,7 +27,7 @@ import
org.apache.kafka.metadata.properties.MetaPropertiesEnsemble;
import org.apache.kafka.metadata.properties.MetaPropertiesVersion;
import org.apache.kafka.raft.DynamicVoters;
import org.apache.kafka.raft.KafkaRaftClient;
-import org.apache.kafka.raft.internals.VoterSet;
+import org.apache.kafka.raft.VoterSet;
import org.apache.kafka.server.common.ApiMessageAndVersion;
import org.apache.kafka.server.common.FeatureVersion;
import org.apache.kafka.server.common.Features;
diff --git a/raft/src/main/java/org/apache/kafka/raft/CandidateState.java
b/raft/src/main/java/org/apache/kafka/raft/CandidateState.java
index 1fd71e5e563..175df7760de 100644
--- a/raft/src/main/java/org/apache/kafka/raft/CandidateState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/CandidateState.java
@@ -20,8 +20,6 @@ import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.common.utils.Timer;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
import org.slf4j.Logger;
diff --git a/raft/src/main/java/org/apache/kafka/raft/DynamicVoter.java
b/raft/src/main/java/org/apache/kafka/raft/DynamicVoter.java
index f0546c910fb..6ae03c34fbf 100644
--- a/raft/src/main/java/org/apache/kafka/raft/DynamicVoter.java
+++ b/raft/src/main/java/org/apache/kafka/raft/DynamicVoter.java
@@ -20,8 +20,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.feature.SupportedVersionRange;
import org.apache.kafka.common.network.ListenerName;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
import java.net.InetSocketAddress;
import java.util.Collections;
diff --git a/raft/src/main/java/org/apache/kafka/raft/DynamicVoters.java
b/raft/src/main/java/org/apache/kafka/raft/DynamicVoters.java
index 0dfb54be584..8f746ff2c48 100644
--- a/raft/src/main/java/org/apache/kafka/raft/DynamicVoters.java
+++ b/raft/src/main/java/org/apache/kafka/raft/DynamicVoters.java
@@ -17,7 +17,6 @@
package org.apache.kafka.raft;
-import org.apache.kafka.raft.internals.VoterSet;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/raft/src/main/java/org/apache/kafka/raft/ElectionState.java
b/raft/src/main/java/org/apache/kafka/raft/ElectionState.java
index 320ae47dbe9..e65e72890f5 100644
--- a/raft/src/main/java/org/apache/kafka/raft/ElectionState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/ElectionState.java
@@ -17,7 +17,6 @@
package org.apache.kafka.raft;
import org.apache.kafka.raft.generated.QuorumStateData;
-import org.apache.kafka.raft.internals.ReplicaKey;
import java.util.List;
import java.util.Objects;
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 a0d643999b8..4f6baec79da 100644
--- a/raft/src/main/java/org/apache/kafka/raft/EpochState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/EpochState.java
@@ -16,8 +16,6 @@
*/
package org.apache.kafka.raft;
-import org.apache.kafka.raft.internals.ReplicaKey;
-
import java.io.Closeable;
import java.util.Optional;
diff --git a/raft/src/main/java/org/apache/kafka/raft/FollowerState.java
b/raft/src/main/java/org/apache/kafka/raft/FollowerState.java
index 2e26e7c5a70..49eecab5d61 100644
--- a/raft/src/main/java/org/apache/kafka/raft/FollowerState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/FollowerState.java
@@ -21,7 +21,6 @@ import org.apache.kafka.common.network.ListenerName;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.common.utils.Timer;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.apache.kafka.snapshot.RawSnapshotWriter;
import org.slf4j.Logger;
diff --git a/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java
b/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java
index b28686fc31e..d9afa803829 100644
--- a/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java
+++ b/raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java
@@ -77,10 +77,8 @@ import org.apache.kafka.raft.internals.KafkaRaftMetrics;
import org.apache.kafka.raft.internals.MemoryBatchReader;
import org.apache.kafka.raft.internals.RecordsBatchReader;
import org.apache.kafka.raft.internals.RemoveVoterHandler;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.apache.kafka.raft.internals.ThresholdPurgatory;
import org.apache.kafka.raft.internals.UpdateVoterHandler;
-import org.apache.kafka.raft.internals.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;
import org.apache.kafka.snapshot.NotifyingRawSnapshotWriter;
diff --git a/raft/src/main/java/org/apache/kafka/raft/LeaderState.java
b/raft/src/main/java/org/apache/kafka/raft/LeaderState.java
index 05f6eaf5ebb..803804858ab 100644
--- a/raft/src/main/java/org/apache/kafka/raft/LeaderState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/LeaderState.java
@@ -30,8 +30,6 @@ import org.apache.kafka.common.utils.Timer;
import org.apache.kafka.raft.internals.AddVoterHandlerState;
import org.apache.kafka.raft.internals.BatchAccumulator;
import org.apache.kafka.raft.internals.RemoveVoterHandlerState;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import org.slf4j.Logger;
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 f61bdab0db8..da2b35609e2 100644
--- a/raft/src/main/java/org/apache/kafka/raft/QuorumState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/QuorumState.java
@@ -22,8 +22,6 @@ import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.raft.internals.BatchAccumulator;
import org.apache.kafka.raft.internals.KRaftControlRecordStateMachine;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
import org.slf4j.Logger;
diff --git a/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java
b/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java
index 7ec629bc9b5..018bec0d632 100644
--- a/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java
+++ b/raft/src/main/java/org/apache/kafka/raft/RaftUtil.java
@@ -42,7 +42,6 @@ import org.apache.kafka.common.network.ListenerName;
import org.apache.kafka.common.protocol.ApiKeys;
import org.apache.kafka.common.protocol.ApiMessage;
import org.apache.kafka.common.protocol.Errors;
-import org.apache.kafka.raft.internals.ReplicaKey;
import java.net.InetSocketAddress;
import java.util.Collection;
diff --git a/raft/src/main/java/org/apache/kafka/raft/internals/ReplicaKey.java
b/raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java
similarity index 98%
rename from raft/src/main/java/org/apache/kafka/raft/internals/ReplicaKey.java
rename to raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java
index 4e7cea17c6b..a1acc39d57c 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/ReplicaKey.java
+++ b/raft/src/main/java/org/apache/kafka/raft/ReplicaKey.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.kafka.raft.internals;
+package org.apache.kafka.raft;
import org.apache.kafka.common.Uuid;
diff --git a/raft/src/main/java/org/apache/kafka/raft/ResignedState.java
b/raft/src/main/java/org/apache/kafka/raft/ResignedState.java
index 267a88ad787..eaee0496b82 100644
--- a/raft/src/main/java/org/apache/kafka/raft/ResignedState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/ResignedState.java
@@ -19,7 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.common.utils.Timer;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.slf4j.Logger;
diff --git a/raft/src/main/java/org/apache/kafka/raft/UnattachedState.java
b/raft/src/main/java/org/apache/kafka/raft/UnattachedState.java
index 999a32f8663..4b21849f818 100644
--- a/raft/src/main/java/org/apache/kafka/raft/UnattachedState.java
+++ b/raft/src/main/java/org/apache/kafka/raft/UnattachedState.java
@@ -19,7 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.common.utils.Timer;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.slf4j.Logger;
diff --git a/raft/src/main/java/org/apache/kafka/raft/internals/VoterSet.java
b/raft/src/main/java/org/apache/kafka/raft/VoterSet.java
similarity index 99%
rename from raft/src/main/java/org/apache/kafka/raft/internals/VoterSet.java
rename to raft/src/main/java/org/apache/kafka/raft/VoterSet.java
index 41f9b93b7d9..a74d2a49e8f 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/VoterSet.java
+++ b/raft/src/main/java/org/apache/kafka/raft/VoterSet.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.kafka.raft.internals;
+package org.apache.kafka.raft;
import org.apache.kafka.common.Node;
import org.apache.kafka.common.Uuid;
@@ -22,7 +22,6 @@ import org.apache.kafka.common.feature.SupportedVersionRange;
import org.apache.kafka.common.message.VotersRecord;
import org.apache.kafka.common.network.ListenerName;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.Endpoints;
import java.net.InetSocketAddress;
import java.util.Collections;
@@ -49,7 +48,7 @@ import java.util.stream.Stream;
public final class VoterSet {
private final Map<Integer, VoterNode> voters;
- VoterSet(Map<Integer, VoterNode> voters) {
+ public VoterSet(Map<Integer, VoterNode> voters) {
if (voters.isEmpty()) {
throw new IllegalArgumentException("Voters cannot be empty");
}
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandler.java
b/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandler.java
index 444e747b1e5..44b9eb2a39d 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandler.java
+++ b/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandler.java
@@ -29,6 +29,8 @@ import org.apache.kafka.raft.Endpoints;
import org.apache.kafka.raft.LeaderState;
import org.apache.kafka.raft.LogOffsetMetadata;
import org.apache.kafka.raft.RaftUtil;
+import org.apache.kafka.raft.ReplicaKey;
+import org.apache.kafka.raft.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import org.slf4j.Logger;
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandlerState.java
b/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandlerState.java
index 5bef0afa709..c403d0e0cd2 100644
---
a/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandlerState.java
+++
b/raft/src/main/java/org/apache/kafka/raft/internals/AddVoterHandlerState.java
@@ -20,6 +20,7 @@ package org.apache.kafka.raft.internals;
import org.apache.kafka.common.message.AddRaftVoterResponseData;
import org.apache.kafka.common.utils.Timer;
import org.apache.kafka.raft.Endpoints;
+import org.apache.kafka.raft.ReplicaKey;
import java.util.OptionalLong;
import java.util.concurrent.CompletableFuture;
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachine.java
b/raft/src/main/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachine.java
index 82f1435a30e..02bc2c823a0 100644
---
a/raft/src/main/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachine.java
+++
b/raft/src/main/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachine.java
@@ -25,6 +25,7 @@ import org.apache.kafka.raft.ControlRecord;
import org.apache.kafka.raft.Isolation;
import org.apache.kafka.raft.LogFetchInfo;
import org.apache.kafka.raft.ReplicatedLog;
+import org.apache.kafka.raft.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;
import org.apache.kafka.snapshot.RawSnapshotReader;
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/KafkaRaftMetrics.java
b/raft/src/main/java/org/apache/kafka/raft/internals/KafkaRaftMetrics.java
index 49abcd0005f..64230b45f72 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/KafkaRaftMetrics.java
+++ b/raft/src/main/java/org/apache/kafka/raft/internals/KafkaRaftMetrics.java
@@ -28,6 +28,7 @@ import org.apache.kafka.common.metrics.stats.WindowedSum;
import org.apache.kafka.raft.LogOffsetMetadata;
import org.apache.kafka.raft.OffsetAndEpoch;
import org.apache.kafka.raft.QuorumState;
+import org.apache.kafka.raft.ReplicaKey;
import java.util.Arrays;
import java.util.OptionalLong;
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/RemoveVoterHandler.java
b/raft/src/main/java/org/apache/kafka/raft/internals/RemoveVoterHandler.java
index 3a62d383dda..29093cc30b6 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/RemoveVoterHandler.java
+++ b/raft/src/main/java/org/apache/kafka/raft/internals/RemoveVoterHandler.java
@@ -24,6 +24,8 @@ import org.apache.kafka.common.utils.Time;
import org.apache.kafka.raft.LeaderState;
import org.apache.kafka.raft.LogOffsetMetadata;
import org.apache.kafka.raft.RaftUtil;
+import org.apache.kafka.raft.ReplicaKey;
+import org.apache.kafka.raft.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import org.slf4j.Logger;
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/UpdateVoterHandler.java
b/raft/src/main/java/org/apache/kafka/raft/internals/UpdateVoterHandler.java
index 985ec189195..417c1decad7 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/UpdateVoterHandler.java
+++ b/raft/src/main/java/org/apache/kafka/raft/internals/UpdateVoterHandler.java
@@ -27,6 +27,8 @@ import org.apache.kafka.raft.LeaderAndEpoch;
import org.apache.kafka.raft.LeaderState;
import org.apache.kafka.raft.LogOffsetMetadata;
import org.apache.kafka.raft.RaftUtil;
+import org.apache.kafka.raft.ReplicaKey;
+import org.apache.kafka.raft.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import java.util.Optional;
diff --git
a/raft/src/main/java/org/apache/kafka/raft/internals/VoterSetHistory.java
b/raft/src/main/java/org/apache/kafka/raft/internals/VoterSetHistory.java
index 4732d6e799f..7f671e6660f 100644
--- a/raft/src/main/java/org/apache/kafka/raft/internals/VoterSetHistory.java
+++ b/raft/src/main/java/org/apache/kafka/raft/internals/VoterSetHistory.java
@@ -16,6 +16,8 @@
*/
package org.apache.kafka.raft.internals;
+import org.apache.kafka.raft.VoterSet;
+
import java.util.Optional;
import java.util.OptionalLong;
diff --git
a/raft/src/main/java/org/apache/kafka/snapshot/RecordsSnapshotWriter.java
b/raft/src/main/java/org/apache/kafka/snapshot/RecordsSnapshotWriter.java
index dd4cc3b2d06..ef26ce3bc05 100644
--- a/raft/src/main/java/org/apache/kafka/snapshot/RecordsSnapshotWriter.java
+++ b/raft/src/main/java/org/apache/kafka/snapshot/RecordsSnapshotWriter.java
@@ -28,9 +28,9 @@ import org.apache.kafka.common.record.RecordBatch;
import org.apache.kafka.common.record.TimestampType;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.raft.OffsetAndEpoch;
+import org.apache.kafka.raft.VoterSet;
import org.apache.kafka.raft.internals.BatchAccumulator;
import org.apache.kafka.raft.internals.BatchAccumulator.CompletedBatch;
-import org.apache.kafka.raft.internals.VoterSet;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;
diff --git a/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java
index be9a0836847..c71f758d149 100644
--- a/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/CandidateStateTest.java
@@ -20,9 +20,6 @@ import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
diff --git a/raft/src/test/java/org/apache/kafka/raft/DynamicVoterTest.java
b/raft/src/test/java/org/apache/kafka/raft/DynamicVoterTest.java
index fe9f295c5bb..f53d006f632 100644
--- a/raft/src/test/java/org/apache/kafka/raft/DynamicVoterTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/DynamicVoterTest.java
@@ -19,8 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.feature.SupportedVersionRange;
import org.apache.kafka.common.network.ListenerName;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
import org.junit.jupiter.api.Test;
diff --git a/raft/src/test/java/org/apache/kafka/raft/DynamicVotersTest.java
b/raft/src/test/java/org/apache/kafka/raft/DynamicVotersTest.java
index 75861213cc0..94f2d54eae2 100644
--- a/raft/src/test/java/org/apache/kafka/raft/DynamicVotersTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/DynamicVotersTest.java
@@ -17,7 +17,6 @@
package org.apache.kafka.raft;
import org.apache.kafka.common.Uuid;
-import org.apache.kafka.raft.internals.VoterSet;
import org.junit.jupiter.api.Test;
diff --git a/raft/src/test/java/org/apache/kafka/raft/ElectionStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/ElectionStateTest.java
index 18b748061cb..715f5d7b482 100644
--- a/raft/src/test/java/org/apache/kafka/raft/ElectionStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/ElectionStateTest.java
@@ -19,7 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.raft.generated.QuorumStateData;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java
b/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java
index 1cf480e5ebf..4759c5c4e67 100644
--- a/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/FileQuorumStateStoreTest.java
@@ -20,7 +20,6 @@ import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.protocol.types.TaggedFields;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.raft.generated.QuorumStateData;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.test.TestUtils;
diff --git a/raft/src/test/java/org/apache/kafka/raft/FollowerStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/FollowerStateTest.java
index 01b20a0570b..4ab40379e8f 100644
--- a/raft/src/test/java/org/apache/kafka/raft/FollowerStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/FollowerStateTest.java
@@ -20,7 +20,6 @@ import org.apache.kafka.common.network.ListenerName;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/KafkaNetworkChannelTest.java
b/raft/src/test/java/org/apache/kafka/raft/KafkaNetworkChannelTest.java
index 579508a2569..96a5df1845f 100644
--- a/raft/src/test/java/org/apache/kafka/raft/KafkaNetworkChannelTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/KafkaNetworkChannelTest.java
@@ -47,7 +47,6 @@ import org.apache.kafka.common.requests.VoteResponse;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Time;
import org.apache.kafka.common.utils.annotation.ApiKeyVersionsSource;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java
b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java
index bb1cbbb7bb0..0d46af767a8 100644
--- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientReconfigTest.java
@@ -36,9 +36,6 @@ import org.apache.kafka.common.record.RecordBatch;
import org.apache.kafka.common.record.Records;
import org.apache.kafka.common.record.TimestampType;
import org.apache.kafka.common.utils.BufferSupplier;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.apache.kafka.server.common.Features;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.snapshot.RecordsSnapshotReader;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java
b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java
index 0b74ee69d3e..3298bd8dca9 100644
--- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientSnapshotTest.java
@@ -26,10 +26,7 @@ import org.apache.kafka.common.record.MemoryRecords;
import org.apache.kafka.common.record.UnalignedMemoryRecords;
import org.apache.kafka.common.requests.FetchSnapshotRequest;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.apache.kafka.raft.internals.StringSerde;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.apache.kafka.snapshot.RawSnapshotReader;
import org.apache.kafka.snapshot.RawSnapshotWriter;
import org.apache.kafka.snapshot.RecordsSnapshotWriter;
diff --git a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java
b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java
index a783ccdc7c7..9106115d6a8 100644
--- a/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/KafkaRaftClientTest.java
@@ -40,9 +40,6 @@ import org.apache.kafka.common.requests.FetchRequest;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.raft.errors.BufferAllocationException;
import org.apache.kafka.raft.errors.NotLeaderException;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.apache.kafka.test.TestUtils;
import org.junit.jupiter.api.Test;
diff --git a/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java
index 8ce18ec9d44..b5e135275ca 100644
--- a/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/LeaderStateTest.java
@@ -20,9 +20,6 @@ import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.raft.internals.BatchAccumulator;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.apache.kafka.server.common.KRaftVersion;
import org.junit.jupiter.api.Test;
diff --git a/raft/src/test/java/org/apache/kafka/raft/MockNetworkChannel.java
b/raft/src/test/java/org/apache/kafka/raft/MockNetworkChannel.java
index b5698545bdf..c8e732e8805 100644
--- a/raft/src/test/java/org/apache/kafka/raft/MockNetworkChannel.java
+++ b/raft/src/test/java/org/apache/kafka/raft/MockNetworkChannel.java
@@ -18,7 +18,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.network.ListenerName;
import org.apache.kafka.common.protocol.ApiKeys;
-import org.apache.kafka.raft.internals.VoterSetTest;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java
index a22cf16123e..fc14f4d9bc3 100644
--- a/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/QuorumStateTest.java
@@ -22,9 +22,6 @@ import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.raft.internals.BatchAccumulator;
import org.apache.kafka.raft.internals.KRaftControlRecordStateMachine;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.apache.kafka.server.common.Features;
import org.apache.kafka.server.common.KRaftVersion;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java
b/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java
index bbe9ddf8bf0..d12140a6c91 100644
--- a/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java
+++ b/raft/src/test/java/org/apache/kafka/raft/RaftClientTestContext.java
@@ -63,9 +63,7 @@ import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Utils;
import org.apache.kafka.raft.internals.BatchBuilder;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.apache.kafka.raft.internals.StringSerde;
-import org.apache.kafka.raft.internals.VoterSet;
import org.apache.kafka.server.common.Features;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;
diff --git a/raft/src/test/java/org/apache/kafka/raft/ResignedStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/ResignedStateTest.java
index 2df82933973..38987eac26b 100644
--- a/raft/src/test/java/org/apache/kafka/raft/ResignedStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/ResignedStateTest.java
@@ -19,8 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.internals.ReplicaKey;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
diff --git a/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java
b/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java
index 113b24c8a6b..926c8525562 100644
--- a/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/UnattachedStateTest.java
@@ -19,7 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/UnattachedStateWithVoteTest.java
b/raft/src/test/java/org/apache/kafka/raft/UnattachedStateWithVoteTest.java
index fdeded219fc..b0cd57bbc02 100644
--- a/raft/src/test/java/org/apache/kafka/raft/UnattachedStateWithVoteTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/UnattachedStateWithVoteTest.java
@@ -19,7 +19,6 @@ package org.apache.kafka.raft;
import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.common.utils.MockTime;
-import org.apache.kafka.raft.internals.ReplicaKey;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/internals/VoterSetTest.java
b/raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java
similarity index 99%
rename from raft/src/test/java/org/apache/kafka/raft/internals/VoterSetTest.java
rename to raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java
index a4f2354d690..1f41f4fd22f 100644
--- a/raft/src/test/java/org/apache/kafka/raft/internals/VoterSetTest.java
+++ b/raft/src/test/java/org/apache/kafka/raft/VoterSetTest.java
@@ -14,14 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.kafka.raft.internals;
+package org.apache.kafka.raft;
import org.apache.kafka.common.Node;
import org.apache.kafka.common.Uuid;
import org.apache.kafka.common.feature.SupportedVersionRange;
import org.apache.kafka.common.network.ListenerName;
import org.apache.kafka.common.utils.Utils;
-import org.apache.kafka.raft.Endpoints;
import org.apache.kafka.server.common.Features;
import org.junit.jupiter.api.Test;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachineTest.java
b/raft/src/test/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachineTest.java
index 93cd37fb250..e3673bef521 100644
---
a/raft/src/test/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachineTest.java
+++
b/raft/src/test/java/org/apache/kafka/raft/internals/KRaftControlRecordStateMachineTest.java
@@ -24,6 +24,8 @@ import org.apache.kafka.common.utils.BufferSupplier;
import org.apache.kafka.common.utils.LogContext;
import org.apache.kafka.raft.MockLog;
import org.apache.kafka.raft.OffsetAndEpoch;
+import org.apache.kafka.raft.VoterSet;
+import org.apache.kafka.raft.VoterSetTest;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;
import org.apache.kafka.snapshot.RecordsSnapshotWriter;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftMetricsTest.java
b/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftMetricsTest.java
index 3e399de3c22..86f18a1aefa 100644
---
a/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftMetricsTest.java
+++
b/raft/src/test/java/org/apache/kafka/raft/internals/KafkaRaftMetricsTest.java
@@ -26,6 +26,9 @@ import org.apache.kafka.raft.LogOffsetMetadata;
import org.apache.kafka.raft.MockQuorumStateStore;
import org.apache.kafka.raft.OffsetAndEpoch;
import org.apache.kafka.raft.QuorumState;
+import org.apache.kafka.raft.ReplicaKey;
+import org.apache.kafka.raft.VoterSet;
+import org.apache.kafka.raft.VoterSetTest;
import org.apache.kafka.server.common.Features;
import org.apache.kafka.server.common.KRaftVersion;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/internals/RecordsIteratorTest.java
b/raft/src/test/java/org/apache/kafka/raft/internals/RecordsIteratorTest.java
index a8d34ec5b33..84904032a57 100644
---
a/raft/src/test/java/org/apache/kafka/raft/internals/RecordsIteratorTest.java
+++
b/raft/src/test/java/org/apache/kafka/raft/internals/RecordsIteratorTest.java
@@ -40,6 +40,8 @@ import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.raft.Batch;
import org.apache.kafka.raft.ControlRecord;
import org.apache.kafka.raft.OffsetAndEpoch;
+import org.apache.kafka.raft.VoterSet;
+import org.apache.kafka.raft.VoterSetTest;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;
import org.apache.kafka.snapshot.MockRawSnapshotWriter;
diff --git
a/raft/src/test/java/org/apache/kafka/raft/internals/VoterSetHistoryTest.java
b/raft/src/test/java/org/apache/kafka/raft/internals/VoterSetHistoryTest.java
index 4cefd448773..f40311d8b7e 100644
---
a/raft/src/test/java/org/apache/kafka/raft/internals/VoterSetHistoryTest.java
+++
b/raft/src/test/java/org/apache/kafka/raft/internals/VoterSetHistoryTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.kafka.raft.internals;
+import org.apache.kafka.raft.VoterSet;
+import org.apache.kafka.raft.VoterSetTest;
+
import org.junit.jupiter.api.Test;
import java.util.HashMap;
diff --git
a/raft/src/test/java/org/apache/kafka/snapshot/RecordsSnapshotWriterTest.java
b/raft/src/test/java/org/apache/kafka/snapshot/RecordsSnapshotWriterTest.java
index 8a5d384462f..3934b9f96f2 100644
---
a/raft/src/test/java/org/apache/kafka/snapshot/RecordsSnapshotWriterTest.java
+++
b/raft/src/test/java/org/apache/kafka/snapshot/RecordsSnapshotWriterTest.java
@@ -25,9 +25,9 @@ import org.apache.kafka.common.utils.BufferSupplier;
import org.apache.kafka.common.utils.MockTime;
import org.apache.kafka.raft.Batch;
import org.apache.kafka.raft.OffsetAndEpoch;
+import org.apache.kafka.raft.VoterSet;
+import org.apache.kafka.raft.VoterSetTest;
import org.apache.kafka.raft.internals.StringSerde;
-import org.apache.kafka.raft.internals.VoterSet;
-import org.apache.kafka.raft.internals.VoterSetTest;
import org.apache.kafka.server.common.KRaftVersion;
import org.apache.kafka.server.common.serialization.RecordSerde;