diff --git a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServer.java b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServer.java index 8cd3583fbd7c3..6013830160053 100644 --- a/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServer.java +++ b/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/RestServer.java @@ -348,6 +348,13 @@ public void stop() { log.info("Stopping REST server"); try { + if (handlers.isRunning()) { + for (Handler handler : handlers.getHandlers()) { + if (handler != null) { + Utils.closeQuietly(handler::stop, handler.toString()); + } + } + } for (ConnectRestExtension connectRestExtension : connectRestExtensions) { try { connectRestExtension.close(); @@ -358,8 +365,13 @@ public void stop() { jettyServer.stop(); jettyServer.join(); } catch (Exception e) { - jettyServer.destroy(); throw new ConnectException("Unable to stop REST server", e); + } finally { + try { + jettyServer.destroy(); + } catch (Exception e) { + log.error("Unable to destroy REST server", e); + } } log.info("REST server stopped");