From 691419645a49d8b5c9ffea60160542e4adf25964 Mon Sep 17 00:00:00 2001 From: qcqcqc <1220204124@zust.edu.cn> Date: Fri, 23 Jan 2026 14:55:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=B8=85=E7=90=86Exec?= =?UTF-8?q?utingMarks=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/AppLoader.js | 11 ++++++----- src/AppLoader.ts | 14 ++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/AppLoader.js b/lib/AppLoader.js index 1bcd13d..02fa24d 100644 --- a/lib/AppLoader.js +++ b/lib/AppLoader.js @@ -398,10 +398,10 @@ class AppLoader extends types_1.AppLoader { filterAndMarkExecutingRows(watcher, rows) { if (watcher.exclusive !== true) { // 不需要排他执行,直接返回所有行 - return [rows, false]; + return [rows, []]; } const rowsWithoutExecuting = []; - let hasSkipped = false; + const skipedRows = []; const watcherName = watcher.name; for (const row of rows) { if (!row.id) { @@ -413,11 +413,11 @@ class AppLoader extends types_1.AppLoader { rowsWithoutExecuting.push(row); } else { - hasSkipped = true; + skipedRows.push(row); console.warn(`实例【${process.env.OAK_INSTANCE_ID || '单机'}】执行器【${watcherName}】将跳过正在被执行的数据ID:【${row.id}】,请检查是否执行超时`); } } - return [rowsWithoutExecuting, hasSkipped]; + return [rowsWithoutExecuting, skipedRows]; } /** * 清理执行标记 @@ -494,6 +494,7 @@ class AppLoader extends types_1.AppLoader { if (!isFreeType) { await selectContext.commit(); } + this.cleanupExecutingMarks(watcher.name, hasSkipped); return result; } // 3. 执行业务逻辑 @@ -511,7 +512,7 @@ class AppLoader extends types_1.AppLoader { } catch (err) { // 清理执行标记 - this.cleanupExecutingMarks(watcher.name, rowsWithoutExecuting); + this.cleanupExecutingMarks(watcher.name, rows); if (!isFreeType) { if (err instanceof types_1.OakPartialSuccess) { await selectContext.commit(); diff --git a/src/AppLoader.ts b/src/AppLoader.ts index c68d146..d325061 100644 --- a/src/AppLoader.ts +++ b/src/AppLoader.ts @@ -479,14 +479,14 @@ export class AppLoader( watcher: Watcher, rows: Partial[] - ): [Partial[], boolean] { + ): [Partial[], Partial[]] { if (watcher.exclusive !== true) { // 不需要排他执行,直接返回所有行 - return [rows, false]; + return [rows, []]; } const rowsWithoutExecuting: Partial[] = []; - let hasSkipped = false; + const skipedRows: Partial[] = []; const watcherName = watcher.name; for (const row of rows) { @@ -499,12 +499,12 @@ export class AppLoader