From dc3f9cc91759823ce59486f19b138be4b296a0f1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 28 四月 2026 09:43:28 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java b/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java
index 7d81825..21496f0 100644
--- a/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java
+++ b/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java
@@ -6,6 +6,7 @@
 import com.zy.asrs.domain.vo.StationTaskTraceSegmentVo;
 import com.zy.asrs.entity.DeviceConfig;
 import com.zy.common.utils.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.RedisKeyType;
 import com.zy.core.enums.SlaveType;
@@ -26,6 +27,7 @@
 import java.util.Map;
 import java.util.function.Function;
 
+@Slf4j
 public class StationSegmentExecutor {
 
     private static final String CFG_STATION_COMMAND_SEGMENT_ADVANCE_RATIO = "stationCommandSegmentAdvanceRatio";
@@ -239,15 +241,19 @@
                                          Integer currentStationId) {
         // 鍦ㄤ笅鍙戞柊鍒嗘鍓嶆鏌ヨ矾鐢辩増鏈槸鍚︿粛鐒舵湁鏁堬紝閬垮厤鍦ㄨ矾鐢辩増鏈凡鏇存柊鐨勬儏鍐典笅涓嬪彂鏃х増鏈懡浠�
         if (!isRouteDispatchable(command == null ? null : command.getTaskNo(), command == null ? null : command.getRouteVersion())) {
-            if (traceRegistry != null && command != null) {
-                traceRegistry.markCancelled(command.getTaskNo(), traceVersion, currentStationId,
-                        buildDetails("reason", "route_version_replaced_before_segment_send", "routeVersion", command.getRouteVersion()));
+            // 棣栨鏍¢獙澶辫触鍙兘鏄� Redis 鍐欏叆寤惰繜瀵艰嚧鐨勶紝鐭殏绛夊緟鍚庨噸璇曚竴娆°��
+            sleepQuietly(50L);
+            if (!isRouteDispatchable(command == null ? null : command.getTaskNo(), command == null ? null : command.getRouteVersion())) {
+                if (traceRegistry != null && command != null) {
+                    traceRegistry.markCancelled(command.getTaskNo(), traceVersion, currentStationId,
+                            buildDetails("reason", "route_version_replaced_before_segment_send", "routeVersion", command.getRouteVersion()));
+                }
+                markCancelled(command == null ? null : command.getTaskNo(),
+                        command == null ? null : command.getRouteVersion(),
+                        currentStationId,
+                        "route_version_replaced_before_segment_send");
+                return false;
             }
-            markCancelled(command == null ? null : command.getTaskNo(),
-                    command == null ? null : command.getRouteVersion(),
-                    currentStationId,
-                    "route_version_replaced_before_segment_send");
-            return false;
         }
         
         while (true) {
@@ -526,7 +532,15 @@
             return true;
         }
         StationMoveCoordinator moveCoordinator = loadMoveCoordinator();
-        return moveCoordinator == null || moveCoordinator.canDispatchRoute(taskNo, routeVersion);
+        if (moveCoordinator == null) {
+            return true;
+        }
+        boolean dispatchable = moveCoordinator.canDispatchRoute(taskNo, routeVersion);
+        if (!dispatchable) {
+            log.warn("isRouteDispatchable rejected, taskNo={}, routeVersion={}, threadImpl={}",
+                    taskNo, routeVersion, deviceConfig == null ? null : deviceConfig.getThreadImpl());
+        }
+        return dispatchable;
     }
 
     private StationMoveCoordinator loadMoveCoordinator() {

--
Gitblit v1.9.1