| | |
| | | } |
| | | } |
| | | long stepStartNs = System.nanoTime(); |
| | | Map<Integer, StationTaskTraceVo> fallbackTraceMap = loadFallbackActiveTraceMap(null, statusMap, traceMap.keySet()); |
| | | Map<Integer, StationTaskTraceVo> fallbackTraceMap = buildProtocolFallbackTraceMap(statusMap, traceMap.keySet()); |
| | | if (stepCostMap != null) { |
| | | stepCostMap.put("loadFallbackTraces", elapsedMillis(stepStartNs)); |
| | | } |
| | |
| | | || StationTaskTraceRegistry.STATUS_REROUTED.equals(status); |
| | | } |
| | | |
| | | private Map<Integer, StationTaskTraceVo> buildProtocolFallbackTraceMap(Map<Integer, StationProtocol> statusMap, |
| | | Set<Integer> existingTaskNoSet) { |
| | | if (statusMap == null || statusMap.isEmpty()) { |
| | | return Collections.emptyMap(); |
| | | } |
| | | Map<Integer, StationTaskTraceVo> result = new LinkedHashMap<>(); |
| | | for (StationProtocol protocol : statusMap.values()) { |
| | | if (protocol == null || protocol.getTaskNo() == null || protocol.getTaskNo() <= 0) { |
| | | continue; |
| | | } |
| | | if (!Boolean.TRUE.equals(protocol.isLoading())) { |
| | | continue; |
| | | } |
| | | if (existingTaskNoSet != null && existingTaskNoSet.contains(protocol.getTaskNo())) { |
| | | continue; |
| | | } |
| | | Integer stationId = protocol.getStationId(); |
| | | Integer targetStaNo = protocol.getTargetStaNo(); |
| | | if (stationId == null || targetStaNo == null || stationId.equals(targetStaNo)) { |
| | | continue; |
| | | } |
| | | List<Integer> path = new ArrayList<>(); |
| | | path.add(stationId); |
| | | path.add(targetStaNo); |
| | | List<Integer> pendingStationIds = new ArrayList<>(); |
| | | pendingStationIds.add(targetStaNo); |
| | | StationTaskTraceVo vo = new StationTaskTraceVo(); |
| | | vo.setTaskNo(protocol.getTaskNo()); |
| | | vo.setThreadImpl("PROTOCOL_FALLBACK"); |
| | | vo.setStatus(StationTaskTraceRegistry.STATUS_RUNNING); |
| | | vo.setTraceVersion(1); |
| | | vo.setStartStationId(stationId); |
| | | vo.setCurrentStationId(stationId); |
| | | vo.setFinalTargetStationId(targetStaNo); |
| | | vo.setFullPathStationIds(path); |
| | | vo.setIssuedStationIds(path); |
| | | vo.setPassedStationIds(Collections.emptyList()); |
| | | vo.setPendingStationIds(pendingStationIds); |
| | | vo.setLatestIssuedSegmentPath(path); |
| | | vo.setSegmentList(Collections.emptyList()); |
| | | vo.setIssuedSegmentCount(0); |
| | | vo.setTotalSegmentCount(1); |
| | | vo.setUpdatedAt(System.currentTimeMillis()); |
| | | vo.setEvents(Collections.emptyList()); |
| | | result.put(protocol.getTaskNo(), vo); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private Map<Integer, StationTaskTraceVo> loadFallbackActiveTraceMap(Integer currentTaskNo, |
| | | Map<Integer, StationProtocol> statusMap, |
| | | Set<Integer> existingTaskNoSet) { |