@n8n/scheduler 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -151,14 +151,25 @@ function createScheduler(deps) {
151
151
  },
152
152
  }, signal);
153
153
  await (0, materializer_tracing_1.traceCreatedTasks)(tracer, summary.created);
154
- recordMetric(() => metrics.recordMaterialized(summary.occurrences, summary.deferredJobs));
154
+ recordMetric(() => {
155
+ metrics.recordMaterialized(summary.occurrences, summary.deferredJobs);
156
+ metrics.recordMisfired(summary.misfires);
157
+ metrics.recordRetired(summary.retiredOccurrences);
158
+ });
155
159
  return summary;
156
160
  }
157
161
  catch (error) {
158
162
  if (signal?.aborted === true &&
159
163
  signal.reason !== lifecycle_1.PASS_TIMED_OUT &&
160
164
  error === signal.reason) {
161
- return { claimedJobs: 0, occurrences: 0, created: [], deferredJobs: 0 };
165
+ return {
166
+ claimedJobs: 0,
167
+ occurrences: 0,
168
+ created: [],
169
+ deferredJobs: 0,
170
+ misfires: [],
171
+ retiredOccurrences: 0,
172
+ };
162
173
  }
163
174
  throw error;
164
175
  }
@@ -166,6 +177,8 @@ function createScheduler(deps) {
166
177
  [attributes_1.SCHEDULER_ATTRIBUTES.claimedJobs]: summary.claimedJobs,
167
178
  [attributes_1.SCHEDULER_ATTRIBUTES.occurrences]: summary.occurrences,
168
179
  [attributes_1.SCHEDULER_ATTRIBUTES.deferredJobs]: summary.deferredJobs,
180
+ [attributes_1.SCHEDULER_ATTRIBUTES.skippedOccurrences]: (0, materializer_1.totalDiscarded)(summary.misfires),
181
+ [attributes_1.SCHEDULER_ATTRIBUTES.retiredOccurrences]: summary.retiredOccurrences,
169
182
  }));
170
183
  const runExecute = (0, pass_tracing_1.tracePass)(tracer, {
171
184
  name: 'Scheduler claim',
@@ -180,6 +193,11 @@ function createScheduler(deps) {
180
193
  error: described(error),
181
194
  });
182
195
  },
196
+ onRetireError: (error) => {
197
+ emit('error', 'Scheduler could not retire stale pending occurrences', {
198
+ error: described(error),
199
+ });
200
+ },
183
201
  onDeadLetter: (task) => {
184
202
  emit('warn', 'Scheduler dead-lettered a task; its last attempt lost its lease', {
185
203
  ...task,
@@ -189,11 +207,12 @@ function createScheduler(deps) {
189
207
  emit('warn', 'Scheduler completed a task whose lease lapsed after dispatch; its effect had already happened', { taskId });
190
208
  },
191
209
  }, signal);
192
- recordMetric(() => metrics.recordReaped(result.reclaimed, result.deadLettered));
210
+ recordMetric(() => metrics.recordReaped(result.reclaimed, result.deadLettered, result.missed));
193
211
  return result;
194
212
  }, (result) => ({
195
213
  [attributes_1.SCHEDULER_ATTRIBUTES.reclaimed]: result.reclaimed,
196
214
  [attributes_1.SCHEDULER_ATTRIBUTES.deadLettered]: result.deadLettered,
215
+ [attributes_1.SCHEDULER_ATTRIBUTES.missed]: result.missed,
197
216
  }));
198
217
  const runPrune = (0, pass_tracing_1.tracePass)(tracer, { name: 'Scheduler retention', op: 'scheduler.retention' }, async (signal) => {
199
218
  const summary = await (0, retention_1.prune)(taskStore, retentionOptions, signal);
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/core/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/core/factory.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@ export { provision, deprovision, createJobProvisioner, scheduleFingerprint } fro
10
10
  export type { JobProvisioner, JobProvisionerDeps, ProvisionTransaction, RunInProvisionTransaction, DeprovisionTransaction, RunInDeprovisionTransaction, ScheduleDefinition, CronDefinition, RecurringCronDefinition, IntervalDefinition, OneOffDefinition, DesiredJob, ExistingJob, ProvisionedJob, ProvisionSummary, } from './provisioning';
11
11
  export { createDispatchReporter } from './executor';
12
12
  export type { ExecutorOptions, TaskHandler, DispatchReporter, DispatchDecision, } from './executor';
13
- export { DEFAULT_MATERIALIZER_OPTIONS, materialize } from './materializer';
14
- export type { MaterializerOptions, MaterializerSummary, NewOccurrence, RunInTransaction, } from './materializer';
13
+ export { DEFAULT_MATERIALIZER_OPTIONS, materialize, totalDiscarded } from './materializer';
14
+ export type { MaterializerOptions, MaterializerSummary, MisfireCount, NewOccurrence, RunInTransaction, } from './materializer';
15
15
  export { pollLookaheadSeconds } from './lifecycle';
16
16
  export type { ConcurrencyMode, LifecycleOptions } from './lifecycle';
17
17
  export type { ReaperOptions, ReapResult } from './reaper';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.noopMetrics = exports.noopTracer = exports.SpanStatus = exports.pollLookaheadSeconds = exports.materialize = exports.DEFAULT_MATERIALIZER_OPTIONS = exports.createDispatchReporter = exports.scheduleFingerprint = exports.createJobProvisioner = exports.deprovision = exports.provision = exports.measureClockSkew = exports.isClockSkewSignificant = exports.DEFAULT_CLOCK_SKEW_OPTIONS = exports.CLOCK_SKEW_WARN_THRESHOLD_MS = exports.validateSchedule = exports.computeNextRunAt = exports.computeFirstRunAt = exports.DEFAULT_DISPATCH_LAG_WARN_THRESHOLD_SECONDS = exports.createScheduler = void 0;
3
+ exports.noopMetrics = exports.noopTracer = exports.SpanStatus = exports.pollLookaheadSeconds = exports.totalDiscarded = exports.materialize = exports.DEFAULT_MATERIALIZER_OPTIONS = exports.createDispatchReporter = exports.scheduleFingerprint = exports.createJobProvisioner = exports.deprovision = exports.provision = exports.measureClockSkew = exports.isClockSkewSignificant = exports.DEFAULT_CLOCK_SKEW_OPTIONS = exports.CLOCK_SKEW_WARN_THRESHOLD_MS = exports.validateSchedule = exports.computeNextRunAt = exports.computeFirstRunAt = exports.DEFAULT_DISPATCH_LAG_WARN_THRESHOLD_SECONDS = exports.createScheduler = void 0;
4
4
  var factory_1 = require("./factory");
5
5
  Object.defineProperty(exports, "createScheduler", { enumerable: true, get: function () { return factory_1.createScheduler; } });
6
6
  Object.defineProperty(exports, "DEFAULT_DISPATCH_LAG_WARN_THRESHOLD_SECONDS", { enumerable: true, get: function () { return factory_1.DEFAULT_DISPATCH_LAG_WARN_THRESHOLD_SECONDS; } });
@@ -24,6 +24,7 @@ Object.defineProperty(exports, "createDispatchReporter", { enumerable: true, get
24
24
  var materializer_1 = require("./materializer");
25
25
  Object.defineProperty(exports, "DEFAULT_MATERIALIZER_OPTIONS", { enumerable: true, get: function () { return materializer_1.DEFAULT_MATERIALIZER_OPTIONS; } });
26
26
  Object.defineProperty(exports, "materialize", { enumerable: true, get: function () { return materializer_1.materialize; } });
27
+ Object.defineProperty(exports, "totalDiscarded", { enumerable: true, get: function () { return materializer_1.totalDiscarded; } });
27
28
  var lifecycle_1 = require("./lifecycle");
28
29
  Object.defineProperty(exports, "pollLookaheadSeconds", { enumerable: true, get: function () { return lifecycle_1.pollLookaheadSeconds; } });
29
30
  var tracer_1 = require("../observability/tracer");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AACA,qCAAyF;AAAhF,0GAAA,eAAe,OAAA;AAAE,sIAAA,2CAA2C,OAAA;AAgBrE,kDAA4E;AAAnE,6GAAA,iBAAiB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAC5C,kDAAyD;AAAhD,4GAAA,gBAAgB,OAAA;AAEzB,2CAKsB;AAJrB,0HAAA,4BAA4B,OAAA;AAC5B,wHAAA,0BAA0B,OAAA;AAC1B,oHAAA,sBAAsB,OAAA;AACtB,8GAAA,gBAAgB,OAAA;AAIjB,+CAAmG;AAA1F,yGAAA,SAAS,OAAA;AAAE,2GAAA,WAAW,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAAE,mHAAA,mBAAmB,OAAA;AAkB1E,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAO/B,+CAA2E;AAAlE,4HAAA,4BAA4B,OAAA;AAAE,2GAAA,WAAW,OAAA;AAOlD,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAK7B,kDAAiE;AAAxD,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAE/B,oDAAuD;AAA9C,sGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AACA,qCAAyF;AAAhF,0GAAA,eAAe,OAAA;AAAE,sIAAA,2CAA2C,OAAA;AAgBrE,kDAA4E;AAAnE,6GAAA,iBAAiB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAC5C,kDAAyD;AAAhD,4GAAA,gBAAgB,OAAA;AAEzB,2CAKsB;AAJrB,0HAAA,4BAA4B,OAAA;AAC5B,wHAAA,0BAA0B,OAAA;AAC1B,oHAAA,sBAAsB,OAAA;AACtB,8GAAA,gBAAgB,OAAA;AAIjB,+CAAmG;AAA1F,yGAAA,SAAS,OAAA;AAAE,2GAAA,WAAW,OAAA;AAAE,oHAAA,oBAAoB,OAAA;AAAE,mHAAA,mBAAmB,OAAA;AAkB1E,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAO/B,+CAA2F;AAAlF,4HAAA,4BAA4B,OAAA;AAAE,2GAAA,WAAW,OAAA;AAAE,8GAAA,cAAc,OAAA;AAQlE,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAK7B,kDAAiE;AAAxD,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAE/B,oDAAuD;AAA9C,sGAAA,WAAW,OAAA"}
@@ -1,4 +1,4 @@
1
- export { materialize, type MaterializerHooks, type MaterializerSummary, type MaterializerOptions, type OnJobPlanError, } from './materialize';
1
+ export { materialize, totalDiscarded, type MaterializerHooks, type MaterializerSummary, type MaterializerOptions, type MisfireCount, type OnJobPlanError, } from './materialize';
2
2
  export { DEFAULT_MATERIALIZER_OPTIONS } from './options';
3
3
  export { planOccurrences, type OccurrencePlan } from './plan';
4
4
  export type { DueJobs, NewOccurrence, PlannedJob, RecordedOccurrence, RecordOccurrencesResult, RunInTransaction, MaterializerTransaction, } from './transaction';
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.planOccurrences = exports.DEFAULT_MATERIALIZER_OPTIONS = exports.materialize = void 0;
3
+ exports.planOccurrences = exports.DEFAULT_MATERIALIZER_OPTIONS = exports.totalDiscarded = exports.materialize = void 0;
4
4
  var materialize_1 = require("./materialize");
5
5
  Object.defineProperty(exports, "materialize", { enumerable: true, get: function () { return materialize_1.materialize; } });
6
+ Object.defineProperty(exports, "totalDiscarded", { enumerable: true, get: function () { return materialize_1.totalDiscarded; } });
6
7
  var options_1 = require("./options");
7
8
  Object.defineProperty(exports, "DEFAULT_MATERIALIZER_OPTIONS", { enumerable: true, get: function () { return options_1.DEFAULT_MATERIALIZER_OPTIONS; } });
8
9
  var plan_1 = require("./plan");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/materializer/index.ts"],"names":[],"mappings":";;;AAAA,6CAMuB;AALtB,0GAAA,WAAW,OAAA;AAMZ,qCAAyD;AAAhD,uHAAA,4BAA4B,OAAA;AACrC,+BAA8D;AAArD,uGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/materializer/index.ts"],"names":[],"mappings":";;;AAAA,6CAQuB;AAPtB,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AAOf,qCAAyD;AAAhD,uHAAA,4BAA4B,OAAA;AACrC,+BAA8D;AAArD,uGAAA,eAAe,OAAA"}
@@ -1,12 +1,16 @@
1
1
  import type { ScheduledJob } from '../types';
2
+ import { type MisfireCount } from './misfire';
2
3
  import { type MaterializerOptions } from './options';
3
4
  import type { RecordedOccurrence, RunInTransaction } from './transaction';
4
5
  export type { MaterializerOptions } from './options';
6
+ export type { MisfireCount } from './misfire';
5
7
  export interface MaterializerSummary {
6
8
  claimedJobs: number;
7
9
  occurrences: number;
8
10
  created: RecordedOccurrence[];
9
11
  deferredJobs: number;
12
+ misfires: MisfireCount[];
13
+ retiredOccurrences: number;
10
14
  }
11
15
  export type OnJobPlanError = (job: ScheduledJob, error: unknown) => void;
12
16
  export interface MaterializerHooks {
@@ -17,3 +21,4 @@ export interface MaterializerHooks {
17
21
  }) => void;
18
22
  }
19
23
  export declare function materialize(runInTransaction: RunInTransaction, options?: MaterializerOptions, hooks?: MaterializerHooks, signal?: AbortSignal): Promise<MaterializerSummary>;
24
+ export declare function totalDiscarded(misfires: MisfireCount[]): number;
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.materialize = materialize;
4
+ exports.totalDiscarded = totalDiscarded;
4
5
  const constants_1 = require("@n8n/constants");
6
+ const misfire_1 = require("./misfire");
5
7
  const options_1 = require("./options");
6
8
  const plan_1 = require("./plan");
7
9
  async function materialize(runInTransaction, options = options_1.DEFAULT_MATERIALIZER_OPTIONS, hooks = {}, signal) {
@@ -11,12 +13,21 @@ async function materialize(runInTransaction, options = options_1.DEFAULT_MATERIA
11
13
  const claimed = await tx.claimDueJobs(options.batchSize, lookaheadMs);
12
14
  signal?.throwIfAborted();
13
15
  if (claimed === undefined) {
14
- return { claimedJobs: 0, occurrences: 0, created: [], deferredJobs: 0 };
16
+ return {
17
+ claimedJobs: 0,
18
+ occurrences: 0,
19
+ created: [],
20
+ deferredJobs: 0,
21
+ misfires: [],
22
+ retiredOccurrences: 0,
23
+ };
15
24
  }
16
25
  const { occurrencesPlanned, numberOfJobsDeferred } = planOrDeferJobs(claimed, options, hooks.onPlanError);
17
- const rows = toNewOccurrences(occurrencesPlanned);
26
+ const rows = toNewOccurrences(occurrencesPlanned, claimed.now);
18
27
  const { recorded, created } = await tx.recordOccurrences(rows);
19
28
  signal?.throwIfAborted();
29
+ const retiredOccurrences = await tx.retireSuperseded(toSuperseded(occurrencesPlanned));
30
+ signal?.throwIfAborted();
20
31
  if (recorded < rows.length) {
21
32
  try {
22
33
  hooks.onSkippedDuplicates?.({ planned: rows.length, recorded });
@@ -30,18 +41,31 @@ async function materialize(runInTransaction, options = options_1.DEFAULT_MATERIA
30
41
  occurrences: recorded,
31
42
  created,
32
43
  deferredJobs: numberOfJobsDeferred,
44
+ misfires: (0, misfire_1.countMisfires)(occurrencesPlanned),
45
+ retiredOccurrences,
33
46
  };
34
47
  });
35
48
  }
36
- function toNewOccurrences(planned) {
37
- return planned.flatMap(({ job, plan }) => plan.occurrences.map((when) => ({
38
- jobId: job.id,
39
- taskType: job.taskType,
40
- payload: job.payload,
41
- scheduledFor: when,
42
- runAt: when,
43
- maxAttempts: job.maxAttempts,
44
- })));
49
+ function totalDiscarded(misfires) {
50
+ return misfires.reduce((total, { discarded }) => total + discarded, 0);
51
+ }
52
+ function toNewOccurrences(planned, now) {
53
+ return planned.flatMap(({ job, plan }) => plan.occurrences.map((when) => {
54
+ const runAt = when.getTime() === plan.catchUpAt?.getTime() ? now : when;
55
+ const visibleAt = Math.max(runAt.getTime(), now.getTime());
56
+ return {
57
+ jobId: job.id,
58
+ taskType: job.taskType,
59
+ payload: job.payload,
60
+ scheduledFor: when,
61
+ runAt,
62
+ maxAttempts: job.maxAttempts,
63
+ missedAfter: new Date(visibleAt + job.misfireGraceSeconds * constants_1.Time.seconds.toMilliseconds),
64
+ };
65
+ }));
66
+ }
67
+ function toSuperseded(planned) {
68
+ return planned.flatMap(({ job, plan }) => plan.catchUpAt === null ? [] : [{ jobId: job.id, before: plan.catchUpAt }]);
45
69
  }
46
70
  function planOrDeferJobs(dueJobs, options, onPlanError) {
47
71
  const plans = dueJobs.jobs.map((job) => planOrDeferJob(job, dueJobs.now, options, onPlanError));
@@ -67,7 +91,13 @@ function planOrDeferJob(job, now, options, onPlanError) {
67
91
  return {
68
92
  plannedJob: {
69
93
  job,
70
- plan: { occurrences: [], nextRunAt: retryAt, lastFiredAt: job.lastFiredAt },
94
+ plan: {
95
+ occurrences: [],
96
+ skippedOccurrences: 0,
97
+ catchUpAt: null,
98
+ nextRunAt: retryAt,
99
+ lastFiredAt: job.lastFiredAt,
100
+ },
71
101
  },
72
102
  deferred: true,
73
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../../src/core/materializer/materialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../../src/core/materializer/materialize.ts"],"names":[],"mappings":";;;;AAAA,8CAAsC;AAGtC,uCAA6D;AAC7D,uCAAmF;AACnF,iCAAyC;AA2FlC,KAAK,sBACX,gBAAkC,EAClC,OAAO,GAAwB,sCAA4B,EAC3D,KAAK,GAAsB,EAAE,EAC7B,MAAoB;IAEpB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,MAAM,gBAAgB,CAAsB,KAAK,EAAE,EAAE,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC3E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACN,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,CAAC;gBACf,QAAQ,EAAE,EAAE;gBACZ,kBAAkB,EAAE,CAAC;aACrB,CAAC;QACH,CAAC;QACD,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,GAAG,eAAe,CACnE,OAAO,EACP,OAAO,EACP,KAAK,CAAC,WAAW,CACjB,CAAC;QACF,MAAM,IAAI,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACvF,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACJ,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACF,CAAC;QACD,MAAM,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAEzC,OAAO;YACN,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;YAChC,WAAW,EAAE,QAAQ;YACrB,OAAO;YACP,YAAY,EAAE,oBAAoB;YAClC,QAAQ,EAAE,IAAA,uBAAa,EAAC,kBAAkB,CAAC;YAC3C,kBAAkB;SAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,wBAA+B,QAAwB;IACtD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAGD,SAAS,gBAAgB,CAAC,OAAqB,EAAE,GAAS;IACzD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAExE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO;YACN,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,YAAY,EAAE,IAAI;YAClB,KAAK;YACL,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,mBAAmB,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACxF,CAAC;IACH,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAGD,SAAS,YAAY,CAAC,OAAqB;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACxC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAC1E,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACvB,OAAgB,EAChB,OAA4B,EAC5B,WAA4B;IAK5B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAChG,OAAO;QACN,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;QAC7D,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM;KACrE,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACtB,GAAiB,EACjB,GAAS,EACT,OAA4B,EAC5B,WAA4B;IAK5B,IAAI,CAAC;QACJ,OAAO;YACN,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAA,sBAAe,EAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;YAC7D,QAAQ,EAAE,KAAK;SACf,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC;YACJ,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAQD,MAAM,OAAO,GAAG,IAAI,IAAI,CACvB,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CACtE,CAAC;QACF,OAAO;YACN,UAAU,EAAE;gBACX,GAAG;gBACH,IAAI,EAAE;oBACL,WAAW,EAAE,EAAE;oBACf,kBAAkB,EAAE,CAAC;oBACrB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,OAAO;oBAClB,WAAW,EAAE,GAAG,CAAC,WAAW;iBAC5B;aACD;YACD,QAAQ,EAAE,IAAI;SACd,CAAC;IACH,CAAC;AACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ScheduledJobMisfirePolicy } from '@n8n/constants';
2
+ import type { ScheduledJob } from '../types';
3
+ import type { PlannedJob } from './transaction';
4
+ export interface MisfireCount {
5
+ taskType: string;
6
+ policy: ScheduledJobMisfirePolicy;
7
+ discarded: number;
8
+ }
9
+ export declare function applyMisfirePolicy(due: Date[], now: Date, job: ScheduledJob, truncated: boolean): {
10
+ occurrences: Date[];
11
+ catchUpAt: Date | null;
12
+ };
13
+ export declare function countMisfires(planned: PlannedJob[]): MisfireCount[];
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyMisfirePolicy = applyMisfirePolicy;
4
+ exports.countMisfires = countMisfires;
5
+ const constants_1 = require("@n8n/constants");
6
+ const errors_1 = require("../errors");
7
+ function applyMisfirePolicy(due, now, job, truncated) {
8
+ const graceDeadline = now.getTime() - job.misfireGraceSeconds * constants_1.Time.seconds.toMilliseconds;
9
+ const behind = due.filter((occurrence) => occurrence.getTime() <= now.getTime());
10
+ const ahead = due.slice(behind.length);
11
+ if (behind.length === 0 || behind[0].getTime() > graceDeadline) {
12
+ return { occurrences: due, catchUpAt: null };
13
+ }
14
+ switch (job.misfirePolicy) {
15
+ case constants_1.ScheduledJobMisfirePolicy.Coalesce: {
16
+ if (truncated && ahead.length === 0)
17
+ return { occurrences: [], catchUpAt: null };
18
+ const catchUpAt = behind[behind.length - 1];
19
+ return { occurrences: [catchUpAt, ...ahead], catchUpAt };
20
+ }
21
+ case constants_1.ScheduledJobMisfirePolicy.Skip:
22
+ return { occurrences: ahead, catchUpAt: null };
23
+ default: {
24
+ const exhaustive = job.misfirePolicy;
25
+ throw new errors_1.CorruptStorageRowError(`scheduled_job ${job.id} has unknown misfire policy '${String(exhaustive)}'`);
26
+ }
27
+ }
28
+ }
29
+ function countMisfires(planned) {
30
+ const grouped = planned
31
+ .filter(({ plan }) => plan.skippedOccurrences > 0)
32
+ .reduce((groups, { job, plan }) => {
33
+ const key = `${job.taskType}:${job.misfirePolicy}`;
34
+ return groups.set(key, {
35
+ taskType: job.taskType,
36
+ policy: job.misfirePolicy,
37
+ discarded: (groups.get(key)?.discarded ?? 0) + plan.skippedOccurrences,
38
+ });
39
+ }, new Map());
40
+ return [...grouped.values()];
41
+ }
42
+ //# sourceMappingURL=misfire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misfire.js","sourceRoot":"","sources":["../../../src/core/materializer/misfire.ts"],"names":[],"mappings":";;;;AAAA,8CAAiE;AAEjE,sCAAmD;AA0BnD,4BACC,GAAW,EACX,GAAS,EACT,GAAiB,EACjB,SAAkB;IAElB,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,mBAAmB,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IAE5F,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;QAChE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,QAAQ,GAAG,CAAC,aAAa,EAAE,CAAC;QAC3B,KAAK,qCAAyB,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACjF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QAC1D,CAAC;QACD,KAAK,qCAAyB,CAAC,IAAI;YAClC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAChD,SAAS,CAAC;YAGT,MAAM,UAAU,GAAU,GAAG,CAAC,aAAa,CAAC;YAC5C,MAAM,IAAI,+BAAsB,CAC/B,iBAAiB,GAAG,CAAC,EAAE,gCAAgC,MAAM,CAAC,UAAU,CAAC,GAAG,CAC5E,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAGD,uBAA8B,OAAqB;IAClD,MAAM,OAAO,GAAG,OAAO;SACrB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;SACjD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,aAAa;YACzB,SAAS,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB;SACtE,CAAC,CAAC;IACJ,CAAC,EAAE,IAAI,GAAG,EAAwB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import type { ScheduledJob } from '../types';
2
2
  export interface OccurrencePlan {
3
3
  occurrences: Date[];
4
+ skippedOccurrences: number;
5
+ catchUpAt: Date | null;
4
6
  nextRunAt: Date | null;
5
7
  lastFiredAt: Date | null;
6
8
  }
@@ -4,25 +4,34 @@ exports.planOccurrences = planOccurrences;
4
4
  const constants_1 = require("@n8n/constants");
5
5
  const next_run_1 = require("../recurrence/next-run");
6
6
  const resolve_1 = require("../recurrence/resolve");
7
+ const misfire_1 = require("./misfire");
7
8
  function planOccurrences(job, now, options) {
8
9
  const schedule = (0, resolve_1.resolveSchedule)(job, options.defaultTimezone);
9
10
  const windowEnd = now.getTime() + options.windowSeconds * constants_1.Time.seconds.toMilliseconds;
10
11
  if (job.nextRunAt === null) {
11
- return { occurrences: [], nextRunAt: null, lastFiredAt: job.lastFiredAt };
12
+ return {
13
+ occurrences: [],
14
+ skippedOccurrences: 0,
15
+ catchUpAt: null,
16
+ nextRunAt: null,
17
+ lastFiredAt: job.lastFiredAt,
18
+ };
12
19
  }
13
- const occurrences = [];
20
+ const due = [];
14
21
  const fires = (0, next_run_1.occurrencesFrom)(schedule, job.nextRunAt);
15
22
  let fire = fires.next();
16
- while (!fire.done &&
17
- fire.value.getTime() <= windowEnd &&
18
- occurrences.length < options.maxPerJob) {
19
- occurrences.push(fire.value);
23
+ while (!fire.done && fire.value.getTime() <= windowEnd && due.length < options.maxPerJob) {
24
+ due.push(fire.value);
20
25
  fire = fires.next();
21
26
  }
27
+ const truncated = !fire.done && fire.value.getTime() <= windowEnd;
28
+ const { occurrences, catchUpAt } = (0, misfire_1.applyMisfirePolicy)(due, now, job, truncated);
22
29
  return {
23
30
  occurrences,
31
+ skippedOccurrences: due.length - occurrences.length,
32
+ catchUpAt,
24
33
  nextRunAt: fire.done ? null : fire.value,
25
- lastFiredAt: occurrences.at(-1) ?? job.lastFiredAt,
34
+ lastFiredAt: due.at(-1) ?? job.lastFiredAt,
26
35
  };
27
36
  }
28
37
  //# sourceMappingURL=plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/materializer/plan.ts"],"names":[],"mappings":";;;AAAA,8CAAsC;AAEtC,qDAAyD;AACzD,mDAAwD;AA6BxD,yBACC,GAAiB,EACjB,GAAS,EACT,OAA8E;IAI9E,MAAM,QAAQ,GAAG,IAAA,yBAAe,EAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IAEtF,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,WAAW,GAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAA,0BAAe,EAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACxB,OACC,CAAC,IAAI,CAAC,IAAI;QACV,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS;QACjC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,EACrC,CAAC;QACF,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACN,WAAW;QACX,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;QACxC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW;KAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/materializer/plan.ts"],"names":[],"mappings":";;;AAAA,8CAAsC;AAEtC,qDAAyD;AACzD,mDAAwD;AAExD,uCAA+C;AAsC/C,yBACC,GAAiB,EACjB,GAAS,EACT,OAA8E;IAI9E,MAAM,QAAQ,GAAG,IAAA,yBAAe,EAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IAEtF,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;YACN,WAAW,EAAE,EAAE;YACf,kBAAkB,EAAE,CAAC;YACrB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAA,0BAAe,EAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAGD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC;IAElE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAkB,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAEhF,OAAO;QACN,WAAW;QACX,kBAAkB,EAAE,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;QACnD,SAAS;QACT,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;QAGxC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW;KAC1C,CAAC;AACH,CAAC"}
@@ -11,6 +11,11 @@ export interface NewOccurrence {
11
11
  scheduledFor: Date;
12
12
  runAt: Date;
13
13
  maxAttempts: number;
14
+ missedAfter: Date;
15
+ }
16
+ export interface SupersededOccurrences {
17
+ jobId: number;
18
+ before: Date;
14
19
  }
15
20
  export interface RecordedOccurrence {
16
21
  id: string;
@@ -28,6 +33,7 @@ export interface DueJobs {
28
33
  export interface MaterializerTransaction {
29
34
  claimDueJobs(limit: number, lookaheadMs: number): Promise<DueJobs | undefined>;
30
35
  recordOccurrences(occurrences: NewOccurrence[]): Promise<RecordOccurrencesResult>;
36
+ retireSuperseded(superseded: SupersededOccurrences[]): Promise<number>;
31
37
  advanceJobs(planned: PlannedJob[]): Promise<void>;
32
38
  }
33
39
  export type RunInTransaction = <T>(work: (tx: MaterializerTransaction) => Promise<T>) => Promise<T>;
@@ -2,6 +2,7 @@ import type { ClaimedTask } from '../types';
2
2
  export interface ReapResult {
3
3
  reclaimed: number;
4
4
  deadLettered: number;
5
+ missed: number;
5
6
  }
6
7
  export interface ExpiredLeaseRef {
7
8
  id: string;
@@ -15,6 +16,7 @@ export interface ReaperTaskStore {
15
16
  reclaimExpired(ref: ExpiredLeaseRef, backoffMs: number, errorMessage: string): Promise<number>;
16
17
  deadLetterExpired(ref: ExpiredLeaseRef, errorMessage: string): Promise<number>;
17
18
  completeExpired(ref: ExpiredLeaseRef): Promise<number>;
19
+ retireMissedPending(limit: number): Promise<number>;
18
20
  }
19
21
  export interface ReaperOptions {
20
22
  batchSize: number;
@@ -22,6 +24,7 @@ export interface ReaperOptions {
22
24
  export declare const DEFAULT_REAPER_OPTIONS: ReaperOptions;
23
25
  export interface ReaperHooks {
24
26
  onRowError?: (taskId: string, error: unknown) => void;
27
+ onRetireError?: (error: unknown) => void;
25
28
  onDeadLetter?: (task: {
26
29
  taskId: string;
27
30
  attempts: number;
@@ -7,10 +7,26 @@ const LEASE_EXPIRED_MESSAGE = 'Lease expired before completion';
7
7
  exports.DEFAULT_REAPER_OPTIONS = {
8
8
  batchSize: 100,
9
9
  };
10
+ async function retireStale(store, options, hooks, signal) {
11
+ if (signal?.aborted === true)
12
+ return 0;
13
+ try {
14
+ return await store.retireMissedPending(options.batchSize);
15
+ }
16
+ catch (error) {
17
+ try {
18
+ hooks.onRetireError?.(error);
19
+ }
20
+ catch {
21
+ }
22
+ return 0;
23
+ }
24
+ }
10
25
  async function reap(store, options = exports.DEFAULT_REAPER_OPTIONS, hooks = {}, signal) {
26
+ const missed = await retireStale(store, options, hooks, signal);
11
27
  const expired = await store.findExpiredLeases(options.batchSize);
12
28
  if (expired.length === 0)
13
- return { reclaimed: 0, deadLettered: 0 };
29
+ return { reclaimed: 0, deadLettered: 0, missed };
14
30
  let reclaimed = 0;
15
31
  let deadLettered = 0;
16
32
  for (const task of expired) {
@@ -57,6 +73,6 @@ async function reap(store, options = exports.DEFAULT_REAPER_OPTIONS, hooks = {},
57
73
  }
58
74
  }
59
75
  }
60
- return { reclaimed, deadLettered };
76
+ return { reclaimed, deadLettered, missed };
61
77
  }
62
78
  //# sourceMappingURL=reap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reap.js","sourceRoot":"","sources":["../../../src/core/reaper/reap.ts"],"names":[],"mappings":";;;;AAAA,iDAA8C;AAI9C,MAAM,qBAAqB,GAAG,iCAAiC,CAAC;AAgDnD,QAAA,sBAAsB,GAAkB;IACpD,SAAS,EAAE,GAAG;CACd,CAAC;AA0CK,KAAK,eACX,KAAsB,EACtB,OAAO,GAAkB,QAAA,sBAAsB,EAC/C,KAAK,GAAgB,EAAE,EACvB,MAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAGjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAEnE,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9B,MAAM;QACP,CAAC;QAGD,IAAI,CAAC;YAGJ,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAM3D,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBAIhC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAClD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC;wBAGJ,KAAK,CAAC,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvD,CAAC;oBAAC,MAAM,CAAC;oBAET,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAO7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;gBAC3E,YAAY,IAAI,QAAQ,CAAC;gBACzB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC;wBAGJ,KAAK,CAAC,YAAY,EAAE,CAAC;4BACpB,MAAM,EAAE,IAAI,CAAC,EAAE;4BACf,QAAQ,EAAE,YAAY;4BACtB,WAAW,EAAE,IAAI,CAAC,WAAW;yBAC7B,CAAC,CAAC;oBACJ,CAAC;oBAAC,MAAM,CAAC;oBAET,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,SAAS,IAAI,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,IAAA,iBAAO,EAAC,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC5F,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC;gBAGJ,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"reap.js","sourceRoot":"","sources":["../../../src/core/reaper/reap.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ScheduledJobKind, RecurringCronUnit } from '@n8n/constants';
1
+ import type { ScheduledJobKind, RecurringCronUnit, ScheduledJobMisfirePolicy } from '@n8n/constants';
2
2
  import type { CronExpression } from 'n8n-workflow';
3
3
  export interface CronSchedule {
4
4
  kind: 'cron';
@@ -35,4 +35,6 @@ export interface ScheduledJob {
35
35
  nextRunAt: Date | null;
36
36
  lastFiredAt: Date | null;
37
37
  maxAttempts: number;
38
+ misfirePolicy: ScheduledJobMisfirePolicy;
39
+ misfireGraceSeconds: number;
38
40
  }
@@ -16,6 +16,9 @@ export declare const SCHEDULER_ATTRIBUTES: {
16
16
  readonly claimedJobs: 'n8n.scheduler.claimed_jobs';
17
17
  readonly occurrences: 'n8n.scheduler.occurrences';
18
18
  readonly deferredJobs: 'n8n.scheduler.deferred_jobs';
19
+ readonly skippedOccurrences: 'n8n.scheduler.skipped_occurrences';
20
+ readonly retiredOccurrences: 'n8n.scheduler.retired_occurrences';
21
+ readonly missed: 'n8n.scheduler.missed';
19
22
  readonly retentionDeleted: 'n8n.scheduler.retention_deleted';
20
23
  readonly retentionDrained: 'n8n.scheduler.retention_drained';
21
24
  readonly provisionInserted: 'n8n.scheduler.provision_inserted';
@@ -19,6 +19,9 @@ exports.SCHEDULER_ATTRIBUTES = {
19
19
  claimedJobs: 'n8n.scheduler.claimed_jobs',
20
20
  occurrences: 'n8n.scheduler.occurrences',
21
21
  deferredJobs: 'n8n.scheduler.deferred_jobs',
22
+ skippedOccurrences: 'n8n.scheduler.skipped_occurrences',
23
+ retiredOccurrences: 'n8n.scheduler.retired_occurrences',
24
+ missed: 'n8n.scheduler.missed',
22
25
  retentionDeleted: 'n8n.scheduler.retention_deleted',
23
26
  retentionDrained: 'n8n.scheduler.retention_drained',
24
27
  provisionInserted: 'n8n.scheduler.provision_inserted',
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../src/observability/attributes.ts"],"names":[],"mappings":";;;;AAMa,QAAA,oBAAoB,GAAG;IACnC,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,yBAAyB;IACnC,IAAI,EAAE,oBAAoB;IAC1B,UAAU,EAAE,2BAA2B;IACvC,YAAY,EAAE,6BAA6B;IAC3C,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,wBAAwB;IAClC,WAAW,EAAE,4BAA4B;IACzC,OAAO,EAAE,uBAAuB;IAChC,YAAY,EAAE,6BAA6B;IAC3C,SAAS,EAAE,yBAAyB;IACpC,YAAY,EAAE,6BAA6B;IAC3C,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,2BAA2B;IACxC,YAAY,EAAE,6BAA6B;IAC3C,gBAAgB,EAAE,iCAAiC;IACnD,gBAAgB,EAAE,iCAAiC;IACnD,iBAAiB,EAAE,kCAAkC;IACrD,kBAAkB,EAAE,mCAAmC;IACvD,kBAAkB,EAAE,mCAAmC;IACvD,gBAAgB,EAAE,iCAAiC;IACnD,kBAAkB,EAAE,mCAAmC;IACvD,OAAO,EAAE,wBAAwB;IACjC,SAAS,EAAE,0BAA0B;CAC5B,CAAC;AAOE,QAAA,0BAA0B,GAAG;IAEzC,QAAQ,EAAE,UAAU;IAEpB,SAAS,EAAE,WAAW;IAEtB,OAAO,EAAE,SAAS;CACT,CAAC;AAOE,QAAA,sBAAsB,GAAG;IAErC,SAAS,EAAE,WAAW;IAEtB,WAAW,EAAE,aAAa;IAE1B,YAAY,EAAE,eAAe;IAE7B,gBAAgB,EAAE,oBAAoB;IAEtC,eAAe,EAAE,mBAAmB;CAC3B,CAAC;AAMX,qCAA4C,IAAiB;IAC5D,OAAO;QACN,CAAC,QAAA,oBAAoB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE;QACtC,CAAC,QAAA,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK;QACxC,CAAC,QAAA,oBAAoB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC9C,CAAC,QAAA,oBAAoB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU;QAClD,CAAC,QAAA,oBAAoB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC9C,CAAC,QAAA,oBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW;QACpD,CAAC,QAAA,oBAAoB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACpE,CAAC,QAAA,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;KACtD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../src/observability/attributes.ts"],"names":[],"mappings":";;;;AAMa,QAAA,oBAAoB,GAAG;IACnC,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,yBAAyB;IACnC,IAAI,EAAE,oBAAoB;IAC1B,UAAU,EAAE,2BAA2B;IACvC,YAAY,EAAE,6BAA6B;IAC3C,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,wBAAwB;IAClC,WAAW,EAAE,4BAA4B;IACzC,OAAO,EAAE,uBAAuB;IAChC,YAAY,EAAE,6BAA6B;IAC3C,SAAS,EAAE,yBAAyB;IACpC,YAAY,EAAE,6BAA6B;IAC3C,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,2BAA2B;IACxC,YAAY,EAAE,6BAA6B;IAC3C,kBAAkB,EAAE,mCAAmC;IACvD,kBAAkB,EAAE,mCAAmC;IACvD,MAAM,EAAE,sBAAsB;IAC9B,gBAAgB,EAAE,iCAAiC;IACnD,gBAAgB,EAAE,iCAAiC;IACnD,iBAAiB,EAAE,kCAAkC;IACrD,kBAAkB,EAAE,mCAAmC;IACvD,kBAAkB,EAAE,mCAAmC;IACvD,gBAAgB,EAAE,iCAAiC;IACnD,kBAAkB,EAAE,mCAAmC;IACvD,OAAO,EAAE,wBAAwB;IACjC,SAAS,EAAE,0BAA0B;CAC5B,CAAC;AAOE,QAAA,0BAA0B,GAAG;IAEzC,QAAQ,EAAE,UAAU;IAEpB,SAAS,EAAE,WAAW;IAEtB,OAAO,EAAE,SAAS;CACT,CAAC;AAOE,QAAA,sBAAsB,GAAG;IAErC,SAAS,EAAE,WAAW;IAEtB,WAAW,EAAE,aAAa;IAE1B,YAAY,EAAE,eAAe;IAE7B,gBAAgB,EAAE,oBAAoB;IAEtC,eAAe,EAAE,mBAAmB;CAC3B,CAAC;AAMX,qCAA4C,IAAiB;IAC5D,OAAO;QACN,CAAC,QAAA,oBAAoB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE;QACtC,CAAC,QAAA,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK;QACxC,CAAC,QAAA,oBAAoB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC9C,CAAC,QAAA,oBAAoB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU;QAClD,CAAC,QAAA,oBAAoB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ;QAC9C,CAAC,QAAA,oBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW;QACpD,CAAC,QAAA,oBAAoB,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACpE,CAAC,QAAA,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;KACtD,CAAC;AACH,CAAC"}
@@ -1,10 +1,13 @@
1
+ import type { MisfireCount } from '../core/materializer/materialize';
1
2
  export interface SchedulerMetrics {
2
3
  recordDispatch(taskType: string): void;
3
4
  recordFireOutcome(taskType: string, result: 'success' | 'failure'): void;
4
5
  recordRetry(taskType: string): void;
5
6
  observeDispatchLagSeconds(taskType: string, seconds: number): void;
6
7
  recordMaterialized(occurrences: number, deferredJobs: number): void;
7
- recordReaped(reclaimed: number, deadLettered: number): void;
8
+ recordMisfired(discarded: MisfireCount[]): void;
9
+ recordRetired(retired: number): void;
10
+ recordReaped(reclaimed: number, deadLettered: number, missed: number): void;
8
11
  recordDeadLettered(): void;
9
12
  recordPruned(deleted: number): void;
10
13
  }
@@ -7,6 +7,8 @@ exports.noopMetrics = {
7
7
  recordRetry() { },
8
8
  observeDispatchLagSeconds() { },
9
9
  recordMaterialized() { },
10
+ recordMisfired() { },
11
+ recordRetired() { },
10
12
  recordReaped() { },
11
13
  recordDeadLettered() { },
12
14
  recordPruned() { },
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/observability/metrics.ts"],"names":[],"mappings":";;;AA+Ba,QAAA,WAAW,GAAqB;IAC5C,cAAc,KAAI,CAAC;IACnB,iBAAiB,KAAI,CAAC;IACtB,WAAW,KAAI,CAAC;IAChB,yBAAyB,KAAI,CAAC;IAC9B,kBAAkB,KAAI,CAAC;IACvB,YAAY,KAAI,CAAC;IACjB,kBAAkB,KAAI,CAAC;IACvB,YAAY,KAAI,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/observability/metrics.ts"],"names":[],"mappings":";;;AAqCa,QAAA,WAAW,GAAqB;IAC5C,cAAc,KAAI,CAAC;IACnB,iBAAiB,KAAI,CAAC;IACtB,WAAW,KAAI,CAAC;IAChB,yBAAyB,KAAI,CAAC;IAC9B,kBAAkB,KAAI,CAAC;IACvB,cAAc,KAAI,CAAC;IACnB,aAAa,KAAI,CAAC;IAClB,YAAY,KAAI,CAAC;IACjB,kBAAkB,KAAI,CAAC;IACvB,YAAY,KAAI,CAAC;CACjB,CAAC"}