n8n-core 2.28.2 → 2.29.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.
Files changed (55) hide show
  1. package/dist/binary-data/azure-blob/azure-blob.service.ee.d.ts +11 -2
  2. package/dist/binary-data/azure-blob/azure-blob.service.ee.js +60 -4
  3. package/dist/binary-data/azure-blob/azure-blob.service.ee.js.map +1 -1
  4. package/dist/binary-data/azure-blob.manager.d.ts +23 -0
  5. package/dist/binary-data/azure-blob.manager.js +81 -0
  6. package/dist/binary-data/azure-blob.manager.js.map +1 -0
  7. package/dist/binary-data/binary-data.config.d.ts +3 -3
  8. package/dist/binary-data/binary-data.config.js +1 -1
  9. package/dist/binary-data/binary-data.config.js.map +1 -1
  10. package/dist/binary-data/object-store.manager.js +3 -2
  11. package/dist/binary-data/object-store.manager.js.map +1 -1
  12. package/dist/binary-data/utils.js +1 -1
  13. package/dist/binary-data/utils.js.map +1 -1
  14. package/dist/build.tsbuildinfo +1 -1
  15. package/dist/errors/error-reporter.js +2 -2
  16. package/dist/errors/error-reporter.js.map +1 -1
  17. package/dist/execution-engine/active-workflow-triggers.d.ts +6 -4
  18. package/dist/execution-engine/active-workflow-triggers.js +83 -109
  19. package/dist/execution-engine/active-workflow-triggers.js.map +1 -1
  20. package/dist/execution-engine/index.d.ts +1 -0
  21. package/dist/execution-engine/index.js +3 -1
  22. package/dist/execution-engine/index.js.map +1 -1
  23. package/dist/execution-engine/node-execution-context/base-execute-context.js +19 -1
  24. package/dist/execution-engine/node-execution-context/base-execute-context.js.map +1 -1
  25. package/dist/execution-engine/node-execution-context/utils/binary-helper-functions.js +37 -3
  26. package/dist/execution-engine/node-execution-context/utils/binary-helper-functions.js.map +1 -1
  27. package/dist/execution-engine/node-execution-context/utils/get-additional-keys.js +3 -0
  28. package/dist/execution-engine/node-execution-context/utils/get-additional-keys.js.map +1 -1
  29. package/dist/execution-engine/node-execution-context/utils/request-helpers/oauth.js +85 -47
  30. package/dist/execution-engine/node-execution-context/utils/request-helpers/oauth.js.map +1 -1
  31. package/dist/execution-engine/node-execution-context/utils/scheduling-helper-functions.js +8 -1
  32. package/dist/execution-engine/node-execution-context/utils/scheduling-helper-functions.js.map +1 -1
  33. package/dist/execution-engine/partial-execution-utils/directed-graph.js +4 -4
  34. package/dist/execution-engine/partial-execution-utils/directed-graph.js.map +1 -1
  35. package/dist/execution-engine/poll-trigger-executor.d.ts +12 -0
  36. package/dist/execution-engine/poll-trigger-executor.js +88 -0
  37. package/dist/execution-engine/poll-trigger-executor.js.map +1 -0
  38. package/dist/execution-engine/scheduled-task-manager.d.ts +24 -20
  39. package/dist/execution-engine/scheduled-task-manager.js +111 -73
  40. package/dist/execution-engine/scheduled-task-manager.js.map +1 -1
  41. package/dist/execution-engine/workflow-active-triggers-state.d.ts +12 -3
  42. package/dist/execution-engine/workflow-active-triggers-state.js +42 -10
  43. package/dist/execution-engine/workflow-active-triggers-state.js.map +1 -1
  44. package/dist/execution-engine/workflow-execute.js +9 -4
  45. package/dist/execution-engine/workflow-execute.js.map +1 -1
  46. package/dist/nodes-loader/directory-loader.d.ts +3 -0
  47. package/dist/nodes-loader/directory-loader.js +57 -1
  48. package/dist/nodes-loader/directory-loader.js.map +1 -1
  49. package/dist/observability/tracing/sentry-tracing.d.ts +1 -1
  50. package/dist/observability/tracing/sentry-tracing.js +13 -1
  51. package/dist/observability/tracing/sentry-tracing.js.map +1 -1
  52. package/dist/observability/tracing/span-sampling.d.ts +1 -1
  53. package/dist/observability/tracing/span-sampling.js +2 -0
  54. package/dist/observability/tracing/span-sampling.js.map +1 -1
  55. package/package.json +24 -19
@@ -15,21 +15,21 @@ const config_1 = require("@n8n/config");
15
15
  const constants_1 = require("@n8n/constants");
16
16
  const di_1 = require("@n8n/di");
17
17
  const cron_1 = require("cron");
18
- const errors_1 = require("../errors");
19
18
  const instance_settings_1 = require("../instance-settings");
20
19
  let ScheduledTaskManager = class ScheduledTaskManager {
21
20
  get loggableCrons() {
22
21
  const loggableCrons = {};
23
- for (const [workflowId, crons] of this.cronsByWorkflow) {
24
- loggableCrons[`workflowId-${workflowId}`] = Array.from(crons.values()).map(({ summary }) => summary);
22
+ for (const [groupType, cronsByGroup] of this.cronsByGroupType) {
23
+ for (const [groupId, crons] of cronsByGroup) {
24
+ loggableCrons[`${groupType}GroupId-${groupId}`] = Array.from(crons.values()).map(({ summary }) => summary);
25
+ }
25
26
  }
26
27
  return loggableCrons;
27
28
  }
28
- constructor(instanceSettings, logger, { activeInterval }, errorReporter) {
29
+ constructor(instanceSettings, logger, { activeInterval }) {
29
30
  this.instanceSettings = instanceSettings;
30
31
  this.logger = logger;
31
- this.errorReporter = errorReporter;
32
- this.cronsByWorkflow = new Map();
32
+ this.cronsByGroupType = new Map();
33
33
  this.logger = this.logger.scoped('cron');
34
34
  if (activeInterval === 0)
35
35
  return;
@@ -38,27 +38,38 @@ let ScheduledTaskManager = class ScheduledTaskManager {
38
38
  return;
39
39
  this.logger.debug('Currently active crons', { active: this.loggableCrons });
40
40
  }, activeInterval * constants_1.Time.minutes.toMilliseconds);
41
+ this.logInterval.unref?.();
41
42
  }
42
- registerCron(ctx, onTick) {
43
- const { workflowId, timezone, nodeId, expression, recurrence } = ctx;
43
+ register(ctx, onTick) {
44
+ const { group, targetId, timezone, expression, recurrence } = ctx;
45
+ if (!this.instanceSettings.isLeader) {
46
+ this.logger.debug('Skipped cron registration on follower instance', {
47
+ groupType: group.type,
48
+ groupId: group.id,
49
+ targetId,
50
+ timezone,
51
+ expression,
52
+ recurrence,
53
+ instanceRole: this.instanceSettings.instanceRole,
54
+ });
55
+ return false;
56
+ }
44
57
  const summary = recurrence?.activated
45
58
  ? `${expression} (every ${recurrence.intervalSize} ${recurrence.typeInterval})`
46
59
  : expression;
47
- const workflowCrons = this.cronsByWorkflow.get(workflowId);
48
- const key = this.toCronKey({ workflowId, nodeId, expression, timezone, recurrence });
49
- if (workflowCrons?.has(key)) {
50
- this.errorReporter.error('Skipped registration for already registered cron', {
51
- tags: { cron: 'duplicate' },
52
- extra: {
53
- workflowId,
54
- timezone,
55
- nodeId,
56
- expression,
57
- recurrence,
58
- instanceRole: this.instanceSettings.instanceRole,
59
- },
60
+ const groupCrons = this.getGroupCrons(group);
61
+ const key = this.toCronKey(ctx);
62
+ if (groupCrons?.has(key)) {
63
+ this.logger.warn('Skipped registration for already registered cron', {
64
+ groupType: group.type,
65
+ groupId: group.id,
66
+ targetId,
67
+ timezone,
68
+ expression,
69
+ recurrence,
70
+ instanceRole: this.instanceSettings.instanceRole,
60
71
  });
61
- return;
72
+ return false;
62
73
  }
63
74
  const cronTime = new cron_1.CronTime(expression, timezone);
64
75
  const computeNext = () => cronTime.sendAt().toJSDate();
@@ -68,98 +79,126 @@ let ScheduledTaskManager = class ScheduledTaskManager {
68
79
  return;
69
80
  const firedFor = scheduledTime;
70
81
  scheduledTime = computeNext();
71
- this.logger.debug('Executing cron for workflow', {
72
- workflowId,
73
- nodeId,
82
+ this.logger.debug('Executing cron', {
83
+ groupType: group.type,
84
+ groupId: group.id,
85
+ targetId,
74
86
  cron: summary,
75
87
  instanceRole: this.instanceSettings.instanceRole,
76
88
  });
77
89
  onTick(firedFor);
78
90
  };
79
91
  const job = new cron_1.CronJob(expression, handleTick, undefined, true, timezone);
80
- const cron = { job, summary, ctx };
81
- if (!workflowCrons) {
82
- this.cronsByWorkflow.set(workflowId, new Map([[key, cron]]));
83
- }
84
- else {
85
- workflowCrons.set(key, cron);
86
- }
87
- this.logger.debug('Registered cron for workflow', {
88
- workflowId,
92
+ this.setCron(group, key, { job, summary, ctx });
93
+ this.logger.debug('Registered cron', {
94
+ groupType: group.type,
95
+ groupId: group.id,
96
+ targetId,
89
97
  cron: summary,
90
98
  instanceRole: this.instanceSettings.instanceRole,
91
99
  });
100
+ return true;
92
101
  }
93
- deregisterCrons(workflowId) {
94
- const workflowCrons = this.cronsByWorkflow.get(workflowId);
95
- if (!workflowCrons || workflowCrons.size === 0)
102
+ deregisterGroup(group) {
103
+ const groupCrons = this.getGroupCrons(group);
104
+ if (!groupCrons || groupCrons.size === 0)
96
105
  return false;
97
106
  const summaries = [];
98
- for (const cron of workflowCrons.values()) {
107
+ for (const cron of groupCrons.values()) {
99
108
  summaries.push(cron.summary);
100
109
  void cron.job.stop();
101
110
  }
102
- this.cronsByWorkflow.delete(workflowId);
103
- this.logger.info('Deregistered all crons for workflow', {
104
- workflowId,
111
+ this.deleteGroupCrons(group);
112
+ this.logger.info('Deregistered all crons', {
113
+ groupType: group.type,
114
+ groupId: group.id,
105
115
  crons: summaries,
106
116
  instanceRole: this.instanceSettings.instanceRole,
107
117
  });
108
118
  return true;
109
119
  }
110
- getWorkflowIdsWithCrons() {
111
- return Array.from(this.cronsByWorkflow.keys());
120
+ getGroupIds(groupType) {
121
+ return Array.from(this.cronsByGroupType.get(groupType)?.keys() ?? []);
112
122
  }
113
- getCronNodeIds(workflowId) {
114
- const workflowCrons = this.cronsByWorkflow.get(workflowId);
115
- if (!workflowCrons)
123
+ getTargetIds(group) {
124
+ const groupCrons = this.getGroupCrons(group);
125
+ if (!groupCrons)
116
126
  return [];
117
- const nodeIds = new Set();
118
- for (const cron of workflowCrons.values()) {
119
- nodeIds.add(cron.ctx.nodeId);
127
+ const targetIds = new Set();
128
+ for (const cron of groupCrons.values()) {
129
+ targetIds.add(cron.ctx.targetId);
120
130
  }
121
- return Array.from(nodeIds);
131
+ return Array.from(targetIds);
122
132
  }
123
- deregisterCron(workflowId, nodeId) {
124
- const workflowCrons = this.cronsByWorkflow.get(workflowId);
125
- if (!workflowCrons || workflowCrons.size === 0)
133
+ deregisterTarget(group, targetId) {
134
+ const groupCrons = this.getGroupCrons(group);
135
+ if (!groupCrons || groupCrons.size === 0)
126
136
  return;
127
137
  const summaries = [];
128
- for (const [key, cron] of workflowCrons) {
129
- if (cron.ctx.nodeId !== nodeId)
138
+ for (const [key, cron] of groupCrons) {
139
+ if (cron.ctx.targetId !== targetId)
130
140
  continue;
131
141
  summaries.push(cron.summary);
132
142
  void cron.job.stop();
133
- workflowCrons.delete(key);
143
+ groupCrons.delete(key);
134
144
  }
135
- if (workflowCrons.size === 0)
136
- this.cronsByWorkflow.delete(workflowId);
145
+ if (groupCrons.size === 0)
146
+ this.deleteGroupCrons(group);
137
147
  if (summaries.length === 0)
138
148
  return;
139
- this.logger.info('Deregistered crons for node', {
140
- workflowId,
141
- nodeId,
149
+ this.logger.info('Deregistered crons', {
150
+ groupType: group.type,
151
+ groupId: group.id,
152
+ targetId,
142
153
  crons: summaries,
143
154
  instanceRole: this.instanceSettings.instanceRole,
144
155
  });
145
156
  }
146
- hasCrons(workflowId) {
147
- const workflowCrons = this.cronsByWorkflow.get(workflowId);
148
- return workflowCrons !== undefined && workflowCrons.size > 0;
157
+ hasGroup(group) {
158
+ const groupCrons = this.getGroupCrons(group);
159
+ return groupCrons !== undefined && groupCrons.size > 0;
160
+ }
161
+ hasTarget(group, targetId) {
162
+ return this.getTargetIds(group).includes(targetId);
163
+ }
164
+ deregisterGroups(groupType) {
165
+ for (const groupId of this.getGroupIds(groupType)) {
166
+ this.deregisterGroup({ type: groupType, id: groupId });
167
+ }
168
+ }
169
+ getGroupCrons(group) {
170
+ return this.cronsByGroupType.get(group.type)?.get(group.id);
149
171
  }
150
- deregisterAllCrons() {
151
- for (const workflowId of this.cronsByWorkflow.keys()) {
152
- this.deregisterCrons(workflowId);
172
+ deleteGroupCrons(group) {
173
+ const cronsByGroup = this.cronsByGroupType.get(group.type);
174
+ if (!cronsByGroup)
175
+ return;
176
+ cronsByGroup.delete(group.id);
177
+ if (cronsByGroup.size === 0)
178
+ this.cronsByGroupType.delete(group.type);
179
+ }
180
+ setCron(group, key, cron) {
181
+ let cronsByGroup = this.cronsByGroupType.get(group.type);
182
+ if (!cronsByGroup) {
183
+ cronsByGroup = new Map();
184
+ this.cronsByGroupType.set(group.type, cronsByGroup);
185
+ }
186
+ const groupCrons = cronsByGroup.get(group.id);
187
+ if (!groupCrons) {
188
+ cronsByGroup.set(group.id, new Map([[key, cron]]));
189
+ }
190
+ else {
191
+ groupCrons.set(key, cron);
153
192
  }
154
- clearInterval(this.logInterval);
155
- this.logInterval = undefined;
156
193
  }
157
194
  toCronKey(ctx) {
158
- const { recurrence, ...rest } = ctx;
195
+ const { recurrence, group, ...rest } = ctx;
159
196
  const flattened = !recurrence
160
- ? rest
197
+ ? { ...rest, groupType: group.type, groupId: group.id }
161
198
  : {
162
199
  ...rest,
200
+ groupType: group.type,
201
+ groupId: group.id,
163
202
  recurrenceActivated: recurrence.activated,
164
203
  ...(recurrence.activated && {
165
204
  recurrenceIndex: recurrence.index,
@@ -181,7 +220,6 @@ exports.ScheduledTaskManager = ScheduledTaskManager = __decorate([
181
220
  (0, di_1.Service)(),
182
221
  __metadata("design:paramtypes", [instance_settings_1.InstanceSettings,
183
222
  backend_common_1.Logger,
184
- config_1.CronLoggingConfig,
185
- errors_1.ErrorReporter])
223
+ config_1.CronLoggingConfig])
186
224
  ], ScheduledTaskManager);
187
225
  //# sourceMappingURL=scheduled-task-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduled-task-manager.js","sourceRoot":"","sources":["../../src/execution-engine/scheduled-task-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wDAA6C;AAC7C,wCAAgD;AAChD,8CAAsC;AACtC,gCAAkC;AAClC,+BAAyC;AAGzC,qCAAyC;AACzC,2DAAuD;AAOhD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAMhC,IAAY,aAAa;QACxB,MAAM,aAAa,GAA6B,EAAE,CAAC;QAEnD,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,aAAa,CAAC,cAAc,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CACzE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CACxB,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,YACkB,gBAAkC,EAClC,MAAc,EAC/B,EAAE,cAAc,EAAqB,EACpB,aAA4B;QAH5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,WAAM,GAAN,MAAM,CAAQ;QAEd,kBAAa,GAAb,aAAa,CAAe;QArBrC,oBAAe,GAAoB,IAAI,GAAG,EAAE,CAAC;QAuBrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,cAAc,KAAK,CAAC;YAAE,OAAO;QAEjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7E,CAAC,EAAE,cAAc,GAAG,gBAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAKD,YAAY,CAAC,GAAgB,EAAE,MAAqC;QACnE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAErE,MAAM,OAAO,GAAG,UAAU,EAAE,SAAS;YACpC,CAAC,CAAC,GAAG,UAAU,WAAW,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,GAAG;YAC/E,CAAC,CAAC,UAAU,CAAC;QAEd,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAErF,IAAI,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,kDAAkD,EAAE;gBAC5E,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC3B,KAAK,EAAE;oBACN,UAAU;oBACV,QAAQ;oBACR,MAAM;oBACN,UAAU;oBACV,UAAU;oBACV,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;iBAChD;aACD,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QAKD,MAAM,QAAQ,GAAG,IAAI,eAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7D,IAAI,aAAa,GAAS,WAAW,EAAE,CAAC;QAExC,MAAM,UAAU,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ;gBAAE,OAAO;YAI5C,MAAM,QAAQ,GAAG,aAAa,CAAC;YAC/B,aAAa,GAAG,WAAW,EAAE,CAAC;YAE9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;gBAChD,UAAU;gBACV,MAAM;gBACN,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;aAChD,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,GAAG,GAAY,IAAI,cAAO,CAC/B,UAAU,EACV,UAAU,EACQ,SAAS,EACd,IAAI,EACjB,QAAQ,CACR,CAAC;QAEF,MAAM,IAAI,GAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAEzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACP,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YACjD,UAAU;YACV,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;SAChD,CAAC,CAAC;IACJ,CAAC;IAGD,eAAe,CAAC,UAAkB;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3D,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7D,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;YACvD,UAAU;YACV,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;SAChD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACb,CAAC;IAGD,uBAAuB;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAGD,cAAc,CAAC,UAAkB;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC;QAE9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAGD,cAAc,CAAC,UAAkB,EAAE,MAAc;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3D,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAEvD,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS;YACzC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;YAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;YAC/C,UAAU;YACV,MAAM;YACN,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY;SAChD,CAAC,CAAC;IACJ,CAAC;IAGD,QAAQ,CAAC,UAAkB;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3D,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,kBAAkB;QACjB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEO,SAAS,CAAC,GAAgB;QACjC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QACpC,MAAM,SAAS,GAA4B,CAAC,UAAU;YACrD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACA,GAAG,IAAI;gBACP,mBAAmB,EAAE,UAAU,CAAC,SAAS;gBACzC,GAAG,CAAC,UAAU,CAAC,SAAS,IAAI;oBAC3B,eAAe,EAAE,UAAU,CAAC,KAAK;oBACjC,sBAAsB,EAAE,UAAU,CAAC,YAAY;oBAC/C,sBAAsB,EAAE,UAAU,CAAC,YAAY;iBAC/C,CAAC;aACF,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;aACnC,IAAI,EAAE;aACN,MAAM,CAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CAAC;QAER,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACD,CAAA;AAzNY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,YAAO,GAAE;qCAoB2B,oCAAgB;QAC1B,uBAAM;QACX,0BAAiB;QACL,sBAAa;GAtBlC,oBAAoB,CAyNhC"}
1
+ {"version":3,"file":"scheduled-task-manager.js","sourceRoot":"","sources":["../../src/execution-engine/scheduled-task-manager.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,20 @@
1
1
  import type { ITriggerResponse } from 'n8n-workflow';
2
+ export type TriggerRegistrationToken = symbol;
2
3
  export declare class WorkflowActiveTriggersState {
3
- private readonly triggersByNodeId;
4
- add(nodeId: string, response: ITriggerResponse): void;
4
+ private readonly registrationsByNodeId;
5
+ private pendingRegistrations;
6
+ beginRegistration(): void;
7
+ finishRegistration(): void;
8
+ get hasPendingRegistrations(): boolean;
9
+ addTriggerResponse(nodeId: string, response: ITriggerResponse): TriggerRegistrationToken;
10
+ addScheduledTrigger(nodeId: string): TriggerRegistrationToken;
11
+ addPoller(nodeId: string): TriggerRegistrationToken;
12
+ private getOrCreateRegistration;
5
13
  get(nodeId: string): ITriggerResponse | undefined;
6
14
  has(nodeId: string): boolean;
15
+ isCurrent(nodeId: string, token: TriggerRegistrationToken): boolean;
7
16
  delete(nodeId: string): void;
8
17
  get isEmpty(): boolean;
9
18
  get nodeIds(): IterableIterator<string>;
10
- get triggerResponses(): IterableIterator<ITriggerResponse>;
19
+ triggerResponses(): IterableIterator<ITriggerResponse>;
11
20
  }
@@ -3,28 +3,60 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkflowActiveTriggersState = void 0;
4
4
  class WorkflowActiveTriggersState {
5
5
  constructor() {
6
- this.triggersByNodeId = new Map();
6
+ this.registrationsByNodeId = new Map();
7
+ this.pendingRegistrations = 0;
7
8
  }
8
- add(nodeId, response) {
9
- this.triggersByNodeId.set(nodeId, response);
9
+ beginRegistration() {
10
+ this.pendingRegistrations += 1;
11
+ }
12
+ finishRegistration() {
13
+ this.pendingRegistrations -= 1;
14
+ }
15
+ get hasPendingRegistrations() {
16
+ return this.pendingRegistrations > 0;
17
+ }
18
+ addTriggerResponse(nodeId, response) {
19
+ const registration = this.getOrCreateRegistration(nodeId);
20
+ registration.response = response;
21
+ return registration.token;
22
+ }
23
+ addScheduledTrigger(nodeId) {
24
+ return this.getOrCreateRegistration(nodeId).token;
25
+ }
26
+ addPoller(nodeId) {
27
+ return this.getOrCreateRegistration(nodeId).token;
28
+ }
29
+ getOrCreateRegistration(nodeId) {
30
+ const existing = this.registrationsByNodeId.get(nodeId);
31
+ if (existing)
32
+ return existing;
33
+ const registration = { token: Symbol(nodeId) };
34
+ this.registrationsByNodeId.set(nodeId, registration);
35
+ return registration;
10
36
  }
11
37
  get(nodeId) {
12
- return this.triggersByNodeId.get(nodeId);
38
+ return this.registrationsByNodeId.get(nodeId)?.response;
13
39
  }
14
40
  has(nodeId) {
15
- return this.triggersByNodeId.has(nodeId);
41
+ return this.registrationsByNodeId.has(nodeId);
42
+ }
43
+ isCurrent(nodeId, token) {
44
+ return this.registrationsByNodeId.get(nodeId)?.token === token;
16
45
  }
17
46
  delete(nodeId) {
18
- this.triggersByNodeId.delete(nodeId);
47
+ this.registrationsByNodeId.delete(nodeId);
19
48
  }
20
49
  get isEmpty() {
21
- return this.triggersByNodeId.size === 0;
50
+ return this.registrationsByNodeId.size === 0;
22
51
  }
23
52
  get nodeIds() {
24
- return this.triggersByNodeId.keys();
53
+ return this.registrationsByNodeId.keys();
25
54
  }
26
- get triggerResponses() {
27
- return this.triggersByNodeId.values();
55
+ *triggerResponses() {
56
+ for (const registration of this.registrationsByNodeId.values()) {
57
+ if (registration.response)
58
+ yield registration.response;
59
+ }
28
60
  }
29
61
  }
30
62
  exports.WorkflowActiveTriggersState = WorkflowActiveTriggersState;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-active-triggers-state.js","sourceRoot":"","sources":["../../src/execution-engine/workflow-active-triggers-state.ts"],"names":[],"mappings":";;;AAMA,MAAa,2BAA2B;IAAxC;QACkB,qBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAoCzE,CAAC;IAjCA,GAAG,CAAC,MAAc,EAAE,QAA0B;QAC7C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAGD,GAAG,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAGD,GAAG,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAGD,MAAM,CAAC,MAAc;QACpB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,CAAC;IACzC,CAAC;IAGD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAGD,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;CACD;AArCD,kEAqCC"}
1
+ {"version":3,"file":"workflow-active-triggers-state.js","sourceRoot":"","sources":["../../src/execution-engine/workflow-active-triggers-state.ts"],"names":[],"mappings":";;;AAaA,MAAa,2BAA2B;IAAxC;QACkB,0BAAqB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAExE,yBAAoB,GAAG,CAAC,CAAC;IAiFlC,CAAC;IA9EA,iBAAiB;QAChB,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAChC,CAAC;IAGD,kBAAkB;QACjB,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAChC,CAAC;IAGD,IAAI,uBAAuB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;IACtC,CAAC;IAGD,kBAAkB,CAAC,MAAc,EAAE,QAA0B;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC1D,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEjC,OAAO,YAAY,CAAC,KAAK,CAAC;IAC3B,CAAC;IAGD,mBAAmB,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;IACnD,CAAC;IAGD,SAAS,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;IACnD,CAAC;IAEO,uBAAuB,CAAC,MAAc;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,YAAY,GAAwB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAErD,OAAO,YAAY,CAAC;IACrB,CAAC;IAGD,GAAG,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IACzD,CAAC;IAGD,GAAG,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAGD,SAAS,CAAC,MAAc,EAAE,KAA+B;QACxD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;IAChE,CAAC;IAGD,MAAM,CAAC,MAAc;QACpB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAGD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,CAAC;IAC9C,CAAC;IAGD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAGD,CAAC,gBAAgB;QAChB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC;YAChE,IAAI,YAAY,CAAC,QAAQ;gBAAE,MAAM,YAAY,CAAC,QAAQ,CAAC;QACxD,CAAC;IACF,CAAC;CACD;AApFD,kEAoFC"}
@@ -139,17 +139,22 @@ class WorkflowExecute {
139
139
  let startNode;
140
140
  const parentNodes = workflow.getParentNodes(destinationNode.nodeName);
141
141
  for (const nodeName of parentNodes) {
142
- if (runData[nodeName]) {
143
- startNode = workflow.getNode(nodeName);
142
+ const parentNode = workflow.getNode(nodeName);
143
+ if (parentNode && !parentNode.disabled && runData[nodeName]) {
144
+ startNode = parentNode;
144
145
  break;
145
146
  }
146
147
  }
147
148
  if (!startNode) {
148
- throw new n8n_workflow_1.UserError('Connect a trigger to run this node');
149
+ throw new n8n_workflow_1.UserError("Connect a trigger and make sure it's enabled to run this node");
149
150
  }
150
151
  trigger = startNode;
151
152
  }
152
- graph = (0, partial_execution_utils_1.findSubgraph)({ graph: (0, partial_execution_utils_1.filterDisabledNodes)(graph), destination, trigger });
153
+ const filteredGraph = (0, partial_execution_utils_1.filterDisabledNodes)(graph);
154
+ if (destination.disabled) {
155
+ throw new n8n_workflow_1.UserError('Cannot execute a disabled node');
156
+ }
157
+ graph = (0, partial_execution_utils_1.findSubgraph)({ graph: filteredGraph, destination, trigger });
153
158
  const filteredNodes = graph.getNodes();
154
159
  const dirtyNodes = graph.getNodesByNames(dirtyNodeNames);
155
160
  runData = (0, partial_execution_utils_1.cleanRunData)(runData, graph, dirtyNodes);