MqttSubscriptionClient: connection lost (issue #22) #41
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #22 : MqttSubscriptionClient: connection lost
Description of changes:
Added creation of
HashSet
with subscription objects just before iteration inonError()
callback insubscribe()
method.As iteration over
getSubscriptionObjects()
result is not synchronized with other methods that canchangesubscriptionsByTopic
field value, modification of topic subscribers whileonError()
callback is in progress can causeConcurrentModificationException
. As subscriber (SubscriptionObject
), for whomonError()
should triggeronFailure()
on listeners, already has been added to the set, the simplest way is to create copy ofgetSubscriptionObjects()
result and iterate over it.I tried to use 1.1.0 version of
org.eclipse.paho:org.eclipse.paho.client.mqttv3
with the latest versions of other libraries as suggested in the issue comments, but in this case subscription calledOnCompleted()
right after it had been started and didn't send any successfull responses.By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.