From 94fe11674b949a539a51178a1d2fabe0f147daed Mon Sep 17 00:00:00 2001 From: Dan Cunningham Date: Mon, 18 Jul 2022 10:30:35 -0700 Subject: [PATCH] [hydrawise] Fix concurrent modification error Signed-off-by: Dan Cunningham --- .../internal/handler/HydrawiseAccountHandler.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseAccountHandler.java b/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseAccountHandler.java index 8aca2edfe8da4..812312c9402f0 100644 --- a/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseAccountHandler.java +++ b/bundles/org.openhab.binding.hydrawise/src/main/java/org/openhab/binding/hydrawise/internal/handler/HydrawiseAccountHandler.java @@ -66,7 +66,8 @@ public class HydrawiseAccountHandler extends BaseBridgeHandler implements Access private static final String CLIENT_SECRET = "zn3CrjglwNV1"; private static final String CLIENT_ID = "hydrawise_app"; private static final String SCOPE = "all"; - private final List controllerListeners = new ArrayList(); + private final List controllerListeners = Collections + .synchronizedList(new ArrayList()); private final HydrawiseGraphQLClient apiClient; private final OAuthClientService oAuthService; private @Nullable ScheduledFuture pollFuture; @@ -197,9 +198,11 @@ private void poll(boolean retry) { updateStatus(ThingStatus.ONLINE); } lastData = response.data.me; - controllerListeners.forEach(listener -> { - listener.onData(response.data.me.controllers); - }); + synchronized (controllerListeners) { + controllerListeners.forEach(listener -> { + listener.onData(response.data.me.controllers); + }); + } } catch (HydrawiseConnectionException e) { if (retry) { logger.debug("Retrying failed poll", e);