From 2576ced84b6ef85b96e168b77b5bbf4acde94f1d Mon Sep 17 00:00:00 2001 From: satsukies Date: Thu, 19 Sep 2024 15:29:53 +0900 Subject: [PATCH 1/2] fix: read/write from JSONObject with thread-safe --- .../sdk/SdkDeviceStatesCollector.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java b/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java index b2657f8..45a2390 100644 --- a/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java +++ b/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java @@ -11,10 +11,18 @@ final class SdkDeviceStatesCollector { - private final JSONObject states = new JSONObject(); + private final Object mLock; + private final JSONObject states; + + SdkDeviceStatesCollector() { + mLock = new Object(); + states = new JSONObject(); + } public String getJSONString() { - return states.toString(); + synchronized (mLock) { + return states.toString(); + } } public void collectLocale() { @@ -43,10 +51,13 @@ public void collectLocale() { private void putState(String fqcn, String paramName, Object data) { String key = String.format("%s$%s", fqcn, paramName); - try { - states.put(key, data); - } catch (JSONException e) { - Logger.w(e, "Failed to put info: key=%s, value=%s", key, data); + + synchronized (mLock) { + try { + states.put(key, data); + } catch (JSONException e) { + Logger.w(e, "Failed to put info: key=%s, value=%s", key, data); + } } } } From 58b89c256abf9cf03cf003d877921e36968d7e26 Mon Sep 17 00:00:00 2001 From: satsukies Date: Thu, 19 Sep 2024 17:11:01 +0900 Subject: [PATCH 2/2] Update sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java Co-authored-by: Jumpei Matsuda --- .../java/com/deploygate/sdk/SdkDeviceStatesCollector.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java b/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java index 45a2390..b6ff69a 100644 --- a/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java +++ b/sdk/src/main/java/com/deploygate/sdk/SdkDeviceStatesCollector.java @@ -52,12 +52,12 @@ public void collectLocale() { private void putState(String fqcn, String paramName, Object data) { String key = String.format("%s$%s", fqcn, paramName); - synchronized (mLock) { - try { + try { + synchronized (mLock) { states.put(key, data); - } catch (JSONException e) { - Logger.w(e, "Failed to put info: key=%s, value=%s", key, data); } + } catch (JSONException e) { + Logger.w(e, "Failed to put info: key=%s, value=%s", key, data); } } }