From b3aa1549c9203e47796ecf068e7cb2526b78fb62 Mon Sep 17 00:00:00 2001 From: rca Date: Sun, 30 Jun 2024 16:15:14 +0900 Subject: [PATCH] =?UTF-8?q?Workaround:=20Thread=E3=81=AE=E7=B5=82=E4=BA=86?= =?UTF-8?q?=E3=82=92=E5=BE=85=E3=81=A4=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/kidshift/data/impl/KSActionsImpl.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java b/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java index a29424b..ba2cca0 100644 --- a/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java +++ b/data/src/main/java/one/nem/kidshift/data/impl/KSActionsImpl.java @@ -56,7 +56,6 @@ public class KSActionsImpl implements KSActions { private CompletableFuture doSyncTaskChild() { return fetchChildListAsync().thenCombine(fetchTaskListAsync(), (childListResponse, taskListResponse) -> { - // 別スレッドでキャッシュに保存 Thread cacheThread = new Thread(() -> { logger.debug("Updating cache in thread: " + Thread.currentThread().getId()); cacheWrapper.updateCache(ChildModelConverter.childListResponseToChildModelList(childListResponse), @@ -64,6 +63,14 @@ public class KSActionsImpl implements KSActions { logger.info("Cache updated"); }); cacheThread.start(); + try { + // Workaround: DBオペレーションを待たずに結果を先に返したいが、 + // (現状(呼び出し元が)戻り値をそのままCallbackに渡しているために) + // キャッシュが空の場合のキャッシュ再取得のタイミングが調整できなくなる. + cacheThread.join(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } return new TaskSyncResult() { { taskList = TaskModelConverter.taskListResponseToTaskItemModelList(taskListResponse);