diff --git a/core/src/main/scala/kafka/server/BrokerToControllerChannelManager.scala b/core/src/main/scala/kafka/server/BrokerToControllerChannelManager.scala index 05f50b720b1f..1ee74f686b4f 100644 --- a/core/src/main/scala/kafka/server/BrokerToControllerChannelManager.scala +++ b/core/src/main/scala/kafka/server/BrokerToControllerChannelManager.scala @@ -342,7 +342,12 @@ class BrokerToControllerRequestThread( } else if (response.responseBody().errorCounts().containsKey(Errors.NOT_CONTROLLER)) { // just close the controller connection and wait for metadata cache update in doWork activeControllerAddress().foreach { controllerAddress => { - networkClient.disconnect(controllerAddress.idString) + try { + // We don't care if disconnect has an error, just log it and get a new network client + networkClient.disconnect(controllerAddress.idString) + } catch { + case t: Throwable => error("Had an error while disconnecting from NetworkClient.", t) + } }} requestQueue.putFirst(queueItem)