From 6ac4afd36756de1b97e6730a80c62249af5d6f92 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 20 三月 2026 20:50:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/trace/StationTaskTraceRegistry.java |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/core/trace/StationTaskTraceRegistry.java b/src/main/java/com/zy/core/trace/StationTaskTraceRegistry.java
index 31a92e6..f983082 100644
--- a/src/main/java/com/zy/core/trace/StationTaskTraceRegistry.java
+++ b/src/main/java/com/zy/core/trace/StationTaskTraceRegistry.java
@@ -514,6 +514,9 @@
             }
             this.status = terminalStatus;
             this.blockedStationId = blockedStationId;
+            if (shouldClearPathOnTerminal(terminalStatus)) {
+                clearPathState();
+            }
             this.updatedAt = System.currentTimeMillis();
             this.terminalExpireAt = this.updatedAt + TERMINAL_KEEP_MS;
 
@@ -525,6 +528,22 @@
             appendEvent(eventType, message, nextDetails);
         }
 
+        private void clearPathState() {
+            this.fullPathStationIds = new ArrayList<>();
+            this.issuedStationIds = new ArrayList<>();
+            this.passedStationIds = new ArrayList<>();
+            this.pendingStationIds = new ArrayList<>();
+            this.latestIssuedSegmentPath = new ArrayList<>();
+            this.segmentList = new ArrayList<>();
+            this.issuedSegmentCount = 0;
+            this.totalSegmentCount = 0;
+        }
+
+        private boolean shouldClearPathOnTerminal(String terminalStatus) {
+            return STATUS_BLOCKED.equals(terminalStatus)
+                    || STATUS_CANCELLED.equals(terminalStatus);
+        }
+
         private synchronized boolean shouldRemove(long now) {
             return terminalExpireAt != null && terminalExpireAt <= now;
         }

--
Gitblit v1.9.1