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