From 4efa7ec625aa0ad066e65e95a0a33cb985b24cd1 Mon Sep 17 00:00:00 2001 From: J-N-K Date: Mon, 2 Dec 2019 05:30:14 +0100 Subject: [PATCH] Fix MQTT reconnection and add some debug logging (#1254) Signed-off-by: Jan N. Klug --- .../io/transport/mqtt/MqttBrokerConnection.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.core.io.transport.mqtt/src/main/java/org/eclipse/smarthome/io/transport/mqtt/MqttBrokerConnection.java b/bundles/org.openhab.core.io.transport.mqtt/src/main/java/org/eclipse/smarthome/io/transport/mqtt/MqttBrokerConnection.java index 74eb01a1dc6d8..9d73ef7ffc823 100644 --- a/bundles/org.openhab.core.io.transport.mqtt/src/main/java/org/eclipse/smarthome/io/transport/mqtt/MqttBrokerConnection.java +++ b/bundles/org.openhab.core.io.transport.mqtt/src/main/java/org/eclipse/smarthome/io/transport/mqtt/MqttBrokerConnection.java @@ -172,9 +172,10 @@ public void onDisconnected(Throwable t) { // If we tried to connect via start(), use the reconnect strategy to try it again if (connection.isConnecting) { connection.isConnecting = false; - if (connection.reconnectStrategy != null) { - connection.reconnectStrategy.lostConnection(); - } + } + + if (connection.reconnectStrategy != null) { + connection.reconnectStrategy.lostConnection(); } } @@ -562,6 +563,7 @@ public CompletableFuture subscribe(String topic, MqttMessageSubscriber if (client.getState().isConnected()) { client.subscribe(topic, qos, clientCallback).whenComplete((s, t) -> { if (t == null) { + logger.trace("Subscribed {} to topic {}", subscriber, topic); future.complete(true); } else { future.completeExceptionally(new MqttException(t)); @@ -612,10 +614,12 @@ public CompletableFuture unsubscribe(String topic, MqttMessageSubscribe synchronized (subscribers) { final @Nullable List list = subscribers.get(topic); if (list == null) { + logger.trace("Tried to unsubscribe {} from topic {}, but subscriber list is empty", subscriber, topic); return CompletableFuture.completedFuture(true); } list.remove(subscriber); if (!list.isEmpty()) { + logger.trace("Removed {} from topic subscribers for topic {}, but other subscribers present", subscriber, topic); return CompletableFuture.completedFuture(true); } // Remove from subscriber list @@ -623,6 +627,7 @@ public CompletableFuture unsubscribe(String topic, MqttMessageSubscribe // No more subscribers to this topic. Unsubscribe topic on the broker MqttAsyncClientWrapper mqttClient = this.client; if (mqttClient != null) { + logger.trace("Subscriber list is empty after removing {}, unsubscribing topic {} from connection", subscriber, topic); return unsubscribeRaw(mqttClient, topic); } else { return CompletableFuture.completedFuture(false);