From 17bb891e33015957e4907181e339cdb15400616b Mon Sep 17 00:00:00 2001 From: wangyu096 Date: Thu, 9 Jan 2025 15:32:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=BC=A0=E5=85=A5=E9=9D=9E=E6=B3=95=E4=B8=BB=E6=9C=BA=EF=BC=8C?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=A4=84=E7=90=86=E5=BC=82=E5=B8=B8=20#3375?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TaskInstanceExecuteObjectProcessor.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/backend/job-execute/service-job-execute/src/main/java/com/tencent/bk/job/execute/service/impl/TaskInstanceExecuteObjectProcessor.java b/src/backend/job-execute/service-job-execute/src/main/java/com/tencent/bk/job/execute/service/impl/TaskInstanceExecuteObjectProcessor.java index 08b8f9c8bb..38024edb30 100644 --- a/src/backend/job-execute/service-job-execute/src/main/java/com/tencent/bk/job/execute/service/impl/TaskInstanceExecuteObjectProcessor.java +++ b/src/backend/job-execute/service-job-execute/src/main/java/com/tencent/bk/job/execute/service/impl/TaskInstanceExecuteObjectProcessor.java @@ -773,8 +773,15 @@ private void checkExecuteObjectExist(TaskInstanceDTO taskInstance, // 处理主机执行对象 if (CollectionUtils.isNotEmpty(taskInstanceExecuteObjects.getNotExistHosts())) { if (shouldIgnoreInvalidHost(taskInstance)) { - // 忽略主机不存在错误,并标识执行对象的 invalid 属性为 true - markExecuteObjectInvalid(stepInstanceList, taskInstanceExecuteObjects.getNotExistHosts()); + if (taskInstanceExecuteObjects.getNotExistHosts().stream().anyMatch(host -> host.getHostId() == null)) { + // 由于历史原因,部分定时任务使用了管控区域ID:Ipv4 作为主机 ID,并且这部分主机已经不存在于 cmdb,所以无法 + // 正确获取到对应的 hostId,会导致后续报错;所以这里直接对外抛出错误,不再继续兼容处理 + invalidExecuteObjects.addAll(taskInstanceExecuteObjects.getNotExistHosts().stream() + .map(this::printHostIdOrIp).collect(Collectors.toList())); + } else { + // 忽略主机不存在错误,并标识执行对象的 invalid 属性为 true + markExecuteObjectInvalid(stepInstanceList, taskInstanceExecuteObjects.getNotExistHosts()); + } } else { invalidExecuteObjects.addAll(taskInstanceExecuteObjects.getNotExistHosts().stream() .map(this::printHostIdOrIp).collect(Collectors.toList()));