eclipse-paho / paho.mqtt.java

Eclipse Paho Java MQTT client library. Paho is an Eclipse IoT project.
https://eclipse.org/paho
Other
2.14k stars 887 forks source link

NullPointerException in ReconnectTask and ConnectActionListener.onFailure, ClientComms.getNetworkModules() is null after close() #1036

Open in-fke opened 5 months ago

in-fke commented 5 months ago

Please fill out the form below before submitting, thank you!

Line with NPE is: https://github.com/eclipse/paho.mqtt.java/blob/master/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ConnectActionListener.java#L195

Exception in thread "MQTT Reconnect: Application" java.lang.NullPointerException: Cannot read the array length because the return value of "org.eclipse.paho.mqttv5.client.internal.ClientComms.getNetworkModules()" is null
    at org.eclipse.paho.mqttv5.client.internal.ConnectActionListener.onFailure(ConnectActionListener.java:195)
    at org.eclipse.paho.mqttv5.client.internal.ConnectActionListener.connect(ConnectActionListener.java:248)
    at org.eclipse.paho.mqttv5.client.MqttAsyncClient.connect(MqttAsyncClient.java:783)
    at org.eclipse.paho.mqttv5.client.MqttAsyncClient.attemptReconnect(MqttAsyncClient.java:1583)
    at org.eclipse.paho.mqttv5.client.MqttAsyncClient.access$2(MqttAsyncClient.java:1578)
    at org.eclipse.paho.mqttv5.client.MqttAsyncClient$ReconnectTask.run(MqttAsyncClient.java:1623)
    at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
    at java.base/java.util.TimerThread.run(Timer.java:516)

Maybe close() should invoke stopReconnectCycle()? Alternatively, ReconnectTask should not invoke attemptReconnect() if client was closed?