[mqtt] Avoid parallel streams with common thread pool to avoid deadlocks (#13621)
To mitigate issue https://github.com/openhab/openhab-core/issues/3125 (common thread pool exhaustion when combining parallel streams with synchronization or locks) Signed-off-by: Sami Salonen <ssalonen@gmail.com>
This commit is contained in:
@@ -105,8 +105,11 @@ public abstract class AbstractMQTTThingHandler extends BaseThingHandler
|
||||
* @return A future that completes normal on success and exceptionally on any errors.
|
||||
*/
|
||||
protected CompletableFuture<@Nullable Void> start(MqttBrokerConnection connection) {
|
||||
return availabilityStates.values().parallelStream().map(cChannel -> cChannel.start(connection, scheduler, 0))
|
||||
.collect(FutureCollector.allOf());
|
||||
return availabilityStates.values().stream().map(cChannel -> {
|
||||
final CompletableFuture<@Nullable Void> fut = cChannel == null ? CompletableFuture.completedFuture(null)
|
||||
: cChannel.start(connection, scheduler, 0);
|
||||
return fut;
|
||||
}).collect(FutureCollector.allOf());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user