Browse Source

Merge pull request #13754 from artem-barysh-dev/fix-mqtt-disconect

Fixed MQTT client disconnect
pull/13763/head
Viacheslav Klimov 1 year ago
committed by GitHub
parent
commit
bf0e2283d2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClientImpl.java

3
netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClientImpl.java

@ -462,19 +462,18 @@ final class MqttClientImpl implements MqttClient {
return; return;
} }
disconnected = true;
log.trace("[{}] Disconnecting from server", channel != null ? channel.id() : "UNKNOWN"); log.trace("[{}] Disconnecting from server", channel != null ? channel.id() : "UNKNOWN");
if (this.channel != null) { if (this.channel != null) {
MqttMessage message = new MqttMessage(new MqttFixedHeader(MqttMessageType.DISCONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0)); MqttMessage message = new MqttMessage(new MqttFixedHeader(MqttMessageType.DISCONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0));
sendAndFlushPacket(message).addListener((ChannelFutureListener) future -> { sendAndFlushPacket(message).addListener((ChannelFutureListener) future -> {
future.channel().close(); future.channel().close();
disconnected = true;
}); });
eventLoop.schedule(() -> { eventLoop.schedule(() -> {
if (channel.isOpen()) { if (channel.isOpen()) {
log.trace("[{}] Channel still open after {} second; forcing close now", channel.id(), DISCONNECT_FALLBACK_DELAY_SECS); log.trace("[{}] Channel still open after {} second; forcing close now", channel.id(), DISCONNECT_FALLBACK_DELAY_SECS);
this.channel.close(); this.channel.close();
disconnected = true;
} }
}, DISCONNECT_FALLBACK_DELAY_SECS, TimeUnit.SECONDS); }, DISCONNECT_FALLBACK_DELAY_SECS, TimeUnit.SECONDS);
} }

Loading…
Cancel
Save