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 0a367aa1ecd KAFKA-20297 Move OperatingSystem, Java, Exit... into 
internal (#22093)
0a367aa1ecd is described below

commit 0a367aa1ecd7c6aef855281e0b7a8b76b1d689c4
Author: Ken Huang <[email protected]>
AuthorDate: Tue Apr 21 23:56:52 2026 +0800

    KAFKA-20297 Move OperatingSystem, Java, Exit... into internal (#22093)
    
    We have exposed several classes in org.apache.kafka.common.utils as
    public APIs, which can be misleading since not all classes in this
    package are intended for external use.
    
    So move following class into internal module
    - OperatingSystem
    - Java
    - Exit
    - Shell
    - LoggingSignalHandler
    
    Reviewers: cychiu <[email protected]>, Chia-Ping Tsai
     <[email protected]>
---
 .../main/java/org/apache/kafka/common/internals/FatalExitError.java  | 2 +-
 .../org/apache/kafka/common/security/kerberos/KerberosError.java     | 2 +-
 .../org/apache/kafka/common/security/kerberos/KerberosLogin.java     | 2 +-
 clients/src/main/java/org/apache/kafka/common/utils/Utils.java       | 1 +
 .../java/org/apache/kafka/common/utils/{ => internals}/Exit.java     | 4 +---
 .../java/org/apache/kafka/common/utils/{ => internals}/Java.java     | 2 +-
 .../kafka/common/utils/{ => internals}/LoggingSignalHandler.java     | 4 +++-
 .../apache/kafka/common/utils/{ => internals}/OperatingSystem.java   | 2 +-
 .../java/org/apache/kafka/common/utils/{ => internals}/Shell.java    | 4 +---
 .../kafka/common/utils/{ => internals}/ByteBufferUnmapperTest.java   | 3 +--
 .../kafka/common/utils/{ => internals}/ChunkedBytesStreamTest.java   | 5 ++---
 .../java/org/apache/kafka/common/utils/{ => internals}/ExitTest.java | 2 +-
 .../java/org/apache/kafka/common/utils/{ => internals}/JavaTest.java | 2 +-
 .../kafka/common/utils/{ => internals}/LoggingSignalHandlerTest.java | 2 +-
 .../org/apache/kafka/common/utils/{ => internals}/ShellTest.java     | 2 +-
 clients/src/test/java/org/apache/kafka/test/TestUtils.java           | 2 +-
 .../src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java   | 2 +-
 .../mirror/integration/MirrorConnectorsIntegrationBaseTest.java      | 2 +-
 .../main/java/org/apache/kafka/connect/cli/AbstractConnectCli.java   | 2 +-
 .../main/java/org/apache/kafka/connect/cli/ConnectStandalone.java    | 2 +-
 .../src/main/java/org/apache/kafka/connect/runtime/Connect.java      | 2 +-
 .../apache/kafka/connect/runtime/distributed/DistributedHerder.java  | 2 +-
 .../java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java | 2 +-
 core/src/main/scala/kafka/Kafka.scala                                | 3 ++-
 core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala            | 2 +-
 core/src/main/scala/kafka/server/KafkaRequestHandler.scala           | 4 ++--
 core/src/main/scala/kafka/server/ReplicaManager.scala                | 3 ++-
 core/src/main/scala/kafka/tools/StorageTool.scala                    | 3 ++-
 core/src/main/scala/kafka/tools/TestRaftServer.scala                 | 3 ++-
 core/src/test/java/kafka/security/JaasTestUtils.java                 | 2 +-
 core/src/test/java/kafka/security/minikdc/MiniKdc.java               | 4 ++--
 core/src/test/scala/integration/kafka/server/QuorumTestHarness.scala | 3 ++-
 core/src/test/scala/unit/kafka/KafkaConfigTest.scala                 | 2 +-
 core/src/test/scala/unit/kafka/server/ServerShutdownTest.scala       | 3 ++-
 .../unit/kafka/server/metadata/BrokerMetadataPublisherTest.scala     | 2 +-
 gradle/spotbugs-exclude.xml                                          | 2 +-
 .../src/main/java/org/apache/kafka/jmh/log/StressTestLog.java        | 2 +-
 .../src/main/java/org/apache/kafka/jmh/log/TestLinearWriteSpeed.java | 2 +-
 .../apache/kafka/server/fault/ProcessTerminatingFaultHandler.java    | 2 +-
 .../java/org/apache/kafka/server/metrics/KafkaYammerMetrics.java     | 2 +-
 .../src/main/java/org/apache/kafka/server/util/CommandLineUtils.java | 2 +-
 .../main/java/org/apache/kafka/server/util/ShutdownableThread.java   | 2 +-
 .../kafka/server/fault/ProcessTerminatingFaultHandlerTest.java       | 4 ++--
 .../test/java/org/apache/kafka/server/util/CommandLineUtilsTest.java | 2 +-
 .../java/org/apache/kafka/server/util/ShutdownableThreadTest.java    | 2 +-
 shell/src/main/java/org/apache/kafka/shell/MetadataShell.java        | 2 +-
 .../main/java/org/apache/kafka/shell/command/ExitCommandHandler.java | 2 +-
 .../remote/metadata/storage/TopicBasedRemoteLogMetadataManager.java  | 2 +-
 .../main/java/org/apache/kafka/storage/internals/log/LogManager.java | 2 +-
 .../metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java     | 2 +-
 .../kafka/streams/integration/SmokeTestDriverIntegrationTest.java    | 2 +-
 .../java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java | 2 +-
 .../java/org/apache/kafka/streams/tests/ShutdownDeadlockTest.java    | 2 +-
 .../test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java    | 2 +-
 .../java/org/apache/kafka/streams/tests/StaticMemberTestClient.java  | 2 +-
 .../apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java  | 2 +-
 .../org/apache/kafka/streams/tests/StreamsNamedRepartitionTest.java  | 2 +-
 .../java/org/apache/kafka/streams/tests/StreamsOptimizedTest.java    | 2 +-
 .../test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java   | 2 +-
 .../org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java    | 2 +-
 .../test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java | 2 +-
 .../src/main/java/org/apache/kafka/common/test/TestUtils.java        | 2 +-
 tools/src/main/java/org/apache/kafka/tools/AclCommand.java           | 2 +-
 .../main/java/org/apache/kafka/tools/BrokerApiVersionsCommand.java   | 2 +-
 .../main/java/org/apache/kafka/tools/ClientCompatibilityTest.java    | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ClusterTool.java          | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java        | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java    | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ConsoleProducer.java      | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ConsumerPerformance.java  | 2 +-
 .../src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java | 2 +-
 tools/src/main/java/org/apache/kafka/tools/DeleteRecordsCommand.java | 2 +-
 tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java      | 2 +-
 tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java       | 2 +-
 tools/src/main/java/org/apache/kafka/tools/GetOffsetShell.java       | 2 +-
 tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java        | 2 +-
 tools/src/main/java/org/apache/kafka/tools/JmxTool.java              | 2 +-
 .../src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java  | 2 +-
 tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java  | 2 +-
 tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java       | 2 +-
 .../src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java  | 2 +-
 .../src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java | 2 +-
 .../main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java  | 2 +-
 tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java  | 2 +-
 .../main/java/org/apache/kafka/tools/ReplicaVerificationTool.java    | 2 +-
 .../main/java/org/apache/kafka/tools/ShareConsumerPerformance.java   | 2 +-
 tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java      | 2 +-
 tools/src/main/java/org/apache/kafka/tools/TopicCommand.java         | 2 +-
 .../main/java/org/apache/kafka/tools/TransactionalMessageCopier.java | 2 +-
 tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java  | 2 +-
 .../main/java/org/apache/kafka/tools/consumer/ConsoleConsumer.java   | 2 +-
 .../java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java | 2 +-
 .../java/org/apache/kafka/tools/consumer/ConsoleShareConsumer.java   | 2 +-
 .../org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java   | 2 +-
 .../java/org/apache/kafka/tools/streams/StreamsGroupCommand.java     | 2 +-
 tools/src/test/java/org/apache/kafka/tools/AclCommandTest.java       | 2 +-
 .../test/java/org/apache/kafka/tools/ClientMetricsCommandTest.java   | 2 +-
 .../java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java    | 2 +-
 tools/src/test/java/org/apache/kafka/tools/ConfigCommandTest.java    | 2 +-
 tools/src/test/java/org/apache/kafka/tools/ConsoleProducerTest.java  | 2 +-
 .../test/java/org/apache/kafka/tools/ConsumerPerformanceTest.java    | 2 +-
 .../test/java/org/apache/kafka/tools/DelegationTokenCommandTest.java | 2 +-
 tools/src/test/java/org/apache/kafka/tools/DumpLogSegmentsTest.java  | 2 +-
 tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java  | 2 +-
 tools/src/test/java/org/apache/kafka/tools/GetOffsetShellTest.java   | 2 +-
 tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java    | 2 +-
 tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java          | 2 +-
 .../test/java/org/apache/kafka/tools/LeaderElectionCommandTest.java  | 2 +-
 tools/src/test/java/org/apache/kafka/tools/ResetIntegrationTest.java | 2 +-
 .../java/org/apache/kafka/tools/ShareConsumerPerformanceTest.java    | 2 +-
 tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java       | 2 +-
 tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java     | 2 +-
 .../test/java/org/apache/kafka/tools/TransactionsCommandTest.java    | 2 +-
 .../java/org/apache/kafka/tools/UserScramCredentialsCommandTest.java | 2 +-
 .../org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java  | 2 +-
 .../apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java | 2 +-
 .../apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java | 2 +-
 .../org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java | 2 +-
 .../java/org/apache/kafka/tools/other/ReplicationQuotasTestRig.java  | 2 +-
 .../kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java      | 2 +-
 .../org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java  | 2 +-
 .../org/apache/kafka/tools/streams/DeleteStreamsGroupOffsetTest.java | 2 +-
 .../java/org/apache/kafka/tools/streams/DeleteStreamsGroupTest.java  | 2 +-
 .../org/apache/kafka/tools/streams/DescribeStreamsGroupTest.java     | 2 +-
 .../org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java  | 2 +-
 trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java      | 2 +-
 .../src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java    | 2 +-
 .../src/main/java/org/apache/kafka/trogdor/basic/BasicPlatform.java  | 2 +-
 .../main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java  | 2 +-
 .../java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java | 2 +-
 .../org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java | 2 +-
 132 files changed, 144 insertions(+), 141 deletions(-)

diff --git 
a/clients/src/main/java/org/apache/kafka/common/internals/FatalExitError.java 
b/clients/src/main/java/org/apache/kafka/common/internals/FatalExitError.java
index 3227eb0262c..5439b997762 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/internals/FatalExitError.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/internals/FatalExitError.java
@@ -16,7 +16,7 @@
  */
 package org.apache.kafka.common.internals;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 /**
  * An error that indicates the need to exit the JVM process. This should only 
be used by the server or command-line
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosError.java
 
b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosError.java
index 631b322f904..bc156b8b8a6 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosError.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosError.java
@@ -18,7 +18,7 @@ package org.apache.kafka.common.security.kerberos;
 
 import org.apache.kafka.common.KafkaException;
 import org.apache.kafka.common.security.authenticator.SaslClientAuthenticator;
-import org.apache.kafka.common.utils.Java;
+import org.apache.kafka.common.utils.internals.Java;
 
 import org.ietf.jgss.GSSException;
 import org.slf4j.Logger;
diff --git 
a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java
 
b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java
index d032f4c9439..2ac0df51204 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/security/kerberos/KerberosLogin.java
@@ -21,9 +21,9 @@ import org.apache.kafka.common.security.JaasContext;
 import org.apache.kafka.common.security.JaasUtils;
 import org.apache.kafka.common.security.auth.AuthenticateCallbackHandler;
 import org.apache.kafka.common.security.authenticator.AbstractLogin;
-import org.apache.kafka.common.utils.Shell;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.internals.KafkaThread;
+import org.apache.kafka.common.utils.internals.Shell;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/clients/src/main/java/org/apache/kafka/common/utils/Utils.java 
b/clients/src/main/java/org/apache/kafka/common/utils/Utils.java
index f8b8456d5f8..9ee0d7c9d2e 100644
--- a/clients/src/main/java/org/apache/kafka/common/utils/Utils.java
+++ b/clients/src/main/java/org/apache/kafka/common/utils/Utils.java
@@ -20,6 +20,7 @@ import org.apache.kafka.common.KafkaException;
 import org.apache.kafka.common.config.ConfigDef;
 import org.apache.kafka.common.config.ConfigException;
 import org.apache.kafka.common.network.TransferableChannel;
+import org.apache.kafka.common.utils.internals.OperatingSystem;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/clients/src/main/java/org/apache/kafka/common/utils/Exit.java 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/Exit.java
similarity index 97%
rename from clients/src/main/java/org/apache/kafka/common/utils/Exit.java
rename to 
clients/src/main/java/org/apache/kafka/common/utils/internals/Exit.java
index 6dee6f96fe1..d38356c3d5c 100644
--- a/clients/src/main/java/org/apache/kafka/common/utils/Exit.java
+++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/Exit.java
@@ -14,9 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
-
-import org.apache.kafka.common.utils.internals.KafkaThread;
+package org.apache.kafka.common.utils.internals;
 
 /**
  * Internal class that should be used instead of `System.exit()` and 
`Runtime.getRuntime().halt()` so that tests can
diff --git a/clients/src/main/java/org/apache/kafka/common/utils/Java.java 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/Java.java
similarity index 95%
rename from clients/src/main/java/org/apache/kafka/common/utils/Java.java
rename to 
clients/src/main/java/org/apache/kafka/common/utils/internals/Java.java
index 339892d6694..c2f0e06ed53 100644
--- a/clients/src/main/java/org/apache/kafka/common/utils/Java.java
+++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/Java.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
 public final class Java {
 
diff --git 
a/clients/src/main/java/org/apache/kafka/common/utils/LoggingSignalHandler.java 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/LoggingSignalHandler.java
similarity index 98%
rename from 
clients/src/main/java/org/apache/kafka/common/utils/LoggingSignalHandler.java
rename to 
clients/src/main/java/org/apache/kafka/common/utils/internals/LoggingSignalHandler.java
index e0a8f89e848..8ebb30a5d45 100644
--- 
a/clients/src/main/java/org/apache/kafka/common/utils/LoggingSignalHandler.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/LoggingSignalHandler.java
@@ -14,7 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
+
+import org.apache.kafka.common.utils.Utils;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/clients/src/main/java/org/apache/kafka/common/utils/OperatingSystem.java 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java
similarity index 96%
rename from 
clients/src/main/java/org/apache/kafka/common/utils/OperatingSystem.java
rename to 
clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java
index 8dc8b86233f..450e604bf3d 100644
--- a/clients/src/main/java/org/apache/kafka/common/utils/OperatingSystem.java
+++ 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/OperatingSystem.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
 import java.util.Locale;
 
diff --git a/clients/src/main/java/org/apache/kafka/common/utils/Shell.java 
b/clients/src/main/java/org/apache/kafka/common/utils/internals/Shell.java
similarity index 98%
rename from clients/src/main/java/org/apache/kafka/common/utils/Shell.java
rename to 
clients/src/main/java/org/apache/kafka/common/utils/internals/Shell.java
index 05d9b211f23..0919256f6ab 100644
--- a/clients/src/main/java/org/apache/kafka/common/utils/Shell.java
+++ b/clients/src/main/java/org/apache/kafka/common/utils/internals/Shell.java
@@ -14,9 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
-
-import org.apache.kafka.common.utils.internals.KafkaThread;
+package org.apache.kafka.common.utils.internals;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferUnmapperTest.java
 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ByteBufferUnmapperTest.java
similarity index 93%
rename from 
clients/src/test/java/org/apache/kafka/common/utils/ByteBufferUnmapperTest.java
rename to 
clients/src/test/java/org/apache/kafka/common/utils/internals/ByteBufferUnmapperTest.java
index 05e5ad963b2..e516818c0d0 100644
--- 
a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferUnmapperTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ByteBufferUnmapperTest.java
@@ -15,9 +15,8 @@
  * limitations under the License.
  */
 
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
-import org.apache.kafka.common.utils.internals.ByteBufferUnmapper;
 import org.apache.kafka.test.TestUtils;
 
 import org.junit.jupiter.api.Test;
diff --git 
a/clients/src/test/java/org/apache/kafka/common/utils/ChunkedBytesStreamTest.java
 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ChunkedBytesStreamTest.java
similarity index 98%
rename from 
clients/src/test/java/org/apache/kafka/common/utils/ChunkedBytesStreamTest.java
rename to 
clients/src/test/java/org/apache/kafka/common/utils/internals/ChunkedBytesStreamTest.java
index e7703592471..8323969ad34 100644
--- 
a/clients/src/test/java/org/apache/kafka/common/utils/ChunkedBytesStreamTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ChunkedBytesStreamTest.java
@@ -14,10 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
-import org.apache.kafka.common.utils.internals.BufferSupplier;
-import org.apache.kafka.common.utils.internals.ChunkedBytesStream;
+import org.apache.kafka.common.utils.ByteBufferInputStream;
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
diff --git a/clients/src/test/java/org/apache/kafka/common/utils/ExitTest.java 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ExitTest.java
similarity index 98%
rename from clients/src/test/java/org/apache/kafka/common/utils/ExitTest.java
rename to 
clients/src/test/java/org/apache/kafka/common/utils/internals/ExitTest.java
index b345c5c6fbe..5e208b3d3f3 100644
--- a/clients/src/test/java/org/apache/kafka/common/utils/ExitTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ExitTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/clients/src/test/java/org/apache/kafka/common/utils/JavaTest.java 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/JavaTest.java
similarity index 98%
rename from clients/src/test/java/org/apache/kafka/common/utils/JavaTest.java
rename to 
clients/src/test/java/org/apache/kafka/common/utils/internals/JavaTest.java
index 6f5a12acfc8..f6a9ca7260f 100644
--- a/clients/src/test/java/org/apache/kafka/common/utils/JavaTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/JavaTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/clients/src/test/java/org/apache/kafka/common/utils/LoggingSignalHandlerTest.java
 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/LoggingSignalHandlerTest.java
similarity index 95%
rename from 
clients/src/test/java/org/apache/kafka/common/utils/LoggingSignalHandlerTest.java
rename to 
clients/src/test/java/org/apache/kafka/common/utils/internals/LoggingSignalHandlerTest.java
index cdf30c29d7b..2718ff1556c 100644
--- 
a/clients/src/test/java/org/apache/kafka/common/utils/LoggingSignalHandlerTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/LoggingSignalHandlerTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/clients/src/test/java/org/apache/kafka/common/utils/ShellTest.java 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ShellTest.java
similarity index 98%
rename from clients/src/test/java/org/apache/kafka/common/utils/ShellTest.java
rename to 
clients/src/test/java/org/apache/kafka/common/utils/internals/ShellTest.java
index 124dfb69d88..715cbbad6a4 100644
--- a/clients/src/test/java/org/apache/kafka/common/utils/ShellTest.java
+++ 
b/clients/src/test/java/org/apache/kafka/common/utils/internals/ShellTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.kafka.common.utils;
+package org.apache.kafka.common.utils.internals;
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Timeout;
diff --git a/clients/src/test/java/org/apache/kafka/test/TestUtils.java 
b/clients/src/test/java/org/apache/kafka/test/TestUtils.java
index d6fcaf0499c..871fe764817 100644
--- a/clients/src/test/java/org/apache/kafka/test/TestUtils.java
+++ b/clients/src/test/java/org/apache/kafka/test/TestUtils.java
@@ -37,8 +37,8 @@ import org.apache.kafka.common.requests.ByteBufferChannel;
 import org.apache.kafka.common.requests.MetadataResponse.PartitionMetadata;
 import org.apache.kafka.common.requests.RequestHeader;
 import org.apache.kafka.common.serialization.StringDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java 
b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java
index 01e38340b93..947c3a36fb5 100644
--- 
a/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java
+++ 
b/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMaker.java
@@ -16,9 +16,9 @@
  */
 package org.apache.kafka.connect.mirror;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import 
org.apache.kafka.connect.connector.policy.AllConnectorClientConfigOverridePolicy;
 import 
org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;
 import org.apache.kafka.connect.json.JsonConverter;
diff --git 
a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java
 
b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java
index e266acce74a..d73caf96307 100644
--- 
a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java
+++ 
b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java
@@ -41,10 +41,10 @@ import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.config.ConfigResource;
 import org.apache.kafka.common.config.TopicConfig;
 import org.apache.kafka.common.metrics.KafkaMetric;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Timer;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.connect.connector.Connector;
 import org.apache.kafka.connect.mirror.Checkpoint;
 import org.apache.kafka.connect.mirror.DefaultConfigPropertyFilter;
diff --git 
a/connect/runtime/src/main/java/org/apache/kafka/connect/cli/AbstractConnectCli.java
 
b/connect/runtime/src/main/java/org/apache/kafka/connect/cli/AbstractConnectCli.java
index 4cd43d7c9ef..7456e49c75a 100644
--- 
a/connect/runtime/src/main/java/org/apache/kafka/connect/cli/AbstractConnectCli.java
+++ 
b/connect/runtime/src/main/java/org/apache/kafka/connect/cli/AbstractConnectCli.java
@@ -16,9 +16,9 @@
  */
 package org.apache.kafka.connect.cli;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import 
org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;
 import org.apache.kafka.connect.runtime.Connect;
 import org.apache.kafka.connect.runtime.Herder;
diff --git 
a/connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java
 
b/connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java
index ded4103c69c..f9e04a1bb4c 100644
--- 
a/connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java
+++ 
b/connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java
@@ -16,9 +16,9 @@
  */
 package org.apache.kafka.connect.cli;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import 
org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;
 import org.apache.kafka.connect.errors.ConnectException;
 import org.apache.kafka.connect.json.JsonConverter;
diff --git 
a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Connect.java 
b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Connect.java
index d5de59f6a26..bae26970362 100644
--- 
a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Connect.java
+++ 
b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Connect.java
@@ -16,7 +16,7 @@
  */
 package org.apache.kafka.connect.runtime;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.connect.runtime.distributed.DistributedHerder;
 import org.apache.kafka.connect.runtime.rest.ConnectRestServer;
 import org.apache.kafka.connect.runtime.rest.RestServer;
diff --git 
a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java
 
b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java
index 65b334c1d28..f1fd7846f28 100644
--- 
a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java
+++ 
b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/distributed/DistributedHerder.java
@@ -25,10 +25,10 @@ import org.apache.kafka.common.metrics.Sensor;
 import org.apache.kafka.common.metrics.stats.Avg;
 import org.apache.kafka.common.metrics.stats.CumulativeSum;
 import org.apache.kafka.common.metrics.stats.Max;
-import org.apache.kafka.common.utils.Exit;
 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.common.utils.internals.Exit;
 import org.apache.kafka.common.utils.internals.ExponentialBackoff;
 import org.apache.kafka.common.utils.internals.ThreadUtils;
 import 
org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;
diff --git 
a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java
 
b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java
index c8caf8889eb..8784516c66e 100644
--- 
a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java
+++ 
b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedConnect.java
@@ -18,8 +18,8 @@ package org.apache.kafka.connect.util.clusters;
 
 import org.apache.kafka.clients.consumer.OffsetAndMetadata;
 import org.apache.kafka.common.TopicPartition;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.connect.errors.ConnectException;
 import org.apache.kafka.connect.runtime.isolation.Plugins;
 import org.apache.kafka.connect.runtime.rest.entities.ActiveTopicsInfo;
diff --git a/core/src/main/scala/kafka/Kafka.scala 
b/core/src/main/scala/kafka/Kafka.scala
index 828c12eaa6c..260734497b5 100755
--- a/core/src/main/scala/kafka/Kafka.scala
+++ b/core/src/main/scala/kafka/Kafka.scala
@@ -22,7 +22,8 @@ import joptsimple.OptionParser
 import kafka.server.{KafkaConfig, KafkaRaftServer, Server}
 import kafka.utils.Implicits._
 import kafka.utils.Logging
-import org.apache.kafka.common.utils.{Exit, Java, LoggingSignalHandler, 
OperatingSystem, Time, Utils}
+import org.apache.kafka.common.utils.internals.{Exit, Java, 
LoggingSignalHandler, OperatingSystem}
+import org.apache.kafka.common.utils.{Time, Utils}
 import org.apache.kafka.server.util.CommandLineUtils
 
 object Kafka extends Logging {
diff --git a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala 
b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala
index 3faa3843ed8..8d6049e1393 100644
--- a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala
+++ b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala
@@ -27,7 +27,7 @@ import kafka.utils.Logging
 import net.sourceforge.argparse4j.ArgumentParsers
 import net.sourceforge.argparse4j.impl.Arguments.store
 import net.sourceforge.argparse4j.inf.Namespace
-import org.apache.kafka.common.utils.Exit
+import org.apache.kafka.common.utils.internals.Exit
 import org.apache.kafka.raft.QuorumConfig
 import org.apache.kafka.server.util.TerseFailure
 
diff --git a/core/src/main/scala/kafka/server/KafkaRequestHandler.scala 
b/core/src/main/scala/kafka/server/KafkaRequestHandler.scala
index a4385e7ce13..925364b0f1c 100755
--- a/core/src/main/scala/kafka/server/KafkaRequestHandler.scala
+++ b/core/src/main/scala/kafka/server/KafkaRequestHandler.scala
@@ -25,8 +25,8 @@ import java.util.concurrent.{CountDownLatch, TimeUnit}
 import java.util.concurrent.atomic.AtomicInteger
 import com.yammer.metrics.core.Meter
 import org.apache.kafka.common.internals.FatalExitError
-import org.apache.kafka.common.utils.internals.KafkaThread
-import org.apache.kafka.common.utils.{Exit, Time}
+import org.apache.kafka.common.utils.internals.{Exit, KafkaThread}
+import org.apache.kafka.common.utils.Time
 import org.apache.kafka.server.common.RequestLocal
 import org.apache.kafka.server.metrics.KafkaMetricsGroup
 
diff --git a/core/src/main/scala/kafka/server/ReplicaManager.scala 
b/core/src/main/scala/kafka/server/ReplicaManager.scala
index 8b0d3950c17..b109d8d411b 100644
--- a/core/src/main/scala/kafka/server/ReplicaManager.scala
+++ b/core/src/main/scala/kafka/server/ReplicaManager.scala
@@ -42,7 +42,8 @@ import org.apache.kafka.common.replica._
 import org.apache.kafka.common.requests.FetchRequest.PartitionData
 import org.apache.kafka.common.requests.ProduceResponse.PartitionResponse
 import org.apache.kafka.common.requests._
-import org.apache.kafka.common.utils.{Exit, Time, Utils}
+import org.apache.kafka.common.utils.internals.Exit
+import org.apache.kafka.common.utils.{Time, Utils}
 import org.apache.kafka.coordinator.transaction.{AddPartitionsToTxnConfig, 
TransactionLogConfig}
 import org.apache.kafka.image.{LocalReplicaChanges, MetadataImage, TopicsDelta}
 import org.apache.kafka.logger.StateChangeLogger
diff --git a/core/src/main/scala/kafka/tools/StorageTool.scala 
b/core/src/main/scala/kafka/tools/StorageTool.scala
index 56c03921f80..45642595974 100644
--- a/core/src/main/scala/kafka/tools/StorageTool.scala
+++ b/core/src/main/scala/kafka/tools/StorageTool.scala
@@ -26,7 +26,8 @@ import net.sourceforge.argparse4j.impl.Arguments.{append, 
store, storeTrue}
 import net.sourceforge.argparse4j.inf.{ArgumentParserException, Namespace, 
Subparser, Subparsers}
 import net.sourceforge.argparse4j.internal.HelpScreenException
 import org.apache.kafka.common.Uuid
-import org.apache.kafka.common.utils.{Exit, Utils}
+import org.apache.kafka.common.utils.Utils
+import org.apache.kafka.common.utils.internals.Exit
 import org.apache.kafka.server.common.{Feature, MetadataVersion}
 import org.apache.kafka.metadata.properties.{MetaProperties, 
MetaPropertiesEnsemble, MetaPropertiesVersion, PropertiesUtils}
 import org.apache.kafka.metadata.storage.{Formatter, FormatterException}
diff --git a/core/src/main/scala/kafka/tools/TestRaftServer.scala 
b/core/src/main/scala/kafka/tools/TestRaftServer.scala
index a76abfce055..4690fabf7e3 100644
--- a/core/src/main/scala/kafka/tools/TestRaftServer.scala
+++ b/core/src/main/scala/kafka/tools/TestRaftServer.scala
@@ -33,7 +33,8 @@ import org.apache.kafka.common.network.ListenerName
 import org.apache.kafka.common.protocol.{ObjectSerializationCache, Writable}
 import org.apache.kafka.common.security.scram.internals.ScramMechanism
 import 
org.apache.kafka.common.security.token.delegation.internals.DelegationTokenCache
-import org.apache.kafka.common.utils.{Exit, Time, Utils}
+import org.apache.kafka.common.utils.internals.Exit
+import org.apache.kafka.common.utils.{Time, Utils}
 import org.apache.kafka.common.{TopicPartition, Uuid, protocol}
 import org.apache.kafka.raft.errors.NotLeaderException
 import org.apache.kafka.raft.{Batch, BatchReader, Endpoints, KRaftConfigs, 
LeaderAndEpoch, QuorumConfig, RaftClient, RaftManager}
diff --git a/core/src/test/java/kafka/security/JaasTestUtils.java 
b/core/src/test/java/kafka/security/JaasTestUtils.java
index 2e81dbe3502..8a3b8433961 100644
--- a/core/src/test/java/kafka/security/JaasTestUtils.java
+++ b/core/src/test/java/kafka/security/JaasTestUtils.java
@@ -23,7 +23,7 @@ import org.apache.kafka.clients.admin.ScramMechanism;
 import org.apache.kafka.common.config.SaslConfigs;
 import org.apache.kafka.common.network.ConnectionMode;
 import org.apache.kafka.common.security.auth.SecurityProtocol;
-import org.apache.kafka.common.utils.Java;
+import org.apache.kafka.common.utils.internals.Java;
 import org.apache.kafka.test.TestSslUtils;
 
 import java.io.BufferedWriter;
diff --git a/core/src/test/java/kafka/security/minikdc/MiniKdc.java 
b/core/src/test/java/kafka/security/minikdc/MiniKdc.java
index b612543771d..e82f74d58e9 100644
--- a/core/src/test/java/kafka/security/minikdc/MiniKdc.java
+++ b/core/src/test/java/kafka/security/minikdc/MiniKdc.java
@@ -16,9 +16,9 @@
  */
 package kafka.security.minikdc;
 
-import org.apache.kafka.common.utils.Exit;
-import org.apache.kafka.common.utils.Java;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
+import org.apache.kafka.common.utils.internals.Java;
 
 import org.apache.commons.lang.text.StrSubstitutor;
 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
diff --git 
a/core/src/test/scala/integration/kafka/server/QuorumTestHarness.scala 
b/core/src/test/scala/integration/kafka/server/QuorumTestHarness.scala
index 49ae061e4f3..bfeb572bd38 100755
--- a/core/src/test/scala/integration/kafka/server/QuorumTestHarness.scala
+++ b/core/src/test/scala/integration/kafka/server/QuorumTestHarness.scala
@@ -31,7 +31,8 @@ import org.apache.kafka.clients.producer.KafkaProducer
 import org.apache.kafka.common.metrics.Metrics
 import org.apache.kafka.common.security.JaasUtils
 import org.apache.kafka.common.security.auth.SecurityProtocol
-import org.apache.kafka.common.utils.{Exit, Time, Utils}
+import org.apache.kafka.common.utils.internals.Exit
+import org.apache.kafka.common.utils.{Time, Utils}
 import org.apache.kafka.common.{DirectoryId, Uuid}
 import 
org.apache.kafka.metadata.properties.MetaPropertiesEnsemble.VerificationFlag.{REQUIRE_AT_LEAST_ONE_VALID,
 REQUIRE_METADATA_LOG_DIR}
 import org.apache.kafka.metadata.properties.{MetaProperties, 
MetaPropertiesEnsemble, MetaPropertiesVersion}
diff --git a/core/src/test/scala/unit/kafka/KafkaConfigTest.scala 
b/core/src/test/scala/unit/kafka/KafkaConfigTest.scala
index 048b15b8f7f..ad6387c6e39 100644
--- a/core/src/test/scala/unit/kafka/KafkaConfigTest.scala
+++ b/core/src/test/scala/unit/kafka/KafkaConfigTest.scala
@@ -26,7 +26,7 @@ import org.apache.kafka.common.config.SslConfigs
 import org.apache.kafka.common.config.internals.BrokerSecurityConfigs
 import org.apache.kafka.common.config.types.Password
 import org.apache.kafka.common.internals.FatalExitError
-import org.apache.kafka.common.utils.Exit
+import org.apache.kafka.common.utils.internals.Exit
 import org.apache.kafka.network.SocketServerConfigs
 import org.apache.kafka.raft.{KRaftConfigs, QuorumConfig}
 import org.apache.kafka.server.config.ReplicationConfigs
diff --git a/core/src/test/scala/unit/kafka/server/ServerShutdownTest.scala 
b/core/src/test/scala/unit/kafka/server/ServerShutdownTest.scala
index 0f3125685ad..fc99c9b044a 100644
--- a/core/src/test/scala/unit/kafka/server/ServerShutdownTest.scala
+++ b/core/src/test/scala/unit/kafka/server/ServerShutdownTest.scala
@@ -25,7 +25,8 @@ import org.apache.kafka.clients.consumer.Consumer
 import org.apache.kafka.clients.producer.{KafkaProducer, ProducerRecord}
 import org.apache.kafka.common.security.auth.SecurityProtocol
 import org.apache.kafka.common.serialization.{IntegerDeserializer, 
IntegerSerializer, StringDeserializer, StringSerializer}
-import org.apache.kafka.common.utils.{Exit, Utils}
+import org.apache.kafka.common.utils.Utils
+import org.apache.kafka.common.utils.internals.Exit
 import org.apache.kafka.metadata.BrokerState
 import org.apache.kafka.raft.KRaftConfigs
 import org.apache.kafka.server.config.ServerLogConfigs
diff --git 
a/core/src/test/scala/unit/kafka/server/metadata/BrokerMetadataPublisherTest.scala
 
b/core/src/test/scala/unit/kafka/server/metadata/BrokerMetadataPublisherTest.scala
index ffc24ca2e42..4b0332fcc71 100644
--- 
a/core/src/test/scala/unit/kafka/server/metadata/BrokerMetadataPublisherTest.scala
+++ 
b/core/src/test/scala/unit/kafka/server/metadata/BrokerMetadataPublisherTest.scala
@@ -33,7 +33,7 @@ import 
org.apache.kafka.common.config.ConfigResource.Type.BROKER
 import org.apache.kafka.common.internals.Topic
 import org.apache.kafka.common.metadata.{FeatureLevelRecord, PartitionRecord, 
RemoveTopicRecord, TopicRecord}
 import org.apache.kafka.common.test.{KafkaClusterTestKit, TestKitNodes}
-import org.apache.kafka.common.utils.Exit
+import org.apache.kafka.common.utils.internals.Exit
 import org.apache.kafka.coordinator.group.GroupCoordinator
 import org.apache.kafka.coordinator.share.ShareCoordinator
 import org.apache.kafka.image.{AclsImage, ClientQuotasImage, ClusterImageTest, 
ConfigurationsImage, DelegationTokenImage, FeaturesImage, MetadataDelta, 
MetadataImage, MetadataImageTest, MetadataProvenance, ProducerIdsImage, 
ScramImage, TopicsImage}
diff --git a/gradle/spotbugs-exclude.xml b/gradle/spotbugs-exclude.xml
index a3fa66e3c79..f02f9e04bb3 100644
--- a/gradle/spotbugs-exclude.xml
+++ b/gradle/spotbugs-exclude.xml
@@ -589,7 +589,7 @@ For a detailed description of spotbugs bug categories, see 
https://spotbugs.read
             <Class 
name="org.apache.kafka.common.security.oauthbearer.OAuthBearerValidatorCallbackHandler"/>
             <Class 
name="org.apache.kafka.common.security.oauthbearer.internals.secured.RefreshingHttpsJwks"/>
             <Class 
name="org.apache.kafka.common.utils.internals.ChunkedBytesStream"/>
-            <Class name="org.apache.kafka.common.utils.Shell"/>
+            <Class name="org.apache.kafka.common.utils.internals.Shell"/>
             <Class 
name="org.apache.kafka.clients.producer.internals.TransactionManager$TxnRequestHandler"/>
             <Class 
name="org.apache.kafka.server.log.remote.metadata.storage.ConsumerTask"/>
             <Class name="org.apache.kafka.storage.internals.log.LogSegment"/>
diff --git 
a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/StressTestLog.java 
b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/StressTestLog.java
index 60ee2a523a3..310ecc907b7 100644
--- a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/StressTestLog.java
+++ b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/StressTestLog.java
@@ -25,8 +25,8 @@ import org.apache.kafka.common.record.internal.MemoryRecords;
 import org.apache.kafka.common.record.internal.RecordBatch;
 import org.apache.kafka.common.record.internal.Records;
 import org.apache.kafka.common.record.internal.SimpleRecord;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.common.RequestLocal;
 import org.apache.kafka.server.storage.log.FetchIsolation;
 import org.apache.kafka.server.util.MockTime;
diff --git 
a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/TestLinearWriteSpeed.java
 
b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/TestLinearWriteSpeed.java
index a3e4510b70c..555e4b6f1dc 100644
--- 
a/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/TestLinearWriteSpeed.java
+++ 
b/jmh-benchmarks/src/main/java/org/apache/kafka/jmh/log/TestLinearWriteSpeed.java
@@ -25,10 +25,10 @@ import 
org.apache.kafka.common.record.internal.CompressionType;
 import org.apache.kafka.common.record.internal.MemoryRecords;
 import org.apache.kafka.common.record.internal.Records;
 import org.apache.kafka.common.record.internal.SimpleRecord;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
 import org.apache.kafka.common.utils.internals.CopyOnWriteMap;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.coordinator.transaction.TransactionLogConfig;
 import org.apache.kafka.server.common.RequestLocal;
 import org.apache.kafka.server.util.CommandLineUtils;
diff --git 
a/server-common/src/main/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandler.java
 
b/server-common/src/main/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandler.java
index 25ba8877cd1..b8c659147bf 100644
--- 
a/server-common/src/main/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandler.java
+++ 
b/server-common/src/main/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandler.java
@@ -17,7 +17,7 @@
 
 package org.apache.kafka.server.fault;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/server-common/src/main/java/org/apache/kafka/server/metrics/KafkaYammerMetrics.java
 
b/server-common/src/main/java/org/apache/kafka/server/metrics/KafkaYammerMetrics.java
index 0bf3adf5c29..c0521be34f7 100644
--- 
a/server-common/src/main/java/org/apache/kafka/server/metrics/KafkaYammerMetrics.java
+++ 
b/server-common/src/main/java/org/apache/kafka/server/metrics/KafkaYammerMetrics.java
@@ -20,7 +20,7 @@ package org.apache.kafka.server.metrics;
 import org.apache.kafka.common.Reconfigurable;
 import org.apache.kafka.common.config.ConfigException;
 import org.apache.kafka.common.metrics.JmxReporter;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.common.utils.internals.Sanitizer;
 
 import com.yammer.metrics.core.MetricName;
diff --git 
a/server-common/src/main/java/org/apache/kafka/server/util/CommandLineUtils.java
 
b/server-common/src/main/java/org/apache/kafka/server/util/CommandLineUtils.java
index c5b973f78e7..b90e53fb6f5 100644
--- 
a/server-common/src/main/java/org/apache/kafka/server/util/CommandLineUtils.java
+++ 
b/server-common/src/main/java/org/apache/kafka/server/util/CommandLineUtils.java
@@ -19,7 +19,7 @@ package org.apache.kafka.server.util;
 import org.apache.kafka.clients.CommonClientConfigs;
 import org.apache.kafka.clients.admin.AdminClientConfig;
 import org.apache.kafka.common.utils.AppInfoParser;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git 
a/server-common/src/main/java/org/apache/kafka/server/util/ShutdownableThread.java
 
b/server-common/src/main/java/org/apache/kafka/server/util/ShutdownableThread.java
index 139c3496a8c..547a352dfb5 100644
--- 
a/server-common/src/main/java/org/apache/kafka/server/util/ShutdownableThread.java
+++ 
b/server-common/src/main/java/org/apache/kafka/server/util/ShutdownableThread.java
@@ -18,8 +18,8 @@
 package org.apache.kafka.server.util;
 
 import org.apache.kafka.common.internals.FatalExitError;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.LogContext;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.slf4j.Logger;
 
diff --git 
a/server-common/src/test/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandlerTest.java
 
b/server-common/src/test/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandlerTest.java
index 35819e4414f..0cba7b7f5af 100644
--- 
a/server-common/src/test/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandlerTest.java
+++ 
b/server-common/src/test/java/org/apache/kafka/server/fault/ProcessTerminatingFaultHandlerTest.java
@@ -17,8 +17,8 @@
 
 package org.apache.kafka.server.fault;
 
-import org.apache.kafka.common.utils.Exit;
-import org.apache.kafka.common.utils.Exit.Procedure;
+import org.apache.kafka.common.utils.internals.Exit;
+import org.apache.kafka.common.utils.internals.Exit.Procedure;
 
 import org.junit.jupiter.api.Test;
 
diff --git 
a/server-common/src/test/java/org/apache/kafka/server/util/CommandLineUtilsTest.java
 
b/server-common/src/test/java/org/apache/kafka/server/util/CommandLineUtilsTest.java
index a7de31f9961..6a5f39dc05d 100644
--- 
a/server-common/src/test/java/org/apache/kafka/server/util/CommandLineUtilsTest.java
+++ 
b/server-common/src/test/java/org/apache/kafka/server/util/CommandLineUtilsTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.kafka.server.util;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.Test;
 
diff --git 
a/server-common/src/test/java/org/apache/kafka/server/util/ShutdownableThreadTest.java
 
b/server-common/src/test/java/org/apache/kafka/server/util/ShutdownableThreadTest.java
index 038087cea18..4f7bc15d508 100644
--- 
a/server-common/src/test/java/org/apache/kafka/server/util/ShutdownableThreadTest.java
+++ 
b/server-common/src/test/java/org/apache/kafka/server/util/ShutdownableThreadTest.java
@@ -17,8 +17,8 @@
 package org.apache.kafka.server.util;
 
 import org.apache.kafka.common.internals.FatalExitError;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.test.TestUtils;
 
 import org.junit.jupiter.api.AfterEach;
diff --git a/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java 
b/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java
index ecec630669f..4619fbb43d3 100644
--- a/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java
+++ b/shell/src/main/java/org/apache/kafka/shell/MetadataShell.java
@@ -17,8 +17,8 @@
 
 package org.apache.kafka.shell;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.image.loader.MetadataLoader;
 import org.apache.kafka.metadata.SupportedConfigChecker;
 import org.apache.kafka.metadata.util.SnapshotFileReader;
diff --git 
a/shell/src/main/java/org/apache/kafka/shell/command/ExitCommandHandler.java 
b/shell/src/main/java/org/apache/kafka/shell/command/ExitCommandHandler.java
index 2200d261106..5515e4c7af8 100644
--- a/shell/src/main/java/org/apache/kafka/shell/command/ExitCommandHandler.java
+++ b/shell/src/main/java/org/apache/kafka/shell/command/ExitCommandHandler.java
@@ -17,7 +17,7 @@
 
 package org.apache.kafka.shell.command;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.shell.InteractiveShell;
 import org.apache.kafka.shell.state.MetadataShellState;
 
diff --git 
a/storage/src/main/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManager.java
 
b/storage/src/main/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManager.java
index 7e518db9ea8..47b8d63b1d3 100644
--- 
a/storage/src/main/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManager.java
+++ 
b/storage/src/main/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManager.java
@@ -27,9 +27,9 @@ import org.apache.kafka.common.config.TopicConfig;
 import org.apache.kafka.common.errors.RetriableException;
 import org.apache.kafka.common.errors.TopicExistsException;
 import org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.common.utils.internals.KafkaThread;
 import org.apache.kafka.server.log.remote.storage.RemoteLogMetadata;
 import org.apache.kafka.server.log.remote.storage.RemoteLogMetadataManager;
diff --git 
a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java 
b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java
index 2ee31dcf7cc..548c2112e2a 100644
--- 
a/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java
+++ 
b/storage/src/main/java/org/apache/kafka/storage/internals/log/LogManager.java
@@ -24,9 +24,9 @@ import 
org.apache.kafka.common.errors.InconsistentTopicIdException;
 import org.apache.kafka.common.errors.KafkaStorageException;
 import org.apache.kafka.common.errors.LogDirNotFoundException;
 import org.apache.kafka.common.internals.Topic;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.common.utils.internals.KafkaThread;
 import org.apache.kafka.metadata.ConfigRepository;
 import org.apache.kafka.metadata.properties.MetaProperties;
diff --git 
a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java
 
b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java
index 3ddee1b24f8..77233e15a2a 100644
--- 
a/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java
+++ 
b/storage/src/test/java/org/apache/kafka/server/log/remote/metadata/storage/TopicBasedRemoteLogMetadataManagerTest.java
@@ -32,8 +32,8 @@ import org.apache.kafka.common.config.TopicConfig;
 import org.apache.kafka.common.test.ClusterInstance;
 import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.ClusterTestDefaults;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.log.remote.storage.RemoteLogSegmentId;
 import org.apache.kafka.server.log.remote.storage.RemoteLogSegmentMetadata;
 import 
org.apache.kafka.server.log.remote.storage.RemoteResourceNotFoundException;
diff --git 
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SmokeTestDriverIntegrationTest.java
 
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SmokeTestDriverIntegrationTest.java
index 96fe114f24c..c3db6e7959d 100644
--- 
a/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SmokeTestDriverIntegrationTest.java
+++ 
b/streams/integration-tests/src/test/java/org/apache/kafka/streams/integration/SmokeTestDriverIntegrationTest.java
@@ -17,7 +17,7 @@
 package org.apache.kafka.streams.integration;
 
 import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.coordinator.group.GroupCoordinatorConfig;
 import org.apache.kafka.streams.GroupProtocol;
 import org.apache.kafka.streams.StreamsConfig;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
index 131d62cb5a4..906e3f7ed6a 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/BrokerCompatibilityTest.java
@@ -28,8 +28,8 @@ import org.apache.kafka.common.serialization.Serde;
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.serialization.StringDeserializer;
 import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
 import org.apache.kafka.streams.StreamsConfig;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/ShutdownDeadlockTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/ShutdownDeadlockTest.java
index 5f9d932e063..53896c8dd34 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/ShutdownDeadlockTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/ShutdownDeadlockTest.java
@@ -21,7 +21,7 @@ import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
 import org.apache.kafka.streams.StreamsConfig;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java 
b/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
index c457d2a739b..adc7858d3ab 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/SmokeTestDriver.java
@@ -34,8 +34,8 @@ import 
org.apache.kafka.common.serialization.ByteArraySerializer;
 import org.apache.kafka.common.serialization.Deserializer;
 import org.apache.kafka.common.serialization.Serde;
 import org.apache.kafka.common.serialization.StringDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java
index f64619199fa..0ebfc0f1cfb 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/StaticMemberTestClient.java
@@ -18,8 +18,8 @@ package org.apache.kafka.streams.tests;
 
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.common.serialization.Serdes;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
 import org.apache.kafka.streams.StreamsConfig;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
index 77224e23947..ccdddf815e0 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsBrokerDownResilienceTest.java
@@ -21,8 +21,8 @@ import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.common.serialization.Serde;
 import org.apache.kafka.common.serialization.Serdes;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
 import org.apache.kafka.streams.StreamsConfig;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsNamedRepartitionTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsNamedRepartitionTest.java
index 26da5bfeb1c..bd293c21415 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsNamedRepartitionTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsNamedRepartitionTest.java
@@ -19,8 +19,8 @@ package org.apache.kafka.streams.tests;
 
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.utils.Bytes;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.KafkaStreams.State;
 import org.apache.kafka.streams.StreamsBuilder;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsOptimizedTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsOptimizedTest.java
index 187a072071b..5fc0390edcc 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsOptimizedTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsOptimizedTest.java
@@ -19,8 +19,8 @@ package org.apache.kafka.streams.tests;
 
 import org.apache.kafka.clients.admin.AdminClientConfig;
 import org.apache.kafka.common.serialization.Serdes;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.KafkaStreams.State;
 import org.apache.kafka.streams.StreamsBuilder;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
index cb8ce0b4aca..8d15ba10ddf 100644
--- a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
+++ b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsSmokeTest.java
@@ -16,8 +16,8 @@
  */
 package org.apache.kafka.streams.tests;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.StreamsConfig;
 
 import java.io.IOException;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
index 27771b5be16..df14bb9a0d6 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsStandByReplicaTest.java
@@ -21,8 +21,8 @@ import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.common.serialization.Serde;
 import org.apache.kafka.common.serialization.Serdes;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
 import org.apache.kafka.streams.StreamsConfig;
diff --git 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
index 9c359faca81..801cb7c199d 100644
--- 
a/streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
+++ 
b/streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java
@@ -26,8 +26,8 @@ import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.serialization.ByteArrayDeserializer;
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.utils.ByteBufferInputStream;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.KafkaClientSupplier;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
diff --git 
a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java
 
b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java
index a9e49dd0492..4449145c0b5 100644
--- 
a/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java
+++ 
b/test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/TestUtils.java
@@ -17,8 +17,8 @@
 package org.apache.kafka.common.test;
 
 import org.apache.kafka.common.errors.TimeoutException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/tools/src/main/java/org/apache/kafka/tools/AclCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/AclCommand.java
index 5b0cae7c919..19c5c6ea328 100644
--- a/tools/src/main/java/org/apache/kafka/tools/AclCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/AclCommand.java
@@ -30,9 +30,9 @@ import org.apache.kafka.common.resource.ResourcePattern;
 import org.apache.kafka.common.resource.ResourcePatternFilter;
 import org.apache.kafka.common.resource.ResourceType;
 import org.apache.kafka.common.security.auth.KafkaPrincipal;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.SecurityUtils;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.security.authorizer.AclEntry;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/BrokerApiVersionsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/BrokerApiVersionsCommand.java
index 9090fe46e47..0f6e2810af9 100644
--- a/tools/src/main/java/org/apache/kafka/tools/BrokerApiVersionsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/BrokerApiVersionsCommand.java
@@ -44,10 +44,10 @@ import org.apache.kafka.common.requests.ApiVersionsResponse;
 import org.apache.kafka.common.requests.MetadataRequest;
 import org.apache.kafka.common.requests.MetadataResponse;
 import org.apache.kafka.common.security.auth.SecurityProtocol;
-import org.apache.kafka.common.utils.Exit;
 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.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java 
b/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java
index 73c01b3ea1c..71e180331ae 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ClientCompatibilityTest.java
@@ -44,8 +44,8 @@ import 
org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
 import org.apache.kafka.common.errors.UnsupportedVersionException;
 import org.apache.kafka.common.serialization.ByteArraySerializer;
 import org.apache.kafka.common.serialization.Deserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import net.sourceforge.argparse4j.ArgumentParsers;
 import net.sourceforge.argparse4j.inf.ArgumentParser;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java
index 6aec33b5938..05542587837 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ClientMetricsCommand.java
@@ -26,8 +26,8 @@ import org.apache.kafka.clients.admin.ConfigEntry;
 import org.apache.kafka.clients.admin.ListConfigResourcesOptions;
 import org.apache.kafka.common.Uuid;
 import org.apache.kafka.common.config.ConfigResource;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git a/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java 
b/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java
index c9f4e1afa26..96346874f9c 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ClusterTool.java
@@ -20,8 +20,8 @@ import org.apache.kafka.clients.admin.Admin;
 import org.apache.kafka.clients.admin.DescribeClusterOptions;
 import org.apache.kafka.common.Node;
 import org.apache.kafka.common.errors.UnsupportedVersionException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandLineUtils;
 
 import net.sourceforge.argparse4j.ArgumentParsers;
diff --git a/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java
index dffcbc9122d..a5214a1a326 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ConfigCommand.java
@@ -46,8 +46,8 @@ import org.apache.kafka.common.quota.ClientQuotaEntity;
 import org.apache.kafka.common.quota.ClientQuotaFilter;
 import org.apache.kafka.common.quota.ClientQuotaFilterComponent;
 import org.apache.kafka.common.security.scram.internals.ScramMechanism;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.coordinator.group.GroupConfig;
 import org.apache.kafka.server.config.ConfigType;
 import org.apache.kafka.server.config.DynamicConfig;
diff --git a/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java 
b/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java
index 73987b6746c..3b9414db601 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ConnectPluginPath.java
@@ -17,8 +17,8 @@
 package org.apache.kafka.tools;
 
 import org.apache.kafka.common.config.ConfigException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.connect.runtime.WorkerConfig;
 import org.apache.kafka.connect.runtime.isolation.ClassLoaderFactory;
 import org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader;
diff --git a/tools/src/main/java/org/apache/kafka/tools/ConsoleProducer.java 
b/tools/src/main/java/org/apache/kafka/tools/ConsoleProducer.java
index e68bb6af542..e868a3d48e7 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ConsoleProducer.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ConsoleProducer.java
@@ -21,7 +21,7 @@ import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.clients.producer.internals.ErrorLoggingCallback;
 import org.apache.kafka.common.record.internal.CompressionType;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.tools.api.RecordReader;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ConsumerPerformance.java 
b/tools/src/main/java/org/apache/kafka/tools/ConsumerPerformance.java
index e94ae0162cf..f38a20c4107 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ConsumerPerformance.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ConsumerPerformance.java
@@ -24,8 +24,8 @@ import org.apache.kafka.clients.consumer.ConsumerRecords;
 import org.apache.kafka.clients.consumer.KafkaConsumer;
 import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.serialization.ByteArrayDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java
index da1c1cfcb78..aa0d8c77982 100644
--- a/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/DelegationTokenCommand.java
@@ -28,9 +28,9 @@ import 
org.apache.kafka.clients.admin.RenewDelegationTokenResult;
 import org.apache.kafka.common.security.auth.KafkaPrincipal;
 import org.apache.kafka.common.security.token.delegation.DelegationToken;
 import org.apache.kafka.common.security.token.delegation.TokenInformation;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.SecurityUtils;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/DeleteRecordsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/DeleteRecordsCommand.java
index 27566752992..510818f39fe 100644
--- a/tools/src/main/java/org/apache/kafka/tools/DeleteRecordsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/DeleteRecordsCommand.java
@@ -21,8 +21,8 @@ import org.apache.kafka.clients.admin.Admin;
 import org.apache.kafka.clients.admin.DeleteRecordsResult;
 import org.apache.kafka.clients.admin.RecordsToDelete;
 import org.apache.kafka.common.TopicPartition;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.server.util.Json;
diff --git a/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java 
b/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java
index 486e4f57618..f35ab1936ff 100644
--- a/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java
+++ b/tools/src/main/java/org/apache/kafka/tools/EndToEndLatency.java
@@ -29,8 +29,8 @@ import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.header.Header;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git a/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java
index fdcaf5e537f..a9883b78b27 100644
--- a/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/FeatureCommand.java
@@ -23,8 +23,8 @@ import org.apache.kafka.clients.admin.FeatureUpdate;
 import org.apache.kafka.clients.admin.SupportedVersionRange;
 import org.apache.kafka.clients.admin.UpdateFeaturesOptions;
 import org.apache.kafka.clients.admin.UpdateFeaturesResult;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.common.Feature;
 import org.apache.kafka.server.common.FeatureVersion;
 import org.apache.kafka.server.common.MetadataVersion;
diff --git a/tools/src/main/java/org/apache/kafka/tools/GetOffsetShell.java 
b/tools/src/main/java/org/apache/kafka/tools/GetOffsetShell.java
index ae16d11d8ed..e3eaf3728b5 100644
--- a/tools/src/main/java/org/apache/kafka/tools/GetOffsetShell.java
+++ b/tools/src/main/java/org/apache/kafka/tools/GetOffsetShell.java
@@ -27,8 +27,8 @@ import org.apache.kafka.common.KafkaException;
 import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.requests.ListOffsetsRequest;
 import org.apache.kafka.common.requests.ListOffsetsResponse;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.tools.filter.PartitionFilter;
diff --git a/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java
index d4b933c9f6c..3dcf5789ca3 100644
--- a/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/GroupsCommand.java
@@ -21,8 +21,8 @@ import org.apache.kafka.clients.admin.Admin;
 import org.apache.kafka.clients.admin.AdminClientConfig;
 import org.apache.kafka.clients.admin.GroupListing;
 import org.apache.kafka.common.GroupType;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git a/tools/src/main/java/org/apache/kafka/tools/JmxTool.java 
b/tools/src/main/java/org/apache/kafka/tools/JmxTool.java
index cc6f310d736..57e825ed50b 100644
--- a/tools/src/main/java/org/apache/kafka/tools/JmxTool.java
+++ b/tools/src/main/java/org/apache/kafka/tools/JmxTool.java
@@ -16,8 +16,8 @@
  */
 package org.apache.kafka.tools;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java
index 4a9a8d270ea..b76b1cc0e54 100644
--- a/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/LeaderElectionCommand.java
@@ -23,8 +23,8 @@ import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.errors.ClusterAuthorizationException;
 import org.apache.kafka.common.errors.ElectionNotNeededException;
 import org.apache.kafka.common.errors.TimeoutException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.server.util.Json;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java 
b/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java
index 82bbb6694a3..78aea46357c 100644
--- a/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java
+++ b/tools/src/main/java/org/apache/kafka/tools/LogCompactionTester.java
@@ -30,7 +30,7 @@ import org.apache.kafka.common.config.TopicConfig;
 import org.apache.kafka.common.record.internal.CompressionType;
 import org.apache.kafka.common.serialization.ByteArraySerializer;
 import org.apache.kafka.common.serialization.StringDeserializer;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandLineUtils;
 
 import java.io.BufferedReader;
diff --git a/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java
index 18463f0283b..d6cb07222c4 100644
--- a/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/LogDirsCommand.java
@@ -23,8 +23,8 @@ import org.apache.kafka.clients.admin.LogDirDescription;
 import org.apache.kafka.clients.admin.ReplicaInfo;
 import org.apache.kafka.common.Node;
 import org.apache.kafka.common.TopicPartition;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
index bb1097fcfc0..2837912d9f4 100644
--- a/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/MetadataQuorumCommand.java
@@ -24,8 +24,8 @@ import org.apache.kafka.common.KafkaException;
 import org.apache.kafka.common.Uuid;
 import org.apache.kafka.common.network.ListenerName;
 import org.apache.kafka.common.security.auth.SecurityProtocol;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.metadata.properties.MetaProperties;
 import org.apache.kafka.metadata.properties.MetaPropertiesEnsemble;
 import org.apache.kafka.network.SocketServerConfigs;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java 
b/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java
index 59dbb47daec..3babe5444bb 100644
--- a/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java
+++ b/tools/src/main/java/org/apache/kafka/tools/OAuthCompatibilityTool.java
@@ -27,7 +27,7 @@ import org.apache.kafka.common.config.types.Password;
 import org.apache.kafka.common.security.oauthbearer.JwtRetriever;
 import org.apache.kafka.common.security.oauthbearer.JwtValidator;
 import org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import net.sourceforge.argparse4j.ArgumentParsers;
 import net.sourceforge.argparse4j.impl.Arguments;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java 
b/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java
index e98c6fb382c..5a98270a43a 100644
--- a/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java
+++ b/tools/src/main/java/org/apache/kafka/tools/PrintVersionAndExitAction.java
@@ -17,7 +17,7 @@
 package org.apache.kafka.tools;
 
 import org.apache.kafka.common.utils.AppInfoParser;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import net.sourceforge.argparse4j.inf.Argument;
 import net.sourceforge.argparse4j.inf.ArgumentAction;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java 
b/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java
index 4775e52812c..2b36e960d7f 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java
@@ -22,8 +22,8 @@ import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.clients.producer.ProducerRecord;
 import org.apache.kafka.clients.producer.RecordMetadata;
 import org.apache.kafka.common.Uuid;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.ThroughputThrottler;
 
 import net.sourceforge.argparse4j.ArgumentParsers;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java 
b/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java
index 1304a4ce596..54bf8e92874 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ReplicaVerificationTool.java
@@ -48,10 +48,10 @@ import org.apache.kafka.common.requests.FetchRequest;
 import org.apache.kafka.common.requests.FetchResponse;
 import org.apache.kafka.common.requests.ListOffsetsRequest;
 import org.apache.kafka.common.serialization.StringDeserializer;
-import org.apache.kafka.common.utils.Exit;
 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.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.server.util.ShutdownableThread;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/ShareConsumerPerformance.java 
b/tools/src/main/java/org/apache/kafka/tools/ShareConsumerPerformance.java
index f24670c0adb..ea73c8e8504 100644
--- a/tools/src/main/java/org/apache/kafka/tools/ShareConsumerPerformance.java
+++ b/tools/src/main/java/org/apache/kafka/tools/ShareConsumerPerformance.java
@@ -26,8 +26,8 @@ import org.apache.kafka.common.Metric;
 import org.apache.kafka.common.MetricName;
 import org.apache.kafka.common.TopicIdPartition;
 import org.apache.kafka.common.serialization.ByteArrayDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git a/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java 
b/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java
index babeef3e45f..85cab770a96 100644
--- a/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java
+++ b/tools/src/main/java/org/apache/kafka/tools/StreamsResetter.java
@@ -35,8 +35,8 @@ import 
org.apache.kafka.common.errors.GroupIdNotFoundException;
 import org.apache.kafka.common.errors.UnknownMemberIdException;
 import org.apache.kafka.common.requests.ListOffsetsResponse;
 import org.apache.kafka.common.serialization.ByteArrayDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git a/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java
index 691625b377e..81ceecf2401 100644
--- a/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/TopicCommand.java
@@ -44,8 +44,8 @@ import 
org.apache.kafka.common.errors.ClusterAuthorizationException;
 import org.apache.kafka.common.errors.TopicExistsException;
 import org.apache.kafka.common.errors.UnsupportedVersionException;
 import org.apache.kafka.common.internals.Topic;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.storage.internals.log.LogConfig;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java 
b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java
index f99252d37ad..35a9a32fc47 100644
--- a/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java
+++ b/tools/src/main/java/org/apache/kafka/tools/TransactionalMessageCopier.java
@@ -30,8 +30,8 @@ import org.apache.kafka.common.KafkaException;
 import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.errors.ProducerFencedException;
 import org.apache.kafka.common.errors.WakeupException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java
index 5b59fbee4a1..1655f7e4a38 100644
--- a/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java
+++ b/tools/src/main/java/org/apache/kafka/tools/TransactionsCommand.java
@@ -31,9 +31,9 @@ import org.apache.kafka.clients.admin.TransactionListing;
 import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.TopicPartitionInfo;
 import org.apache.kafka.common.errors.TransactionalIdNotFoundException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import net.sourceforge.argparse4j.ArgumentParsers;
 import net.sourceforge.argparse4j.inf.ArgumentGroup;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumer.java 
b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumer.java
index a7ae037e987..258f9ece36e 100644
--- a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumer.java
+++ b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumer.java
@@ -28,8 +28,8 @@ import org.apache.kafka.common.errors.TimeoutException;
 import org.apache.kafka.common.errors.WakeupException;
 import org.apache.kafka.common.requests.ListOffsetsRequest;
 import org.apache.kafka.common.serialization.ByteArrayDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java
 
b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java
index ade48b5b670..8e2cdcd2a29 100644
--- 
a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java
+++ 
b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptions.java
@@ -19,8 +19,8 @@ package org.apache.kafka.tools.consumer;
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.common.MessageFormatter;
 import org.apache.kafka.common.requests.ListOffsetsRequest;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandDefaultOptions;
 import org.apache.kafka.server.util.CommandLineUtils;
 
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleShareConsumer.java 
b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleShareConsumer.java
index 2505266abf7..ebbcbe880fa 100644
--- 
a/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleShareConsumer.java
+++ 
b/tools/src/main/java/org/apache/kafka/tools/consumer/ConsoleShareConsumer.java
@@ -26,8 +26,8 @@ import org.apache.kafka.common.errors.AuthenticationException;
 import org.apache.kafka.common.errors.TimeoutException;
 import org.apache.kafka.common.errors.WakeupException;
 import org.apache.kafka.common.serialization.ByteArrayDeserializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java
 
b/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java
index 8105ba957d6..89595b63750 100644
--- 
a/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java
+++ 
b/tools/src/main/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommand.java
@@ -34,9 +34,9 @@ import org.apache.kafka.common.Uuid;
 import org.apache.kafka.common.config.ConfigResource;
 import org.apache.kafka.common.errors.ReplicaNotAvailableException;
 import org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.metadata.placement.ClusterDescriber;
 import org.apache.kafka.metadata.placement.PlacementSpec;
 import org.apache.kafka.metadata.placement.ReplicaPlacer;
diff --git 
a/tools/src/main/java/org/apache/kafka/tools/streams/StreamsGroupCommand.java 
b/tools/src/main/java/org/apache/kafka/tools/streams/StreamsGroupCommand.java
index 72771d85fda..c9d6597a52b 100644
--- 
a/tools/src/main/java/org/apache/kafka/tools/streams/StreamsGroupCommand.java
+++ 
b/tools/src/main/java/org/apache/kafka/tools/streams/StreamsGroupCommand.java
@@ -53,8 +53,8 @@ import org.apache.kafka.common.errors.GroupNotEmptyException;
 import org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
 import org.apache.kafka.common.errors.UnsupportedVersionException;
 import org.apache.kafka.common.protocol.Errors;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.util.CommandLineUtils;
 import org.apache.kafka.tools.OffsetsUtils;
 import org.apache.kafka.tools.consumer.group.CsvUtils;
diff --git a/tools/src/test/java/org/apache/kafka/tools/AclCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/AclCommandTest.java
index 8f6532fa72f..bd69835dbc0 100644
--- a/tools/src/test/java/org/apache/kafka/tools/AclCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/AclCommandTest.java
@@ -32,9 +32,9 @@ import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.ClusterTestDefaults;
 import org.apache.kafka.common.test.api.Type;
 import org.apache.kafka.common.utils.AppInfoParser;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.LogCaptureAppender;
 import org.apache.kafka.common.utils.SecurityUtils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.metadata.authorizer.StandardAuthorizer;
 import org.apache.kafka.test.TestUtils;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/ClientMetricsCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ClientMetricsCommandTest.java
index b389e114332..c9b54d71a1c 100644
--- a/tools/src/test/java/org/apache/kafka/tools/ClientMetricsCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/ClientMetricsCommandTest.java
@@ -27,7 +27,7 @@ import org.apache.kafka.clients.admin.DescribeConfigsResult;
 import org.apache.kafka.clients.admin.ListConfigResourcesResult;
 import org.apache.kafka.common.config.ConfigResource;
 import org.apache.kafka.common.protocol.Errors;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
index 7fca102f8a6..aa5fca863cb 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/ConfigCommandIntegrationTest.java
@@ -32,7 +32,7 @@ import org.apache.kafka.common.test.ClusterInstance;
 import org.apache.kafka.common.test.api.ClusterConfigProperty;
 import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.Type;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.common.MetadataVersion;
 import org.apache.kafka.test.TestUtils;
 
diff --git a/tools/src/test/java/org/apache/kafka/tools/ConfigCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ConfigCommandTest.java
index a0743d5ba00..5e68bea182b 100644
--- a/tools/src/test/java/org/apache/kafka/tools/ConfigCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/ConfigCommandTest.java
@@ -44,7 +44,7 @@ import org.apache.kafka.common.quota.ClientQuotaAlteration;
 import org.apache.kafka.common.quota.ClientQuotaEntity;
 import org.apache.kafka.common.quota.ClientQuotaFilter;
 import org.apache.kafka.common.quota.ClientQuotaFilterComponent;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.config.ConfigType;
 import org.apache.kafka.test.TestUtils;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/ConsoleProducerTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ConsoleProducerTest.java
index d74c4dc71d4..4baa8079e29 100644
--- a/tools/src/test/java/org/apache/kafka/tools/ConsoleProducerTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/ConsoleProducerTest.java
@@ -21,7 +21,7 @@ import kafka.utils.TestUtils;
 import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.apache.kafka.clients.producer.ProducerRecord;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.tools.ConsoleProducer.ConsoleProducerOptions;
 import org.apache.kafka.tools.api.RecordReader;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/ConsumerPerformanceTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ConsumerPerformanceTest.java
index 9e385878cb9..7801bab0a78 100644
--- a/tools/src/test/java/org/apache/kafka/tools/ConsumerPerformanceTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/ConsumerPerformanceTest.java
@@ -21,8 +21,8 @@ import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.clients.consumer.MockConsumer;
 import org.apache.kafka.clients.consumer.internals.AutoOffsetResetStrategy;
 import org.apache.kafka.common.TopicPartition;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/DelegationTokenCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/DelegationTokenCommandTest.java
index 2253d488267..cf0bd78b4fd 100644
--- a/tools/src/test/java/org/apache/kafka/tools/DelegationTokenCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/DelegationTokenCommandTest.java
@@ -19,7 +19,7 @@ package org.apache.kafka.tools;
 import org.apache.kafka.clients.admin.Admin;
 import org.apache.kafka.clients.admin.MockAdminClient;
 import org.apache.kafka.common.security.token.delegation.DelegationToken;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.Test;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/DumpLogSegmentsTest.java 
b/tools/src/test/java/org/apache/kafka/tools/DumpLogSegmentsTest.java
index 66565fc5e38..f919518cc9d 100644
--- a/tools/src/test/java/org/apache/kafka/tools/DumpLogSegmentsTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/DumpLogSegmentsTest.java
@@ -52,8 +52,8 @@ import org.apache.kafka.common.record.internal.Record;
 import org.apache.kafka.common.record.internal.RecordBatch;
 import org.apache.kafka.common.record.internal.RecordVersion;
 import org.apache.kafka.common.record.internal.SimpleRecord;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import 
org.apache.kafka.coordinator.group.generated.ConsumerGroupMemberMetadataValue;
 import org.apache.kafka.coordinator.group.generated.ConsumerGroupMetadataKey;
 import org.apache.kafka.coordinator.group.generated.ConsumerGroupMetadataValue;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java 
b/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java
index e6f662b1d99..da6be533574 100644
--- a/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/EndToEndLatencyTest.java
@@ -22,7 +22,7 @@ import org.apache.kafka.clients.consumer.KafkaConsumer;
 import org.apache.kafka.common.header.Header;
 import org.apache.kafka.common.header.Headers;
 import org.apache.kafka.common.header.internals.RecordHeader;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/tools/src/test/java/org/apache/kafka/tools/GetOffsetShellTest.java 
b/tools/src/test/java/org/apache/kafka/tools/GetOffsetShellTest.java
index c1c7b27639a..cf59419a10a 100644
--- a/tools/src/test/java/org/apache/kafka/tools/GetOffsetShellTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/GetOffsetShellTest.java
@@ -35,7 +35,7 @@ import org.apache.kafka.common.test.api.ClusterTemplate;
 import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.ClusterTestDefaults;
 import org.apache.kafka.common.utils.AppInfoParser;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.config.ServerLogConfigs;
 import 
org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManagerConfig;
 import org.apache.kafka.server.log.remote.storage.LocalTieredStorage;
diff --git a/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java
index 3759cd75164..36f289804bb 100644
--- a/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/GroupsCommandTest.java
@@ -36,7 +36,7 @@ import 
org.apache.kafka.common.serialization.StringDeserializer;
 import org.apache.kafka.common.test.ClusterInstance;
 import org.apache.kafka.common.test.api.ClusterConfigProperty;
 import org.apache.kafka.common.test.api.ClusterTest;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.coordinator.group.GroupCoordinatorConfig;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.KeyValue;
diff --git a/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java 
b/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java
index 4bc106afc20..01768802315 100644
--- a/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/JmxToolTest.java
@@ -17,7 +17,7 @@
 package org.apache.kafka.tools;
 
 import org.apache.kafka.common.utils.AppInfoParser;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/LeaderElectionCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/LeaderElectionCommandTest.java
index e9fbc28cead..2f5f92a6ee7 100644
--- a/tools/src/test/java/org/apache/kafka/tools/LeaderElectionCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/LeaderElectionCommandTest.java
@@ -28,7 +28,7 @@ import org.apache.kafka.common.test.ClusterInstance;
 import org.apache.kafka.common.test.api.ClusterConfigProperty;
 import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.ClusterTestDefaults;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.mockito.ArgumentCaptor;
 import org.mockito.MockedStatic;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/ResetIntegrationTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ResetIntegrationTest.java
index e403bb9b880..236b942b352 100644
--- a/tools/src/test/java/org/apache/kafka/tools/ResetIntegrationTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/ResetIntegrationTest.java
@@ -20,7 +20,7 @@ import org.apache.kafka.clients.admin.Admin;
 import org.apache.kafka.clients.admin.AdminClientConfig;
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.clients.consumer.GroupProtocol;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.network.SocketServerConfigs;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.KeyValue;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/ShareConsumerPerformanceTest.java 
b/tools/src/test/java/org/apache/kafka/tools/ShareConsumerPerformanceTest.java
index 6cffde627bb..bf7558161b8 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/ShareConsumerPerformanceTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/ShareConsumerPerformanceTest.java
@@ -19,8 +19,8 @@ package org.apache.kafka.tools;
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.clients.consumer.MockShareConsumer;
 import org.apache.kafka.clients.consumer.ShareConsumer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java 
b/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java
index 0886fb3d15e..1321549a460 100644
--- a/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java
+++ b/tools/src/test/java/org/apache/kafka/tools/ToolsTestUtils.java
@@ -21,7 +21,7 @@ import org.apache.kafka.clients.admin.AlterConfigOp;
 import org.apache.kafka.clients.admin.ConfigEntry;
 import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.config.ConfigResource;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.server.config.QuotaConfig;
 
 import java.io.ByteArrayOutputStream;
diff --git a/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java
index 6d792fbd41c..06efc3c9186 100644
--- a/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/TopicCommandTest.java
@@ -55,7 +55,7 @@ import org.apache.kafka.common.test.api.ClusterConfigProperty;
 import org.apache.kafka.common.test.api.ClusterTemplate;
 import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.Type;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.metadata.LeaderAndIsr;
 import org.apache.kafka.storage.internals.log.LogConfig;
 import org.apache.kafka.test.TestUtils;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/TransactionsCommandTest.java 
b/tools/src/test/java/org/apache/kafka/tools/TransactionsCommandTest.java
index 17613d98e4b..fc6402c6045 100644
--- a/tools/src/test/java/org/apache/kafka/tools/TransactionsCommandTest.java
+++ b/tools/src/test/java/org/apache/kafka/tools/TransactionsCommandTest.java
@@ -40,8 +40,8 @@ import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.TopicPartitionInfo;
 import org.apache.kafka.common.errors.TransactionalIdNotFoundException;
 import org.apache.kafka.common.internals.KafkaFutureImpl;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.MockTime;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/UserScramCredentialsCommandTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/UserScramCredentialsCommandTest.java
index 1314a0304bc..a5e7cfec859 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/UserScramCredentialsCommandTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/UserScramCredentialsCommandTest.java
@@ -18,7 +18,7 @@ package org.apache.kafka.tools;
 
 import org.apache.kafka.common.test.ClusterInstance;
 import org.apache.kafka.common.test.api.ClusterTest;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.test.NoRetryException;
 import org.apache.kafka.test.TestUtils;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
index 843d9785cf8..01319ba6499 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleConsumerOptionsTest.java
@@ -18,7 +18,7 @@ package org.apache.kafka.tools.consumer;
 
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.common.requests.ListOffsetsRequest;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.test.MockDeserializer;
 import org.apache.kafka.tools.ToolsTestUtils;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
index a097a9bf536..c39c5871f41 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/consumer/ConsoleShareConsumerOptionsTest.java
@@ -18,8 +18,8 @@ package org.apache.kafka.tools.consumer;
 
 import org.apache.kafka.clients.consumer.AcknowledgeType;
 import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.test.MockDeserializer;
 import org.apache.kafka.tools.ToolsTestUtils;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java
index 9e5072576f4..44f53804480 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/consumer/group/DescribeConsumerGroupTest.java
@@ -41,7 +41,7 @@ import org.apache.kafka.common.test.api.ClusterTest;
 import org.apache.kafka.common.test.api.ClusterTestDefaults;
 import org.apache.kafka.common.test.api.Type;
 import org.apache.kafka.common.utils.AppInfoParser;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.test.TestUtils;
 import org.apache.kafka.tools.ToolsTestUtils;
 
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java
index e052f2c633b..8a078715fe1 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/consumer/group/ShareGroupCommandTest.java
@@ -52,7 +52,7 @@ import org.apache.kafka.common.TopicPartitionInfo;
 import org.apache.kafka.common.errors.GroupIdNotFoundException;
 import org.apache.kafka.common.internals.KafkaFutureImpl;
 import org.apache.kafka.common.protocol.Errors;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.test.TestUtils;
 import org.apache.kafka.tools.ToolsTestUtils;
 import 
org.apache.kafka.tools.consumer.group.ShareGroupCommand.ShareGroupService;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/other/ReplicationQuotasTestRig.java
 
b/tools/src/test/java/org/apache/kafka/tools/other/ReplicationQuotasTestRig.java
index ff0396485d7..8e646534263 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/other/ReplicationQuotasTestRig.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/other/ReplicationQuotasTestRig.java
@@ -32,9 +32,9 @@ import org.apache.kafka.common.security.auth.SecurityProtocol;
 import org.apache.kafka.common.serialization.ByteArraySerializer;
 import org.apache.kafka.common.test.KafkaClusterTestKit;
 import org.apache.kafka.common.test.TestKitNodes;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.image.TopicImage;
 import org.apache.kafka.metadata.PartitionRegistration;
 import org.apache.kafka.server.quota.QuotaType;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java
index bd7b04a0d5c..151e0f998a7 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsCommandArgsTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.kafka.tools.reassign;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java
index d953ccf9ea7..6a59a1513fc 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/reassign/ReassignPartitionsUnitTest.java
@@ -26,8 +26,8 @@ import org.apache.kafka.common.TopicPartitionReplica;
 import org.apache.kafka.common.config.ConfigResource;
 import org.apache.kafka.common.errors.InvalidReplicationFactorException;
 import org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.metadata.placement.UsableBroker;
 import org.apache.kafka.server.config.QuotaConfig;
 import org.apache.kafka.tools.AdminCommandFailedException;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupOffsetTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupOffsetTest.java
index e932e89a908..8b4591b9903 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupOffsetTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupOffsetTest.java
@@ -26,7 +26,7 @@ import 
org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
 import org.apache.kafka.common.protocol.Errors;
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.CloseOptions;
 import org.apache.kafka.streams.GroupProtocol;
 import org.apache.kafka.streams.KafkaStreams;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupTest.java
index a620d63a697..998b97f9582 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/streams/DeleteStreamsGroupTest.java
@@ -28,8 +28,8 @@ import 
org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
 import org.apache.kafka.common.protocol.Errors;
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Utils;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.CloseOptions;
 import org.apache.kafka.streams.GroupProtocol;
 import org.apache.kafka.streams.KafkaStreams;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/streams/DescribeStreamsGroupTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/streams/DescribeStreamsGroupTest.java
index 354118397ac..f03805c37d2 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/streams/DescribeStreamsGroupTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/streams/DescribeStreamsGroupTest.java
@@ -20,7 +20,7 @@ import org.apache.kafka.clients.admin.AdminClientConfig;
 import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.kafka.common.errors.TimeoutException;
 import org.apache.kafka.common.serialization.Serdes;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.GroupProtocol;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsBuilder;
diff --git 
a/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java
 
b/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java
index 219335dc200..fcbba67e52d 100644
--- 
a/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java
+++ 
b/tools/src/test/java/org/apache/kafka/tools/streams/ResetStreamsGroupOffsetTest.java
@@ -26,7 +26,7 @@ import org.apache.kafka.common.TopicPartition;
 import org.apache.kafka.common.errors.UnknownTopicOrPartitionException;
 import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.streams.GroupProtocol;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.KeyValueTimestamp;
diff --git a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java 
b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java
index c2d13e63308..3453fbf3469 100644
--- a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java
+++ b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/Agent.java
@@ -18,8 +18,8 @@
 package org.apache.kafka.trogdor.agent;
 
 import org.apache.kafka.common.KafkaFuture;
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.trogdor.common.JsonUtil;
 import org.apache.kafka.trogdor.common.Node;
 import org.apache.kafka.trogdor.common.Platform;
diff --git 
a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java 
b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java
index e0f729a7931..79612ee31f8 100644
--- a/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java
+++ b/trogdor/src/main/java/org/apache/kafka/trogdor/agent/AgentClient.java
@@ -17,7 +17,7 @@
 
 package org.apache.kafka.trogdor.agent;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.trogdor.common.JsonUtil;
 import org.apache.kafka.trogdor.common.StringFormatter;
 import org.apache.kafka.trogdor.rest.AgentStatusResponse;
diff --git 
a/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicPlatform.java 
b/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicPlatform.java
index cd0d39dabef..9cd87238968 100644
--- a/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicPlatform.java
+++ b/trogdor/src/main/java/org/apache/kafka/trogdor/basic/BasicPlatform.java
@@ -17,7 +17,7 @@
 
 package org.apache.kafka.trogdor.basic;
 
-import org.apache.kafka.common.utils.Shell;
+import org.apache.kafka.common.utils.internals.Shell;
 import org.apache.kafka.trogdor.common.Node;
 import org.apache.kafka.trogdor.common.Platform;
 import org.apache.kafka.trogdor.common.Scheduler;
diff --git 
a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java 
b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
index 80eb929052c..2196b84e98b 100644
--- 
a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
+++ 
b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/Coordinator.java
@@ -17,8 +17,8 @@
 
 package org.apache.kafka.trogdor.coordinator;
 
-import org.apache.kafka.common.utils.Exit;
 import org.apache.kafka.common.utils.Time;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.trogdor.common.Node;
 import org.apache.kafka.trogdor.common.Platform;
 import org.apache.kafka.trogdor.common.Scheduler;
diff --git 
a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java
 
b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java
index b1e67bda5b4..09a99f295f8 100644
--- 
a/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java
+++ 
b/trogdor/src/main/java/org/apache/kafka/trogdor/coordinator/CoordinatorClient.java
@@ -17,7 +17,7 @@
 
 package org.apache.kafka.trogdor.coordinator;
 
-import org.apache.kafka.common.utils.Exit;
+import org.apache.kafka.common.utils.internals.Exit;
 import org.apache.kafka.trogdor.common.JsonUtil;
 import org.apache.kafka.trogdor.common.StringFormatter;
 import org.apache.kafka.trogdor.rest.CoordinatorStatusResponse;
diff --git 
a/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java
 
b/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java
index 0960f8f8955..ec0dc7fe519 100644
--- 
a/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java
+++ 
b/trogdor/src/test/java/org/apache/kafka/trogdor/workload/ExternalCommandWorkerTest.java
@@ -18,7 +18,7 @@
 package org.apache.kafka.trogdor.workload;
 
 import org.apache.kafka.common.internals.KafkaFutureImpl;
-import org.apache.kafka.common.utils.OperatingSystem;
+import org.apache.kafka.common.utils.internals.OperatingSystem;
 import org.apache.kafka.test.TestUtils;
 import org.apache.kafka.trogdor.task.AgentWorkerStatusTracker;
 import org.apache.kafka.trogdor.task.WorkerStatusTracker;

Reply via email to