From db86c82bc8c91d3db3875bfc0e7de4d9f5984759 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Oct 2025 22:01:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor(task):=E4=BC=98=E5=8C=96=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E7=89=87=E6=AE=B5=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E5=A2=9E=E5=BC=BA=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除任务执行前的空列表检查,统一通过VideoPieceGetter.addTask处理 - 增强Placeholder初始化阶段的日志输出,区分有无templateId情况- 细化计数器递减过程中的日志信息,记录设备关联及剩余数量 - 完善进度检查时的日志内容,增加已完成与未完成的统计显示- 补充Callback调用条件判断,避免重复触发并记录调用状态 - 添加兜底逻辑中对Callback是否已触发的判断和相应日志提示 --- .../task/impl/TaskTaskServiceImpl.java | 6 +-- .../com/ycwl/basic/task/VideoPieceGetter.java | 45 +++++++++++++++---- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index 1df3970e..e422c794 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -457,11 +457,7 @@ public class TaskTaskServiceImpl implements TaskService { taskStatusBiz.setFaceCutStatus(faceId, 2); } }; - if (!sourceList.isEmpty()) { - task.callback.onInvoke(); - } else { - VideoPieceGetter.addTask(task); - } + VideoPieceGetter.addTask(task); } @Override diff --git a/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java b/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java index 8bcb07d9..8aa3ec47 100644 --- a/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java +++ b/src/main/java/com/ycwl/basic/task/VideoPieceGetter.java @@ -173,10 +173,18 @@ public class VideoPieceGetter { templatePlaceholder.forEach(deviceId -> { currentUnFinPlaceholder.computeIfAbsent(deviceId, k -> new AtomicInteger(0)).incrementAndGet(); }); + log.info("[Placeholder初始化] 有templateId,初始化完成:placeholder总数={}, 不同设备数={}, 详细计数={}", + templatePlaceholder.size(), + currentUnFinPlaceholder.size(), + currentUnFinPlaceholder.entrySet().stream() + .map(e -> e.getKey() + "=" + e.getValue().get()) + .collect(Collectors.joining(", "))); } else { collection.keySet().forEach(deviceId -> { currentUnFinPlaceholder.put(deviceId.toString(), new AtomicInteger(1)); }); + log.info("[Placeholder初始化] 无templateId,初始化完成:设备数={}", + currentUnFinPlaceholder.size()); } collection.values().forEach(faceSampleList -> { executor.execute(() -> { @@ -199,9 +207,15 @@ public class VideoPieceGetter { doCut(pairDeviceId, faceSample.getId(), faceSample.getCreateAt(), task); // 让主设备的计数器 -1 AtomicInteger pairCount = currentUnFinPlaceholder.get(pairDeviceId.toString()); - if (pairCount != null && pairCount.decrementAndGet() <= 0) { - currentUnFinPlaceholder.remove(pairDeviceId.toString()); - log.info("设备 {} 的placeholder已满足", pairDeviceId); + if (pairCount != null) { + int remaining = pairCount.decrementAndGet(); + log.info("[计数器更新] 关联设备 {} 计数器递减,剩余={}, currentUnFinPlaceholder总数={}", + pairDeviceId, remaining, currentUnFinPlaceholder.size()); + if (remaining <= 0) { + currentUnFinPlaceholder.remove(pairDeviceId.toString()); + log.info("[Placeholder完成] 设备 {} 的placeholder已满足并移除,剩余设备数={}", + pairDeviceId, currentUnFinPlaceholder.size()); + } } } }); @@ -210,9 +224,15 @@ public class VideoPieceGetter { // 处理当前设备 doCut(faceSample.getDeviceId(), faceSample.getId(), faceSample.getCreateAt(), task); AtomicInteger count = currentUnFinPlaceholder.get(faceSample.getDeviceId().toString()); - if (count != null && count.decrementAndGet() <= 0) { - currentUnFinPlaceholder.remove(faceSample.getDeviceId().toString()); - log.info("设备 {} 的placeholder已满足", faceSample.getDeviceId()); + if (count != null) { + int remaining = count.decrementAndGet(); + log.info("[计数器更新] 设备 {} 计数器递减,剩余={}, currentUnFinPlaceholder总数={}", + faceSample.getDeviceId(), remaining, currentUnFinPlaceholder.size()); + if (remaining <= 0) { + currentUnFinPlaceholder.remove(faceSample.getDeviceId().toString()); + log.info("[Placeholder完成] 设备 {} 的placeholder已满足并移除,剩余设备数={}", + faceSample.getDeviceId(), currentUnFinPlaceholder.size()); + } } // 如果有templateId,检查是否所有placeholder都已满足 @@ -221,14 +241,17 @@ public class VideoPieceGetter { int remainingCount = currentUnFinPlaceholder.values().stream() .mapToInt(AtomicInteger::get) .sum(); - log.info("当前进度:已完成 {}/{},剩余 {} 个placeholder未满足", - totalPlaceholderCount - remainingCount, totalPlaceholderCount, remainingCount); + log.info("[进度检查] 当前进度:已完成 {}/{},剩余 {} 个placeholder未满足,剩余设备数={}", + totalPlaceholderCount - remainingCount, totalPlaceholderCount, remainingCount, + currentUnFinPlaceholder.size()); if (currentUnFinPlaceholder.isEmpty()) { if (!invoke.get()) { invoke.set(true); - log.info("所有placeholder已满足,提前调用callback"); + log.info("[Callback调用] 所有placeholder已满足,currentUnFinPlaceholder为空,提前调用callback"); task.getCallback().onInvoke(); + } else { + log.warn("[Callback跳过] 所有placeholder已满足,但callback已被调用过"); } } } @@ -252,7 +275,11 @@ public class VideoPieceGetter { if (null != task.getCallback()) { if (!invoke.get()) { invoke.set(true); + log.info("[Callback调用] 兜底调用callback,currentUnFinPlaceholder剩余设备数={}", + currentUnFinPlaceholder.size()); task.getCallback().onInvoke(); + } else { + log.info("[Callback跳过] 兜底检查,callback已被调用过"); } } if (task.getFaceId() != null) {