mongodash 2.1.1 → 2.1.2
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.
- package/README.md +0 -1
- package/dist/lib/src/createContinuousLock.js +2 -0
- package/dist/lib/src/createContinuousLock.js.map +1 -1
- package/dist/lib/src/reactiveTasks/MetricsCollector.js.map +1 -1
- package/dist/lib/src/task-management/serveDashboard.js +0 -1
- package/dist/lib/src/task-management/serveDashboard.js.map +1 -1
- package/docs/.vitepress/cache/deps/_metadata.json +6 -6
- package/docs/.vitepress/config.mts +18 -1
- package/docs/getting-started.md +10 -10
- package/docs/index.md +1 -1
- package/docs/initialization.md +1 -1
- package/docs/public/logo-backgroundless.png +0 -0
- package/docs/reactive-tasks/configuration.md +89 -0
- package/docs/reactive-tasks/core-concepts.md +56 -0
- package/docs/reactive-tasks/evolution.md +62 -0
- package/docs/reactive-tasks/examples.md +66 -0
- package/docs/reactive-tasks/getting-started.md +54 -0
- package/docs/reactive-tasks/guides.md +237 -0
- package/docs/reactive-tasks/index.md +44 -0
- package/docs/reactive-tasks/management.md +86 -0
- package/docs/reactive-tasks/monitoring.md +76 -0
- package/docs/reactive-tasks/policy-cleanup.md +70 -0
- package/docs/reactive-tasks/policy-retry.md +60 -0
- package/docs/reactive-tasks/reconciliation.md +40 -0
- package/package.json +7 -10
- package/docs/reactive-tasks.md +0 -913
package/README.md
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
A modern JavaScript & Typescript MongoDB-based utility library. Includes [**Reactive Tasks**](https://vaclavobornik.github.io/mongodash/reactive-tasks), [**Cron Tasks**](https://vaclavobornik.github.io/mongodash/cron-tasks), [**Distributed Locks**](https://vaclavobornik.github.io/mongodash/with-lock), [**Transactions**](https://vaclavobornik.github.io/mongodash/with-transaction), and a [**Dashboard**](https://vaclavobornik.github.io/mongodash/dashboard).
|
|
6
6
|
|
|
7
7
|
[](https://coveralls.io/github/VaclavObornik/mongodash?branch=master)
|
|
8
|
-
[](https://dashboard.stryker-mutator.io/reports/github.com/VaclavObornik/mongodash/master)
|
|
9
8
|

|
|
10
9
|
|
|
11
10
|
|
|
@@ -11,6 +11,8 @@ function createContinuousLock(collection, documentId, lockProperty, lockTime, on
|
|
|
11
11
|
lastProlongPromise = (async () => {
|
|
12
12
|
try {
|
|
13
13
|
// debug('performing lock prolong');
|
|
14
|
+
if (!taskInProgress)
|
|
15
|
+
return;
|
|
14
16
|
await collection.updateOne({ _id: documentId }, {
|
|
15
17
|
$set: { [lockProperty]: new Date(Date.now() + lockTime) },
|
|
16
18
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createContinuousLock.js","sourceRoot":"","sources":["../../../src/createContinuousLock.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"createContinuousLock.js","sourceRoot":"","sources":["../../../src/createContinuousLock.ts"],"names":[],"mappings":";;AAKA,oDA+CC;AA/CD,SAAgB,oBAAoB,CAChC,UAAoC,EACpC,UAAkB,EAClB,YAAgC,EAChC,QAAgB,EAChB,OAAgB;IAEhB,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,IAAI,oBAAoB,GAAyC,IAAI,CAAC;IACtE,IAAI,kBAAkB,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,mCAAmC;IAEjG,SAAS,mBAAmB;QACxB,oBAAoB,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,oBAAoB,GAAG,IAAI,CAAC;YAC5B,kBAAkB,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC7B,IAAI,CAAC;oBACD,oCAAoC;oBACpC,IAAI,CAAC,cAAc;wBAAE,OAAO;oBAC5B,MAAM,UAAU,CAAC,SAAS,CACtB,EAAE,GAAG,EAAE,UAAU,EAA0B,EAC3C;wBACI,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE;qBAC9B,CAClC,CAAC;gBACN,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,2CAA2C;oBAC3C,OAAO,CAAC,GAAY,CAAC,CAAC;gBAC1B,CAAC;wBAAS,CAAC;oBACP,IAAI,cAAc,EAAE,CAAC;wBACjB,yCAAyC;wBACzC,mBAAmB,EAAE,CAAC;oBAC1B,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,mBAAmB,EAAE,CAAC;IAEtB,0BAA0B;IAC1B,OAAO,KAAK,IAAI,EAAE;QACd,cAAc,GAAG,KAAK,CAAC,CAAC,0BAA0B;QAClD,IAAI,oBAAoB,EAAE,CAAC;YACvB,YAAY,CAAC,oBAAoB,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,kBAAkB,CAAC;IAC7B,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsCollector.js","sourceRoot":"","sources":["../../../../src/reactiveTasks/MetricsCollector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MetricsCollector.js","sourceRoot":"","sources":["../../../../src/reactiveTasks/MetricsCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ const path = require("path");
|
|
|
6
6
|
const url_1 = require("url");
|
|
7
7
|
const index_1 = require("../reactiveTasks/index");
|
|
8
8
|
const OperationalTaskController_1 = require("./OperationalTaskController");
|
|
9
|
-
console.log('[serveDashboard.ts] Module loaded');
|
|
10
9
|
const mimeTypes = {
|
|
11
10
|
'.html': 'text/html',
|
|
12
11
|
'.js': 'text/javascript',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serveDashboard.js","sourceRoot":"","sources":["../../../../src/task-management/serveDashboard.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"serveDashboard.js","sourceRoot":"","sources":["../../../../src/task-management/serveDashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"hash": "
|
|
2
|
+
"hash": "c467da12",
|
|
3
3
|
"configHash": "1734f516",
|
|
4
|
-
"lockfileHash": "
|
|
5
|
-
"browserHash": "
|
|
4
|
+
"lockfileHash": "f98f585a",
|
|
5
|
+
"browserHash": "10463ff1",
|
|
6
6
|
"optimized": {
|
|
7
7
|
"vue": {
|
|
8
8
|
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
|
9
9
|
"file": "vue.js",
|
|
10
|
-
"fileHash": "
|
|
10
|
+
"fileHash": "de0034a7",
|
|
11
11
|
"needsInterop": false
|
|
12
12
|
},
|
|
13
13
|
"vitepress > @vue/devtools-api": {
|
|
14
14
|
"src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
|
|
15
15
|
"file": "vitepress___@vue_devtools-api.js",
|
|
16
|
-
"fileHash": "
|
|
16
|
+
"fileHash": "d9769aa4",
|
|
17
17
|
"needsInterop": false
|
|
18
18
|
},
|
|
19
19
|
"vitepress > @vueuse/core": {
|
|
20
20
|
"src": "../../../../node_modules/@vueuse/core/index.mjs",
|
|
21
21
|
"file": "vitepress___@vueuse_core.js",
|
|
22
|
-
"fileHash": "
|
|
22
|
+
"fileHash": "0b22d1b5",
|
|
23
23
|
"needsInterop": false
|
|
24
24
|
}
|
|
25
25
|
},
|
|
@@ -25,7 +25,24 @@ export default defineConfig({
|
|
|
25
25
|
{
|
|
26
26
|
text: 'Core Features',
|
|
27
27
|
items: [
|
|
28
|
-
{
|
|
28
|
+
{
|
|
29
|
+
text: 'Reactive Tasks',
|
|
30
|
+
collapsed: false,
|
|
31
|
+
items: [
|
|
32
|
+
{ text: 'Overview', link: '/reactive-tasks/' },
|
|
33
|
+
{ text: 'Getting Started', link: '/reactive-tasks/getting-started' },
|
|
34
|
+
{ text: 'Examples', link: '/reactive-tasks/examples' },
|
|
35
|
+
{ text: 'Guides', link: '/reactive-tasks/guides' },
|
|
36
|
+
{ text: 'Configuration', link: '/reactive-tasks/configuration' },
|
|
37
|
+
{ text: 'Retry Policy', link: '/reactive-tasks/policy-retry' },
|
|
38
|
+
{ text: 'Cleanup Policy', link: '/reactive-tasks/policy-cleanup' },
|
|
39
|
+
{ text: 'Filter & Logic Evolution', link: '/reactive-tasks/evolution' },
|
|
40
|
+
{ text: 'Reconciliation', link: '/reactive-tasks/reconciliation' },
|
|
41
|
+
{ text: 'Task Management & DLQ', link: '/reactive-tasks/management' },
|
|
42
|
+
{ text: 'Monitoring', link: '/reactive-tasks/monitoring' },
|
|
43
|
+
{ text: 'Core Concepts', link: '/reactive-tasks/core-concepts' },
|
|
44
|
+
]
|
|
45
|
+
},
|
|
29
46
|
{ text: 'Cron Tasks', link: '/cron-tasks' },
|
|
30
47
|
{ text: 'Dashboard', link: '/dashboard' },
|
|
31
48
|
{ text: 'Concurrency Control', link: '/with-lock' },
|
package/docs/getting-started.md
CHANGED
|
@@ -25,7 +25,7 @@ await mongodash.init({
|
|
|
25
25
|
uri: 'mongodb://mongodb0.example.com:27017/myDatabase'
|
|
26
26
|
});
|
|
27
27
|
```
|
|
28
|
-
See more initialization options [here](
|
|
28
|
+
See more initialization options [here](./initialization.md).
|
|
29
29
|
|
|
30
30
|
<br>
|
|
31
31
|
|
|
@@ -43,7 +43,7 @@ await reactiveTask({
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
```
|
|
46
|
-
See detailed description [here](
|
|
46
|
+
See detailed description [here](./reactive-tasks/index.md).
|
|
47
47
|
|
|
48
48
|
<br>
|
|
49
49
|
|
|
@@ -57,7 +57,7 @@ await cronTask('my-task-id', '5m 20s', async () => {
|
|
|
57
57
|
|
|
58
58
|
});
|
|
59
59
|
```
|
|
60
|
-
See detailed description and more cron tasks methods [here](
|
|
60
|
+
See detailed description and more cron tasks methods [here](./cron-tasks.md).
|
|
61
61
|
|
|
62
62
|
<br>
|
|
63
63
|
|
|
@@ -76,7 +76,7 @@ await withLock('my-lock-id', async () => {
|
|
|
76
76
|
|
|
77
77
|
});
|
|
78
78
|
```
|
|
79
|
-
See detailed description [here](
|
|
79
|
+
See detailed description [here](./with-lock.md).
|
|
80
80
|
|
|
81
81
|
<br>
|
|
82
82
|
|
|
@@ -96,7 +96,7 @@ const createdDocuments = await withTransaction(async (session) => {
|
|
|
96
96
|
return [myDocument1, myDocument2];
|
|
97
97
|
});
|
|
98
98
|
```
|
|
99
|
-
See detailed description [here](
|
|
99
|
+
See detailed description [here](./with-transaction.md).
|
|
100
100
|
|
|
101
101
|
<br>
|
|
102
102
|
|
|
@@ -106,7 +106,7 @@ import { getCollection } from 'mongodash';
|
|
|
106
106
|
|
|
107
107
|
const myCollection = getCollection('myCollectionName');
|
|
108
108
|
```
|
|
109
|
-
See detailed description [here](
|
|
109
|
+
See detailed description [here](./getters.md).
|
|
110
110
|
|
|
111
111
|
<br>
|
|
112
112
|
|
|
@@ -116,7 +116,7 @@ import { getMongoClient } from 'mongodash';
|
|
|
116
116
|
|
|
117
117
|
const mongoClient = getMongoClient();
|
|
118
118
|
```
|
|
119
|
-
See detailed description [here](
|
|
119
|
+
See detailed description [here](./getters.md).
|
|
120
120
|
|
|
121
121
|
<br>
|
|
122
122
|
|
|
@@ -143,13 +143,13 @@ await processInBatches(
|
|
|
143
143
|
}
|
|
144
144
|
);
|
|
145
145
|
```
|
|
146
|
-
See detailed description [here](
|
|
146
|
+
See detailed description [here](./process-in-batches.md).
|
|
147
147
|
|
|
148
148
|
<br>
|
|
149
149
|
|
|
150
150
|
## Dashboard
|
|
151
151
|
|
|
152
|
-

|
|
153
153
|
|
|
154
154
|
```typescript
|
|
155
155
|
import * as express from 'express';
|
|
@@ -168,7 +168,7 @@ app.use('/dashboard', async (req, res, next) => {
|
|
|
168
168
|
app.listen(3000);
|
|
169
169
|
```
|
|
170
170
|
|
|
171
|
-
See detailed description [here](
|
|
171
|
+
See detailed description [here](./dashboard.md).
|
|
172
172
|
|
|
173
173
|
<br>
|
|
174
174
|
|
package/docs/index.md
CHANGED
|
@@ -4,7 +4,7 @@ layout: home
|
|
|
4
4
|
hero:
|
|
5
5
|
name: "Mongodash"
|
|
6
6
|
text: "Modern MongoDB Utility Library"
|
|
7
|
-
tagline: "Cron, Locks, Transactions, and more made simple."
|
|
7
|
+
tagline: "Cron, Locks, Transactions, Reactive tasks and more made simple."
|
|
8
8
|
image:
|
|
9
9
|
src: /logo-backgroundless.png
|
|
10
10
|
alt: Mongodash Logo
|
package/docs/initialization.md
CHANGED
|
@@ -50,7 +50,7 @@ See [Cron Tasks](./cron-tasks.md#initialization-options-optional) for feature-sp
|
|
|
50
50
|
|
|
51
51
|
#### Reactive Tasks Options
|
|
52
52
|
|
|
53
|
-
See [Reactive Tasks](./reactive-tasks.md#
|
|
53
|
+
See [Reactive Tasks](./reactive-tasks/configuration.md#advanced-initialization) for feature-specific options (e.g. `concurrency`, `monitoring`, etc).
|
|
54
54
|
|
|
55
55
|
#### Testing Options
|
|
56
56
|
|
|
Binary file
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Configuration & API
|
|
2
|
+
|
|
3
|
+
## Task Options
|
|
4
|
+
|
|
5
|
+
When defining a task via `reactiveTask`,
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
await reactiveTask({
|
|
9
|
+
task: 'process-order',
|
|
10
|
+
collection: 'orders',
|
|
11
|
+
// ...
|
|
12
|
+
});
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
you can use the following options:
|
|
16
|
+
|
|
17
|
+
| Option | Type | Description |
|
|
18
|
+
| :--- | :--- | :--- |
|
|
19
|
+
| `task` | `string` | **Required**. Primary Unique Identifier. <br/> **⚠️ Do NOT change** after deployment, otherwise all existing tasks will be re-executed as new tasks (Double Execution risk). |
|
|
20
|
+
| `collection` | `string` | **Required**. Name of the MongoDB collection to watch. |
|
|
21
|
+
| `handler` | `(context) => Promise<void>` | **Required**. Async function to process the task. Use `context.getDocument()` to get the document. |
|
|
22
|
+
| `filter` | `Document` | Standard Query (e.g., `{ status: 'pending' }`) OR Aggregation Expression (e.g., `{ $eq: ['$status', 'pending'] }`). Aggregation syntax unlocks powerful features like using `$$NOW` for time-based filtering. |
|
|
23
|
+
| `watchProjection` | `Document` | MongoDB Projection. Task only re-triggers if the projected result changes. Supports inclusion `{ a: 1 }` and computed fields. |
|
|
24
|
+
| `debounce` | `number \| string` | Debounce window (ms or duration string). Default: `1000`. Useful to group rapid updates. |
|
|
25
|
+
| `retryPolicy` | `RetryPolicy` | Configuration for retries on failure. See [Retry Policy](./policy-retry.md). |
|
|
26
|
+
| `cleanupPolicy` | `CleanupPolicy` | Configuration for automatic cleanup of orphaned task records. See [Cleanup Policy](./policy-cleanup.md). |
|
|
27
|
+
| `executionHistoryLimit` | `number` | Number of past execution entries to keep in `_tasks` doc. Default: `5`. |
|
|
28
|
+
| `evolution` | `EvolutionConfig` | Configuration for handling task logic updates (versioning, reconciliation policies). See [Filter & Logic Evolution](./evolution.md). |
|
|
29
|
+
|
|
30
|
+
## Advanced Initialization
|
|
31
|
+
|
|
32
|
+
You can customize the scheduler behavior via `mongodash.init`:
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
await mongodash.init({
|
|
36
|
+
uri: '...',
|
|
37
|
+
|
|
38
|
+
// Instance ID: Unique identifier for this scheduler instance.
|
|
39
|
+
// Used for leader election, metrics aggregation, and debugging.
|
|
40
|
+
// If not provided, a random ObjectId hex string will be generated.
|
|
41
|
+
instanceId: 'my-app-worker-1',
|
|
42
|
+
|
|
43
|
+
// Concurrency: Number of parallel workers on the *current instance* (default: 5)
|
|
44
|
+
// Total system concurrency = (reactiveTaskConcurrency * number of instances)
|
|
45
|
+
reactiveTaskConcurrency: 10,
|
|
46
|
+
|
|
47
|
+
// Globals Collection: Used for coordination and leadership (default: '_mongodash_globals')
|
|
48
|
+
globalsCollection: 'my_custom_globals',
|
|
49
|
+
|
|
50
|
+
// Filter: Run ONLY specific tasks on this instance (e.g. for scaling or time-based windows).
|
|
51
|
+
// This function is called regularly (every poll cycle) for every pending task.
|
|
52
|
+
// Example: Time-Based Filtering (e.g. only run 'nightly-job' during night hours)
|
|
53
|
+
reactiveTaskFilter: ({ task }) => {
|
|
54
|
+
if (task === 'nightly-job') {
|
|
55
|
+
const hour = new Date().getHours();
|
|
56
|
+
return hour >= 0 && hour < 6; // Only process between 00:00 - 06:00
|
|
57
|
+
}
|
|
58
|
+
return true; // Process all other tasks normally
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
// Caller: Wrap execution to add context, logging, or error handling.
|
|
62
|
+
// Example: Generating a Correlation ID for distributed tracing
|
|
63
|
+
reactiveTaskCaller: async (taskFn) => {
|
|
64
|
+
const correlationId = crypto.randomUUID();
|
|
65
|
+
return AsyncContext.run({ correlationId }, async () => {
|
|
66
|
+
console.log(`[${correlationId}] Starting task...`);
|
|
67
|
+
try {
|
|
68
|
+
await taskFn();
|
|
69
|
+
console.log(`[${correlationId}] Task finished.`);
|
|
70
|
+
} catch (e) {
|
|
71
|
+
console.error(`[${correlationId}] Task failed:`, e);
|
|
72
|
+
throw e;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
monitoring: {
|
|
78
|
+
enabled: true,
|
|
79
|
+
pushIntervalMs: 60000
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
// Cleanup Interval: How often to run periodic cleanup of orphaned tasks.
|
|
83
|
+
// Accepts duration strings ('24h'), milliseconds, or cron expressions.
|
|
84
|
+
// Default: '24h'
|
|
85
|
+
reactiveTaskCleanupInterval: '24h'
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Core Concepts
|
|
2
|
+
|
|
3
|
+
## Architecture
|
|
4
|
+
|
|
5
|
+
The system uses a **Leader-Worker** architecture to balance efficiency and scalability.
|
|
6
|
+
|
|
7
|
+
### The Leader (Planner)
|
|
8
|
+
- **Role**: A single instance is elected as the **Leader**.
|
|
9
|
+
- **Responsibility**: It listens to the MongoDB Change Stream, calculates the necessary tasks (based on `watchProjection`), and persists them into the `_tasks` collection. To minimize memory usage, it only fetches the document `_id` from the Change Stream event.
|
|
10
|
+
> [!NOTE]
|
|
11
|
+
> **Database Resolution**: The Change Stream is established on the database of the **first registered reactive task**.
|
|
12
|
+
- **Resilience**: Leadership is maintained via a distributed lock with a heartbeat. If the leader crashes, another instance automatically takes over (Failover).
|
|
13
|
+
|
|
14
|
+
### The Workers (Executors)
|
|
15
|
+
- **Role**: *Every* instance (including the leader) runs a set of **Worker** threads (managed by the event loop).
|
|
16
|
+
- **Responsibility**: Workers poll the `_tasks` collection for `pending` jobs, lock them, and execute the `handler`.
|
|
17
|
+
- **Adaptive Polling**: Workers use an **adaptive polling** mechanism.
|
|
18
|
+
- **Idle**: If no tasks are found, the polling frequency automatically lowers (saves CPU/IO).
|
|
19
|
+
- **Busy**: If tasks are found (or the **local** Leader signals new work), the frequency speeds up immediately to process the queue as fast as possible. Workers on other instances will speed up once they independently find a task during their regular polling.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Change Detection and Storage Optimization
|
|
24
|
+
|
|
25
|
+
To ensure reliability and efficiency, the system needs to determine *when* to trigger a task.
|
|
26
|
+
|
|
27
|
+
**How it works:**
|
|
28
|
+
1. **State Persistence**: For every source document, a corresponding "task document" is stored in the `[collection]_tasks` collection.
|
|
29
|
+
2. **Snapshotting**: This task document holds a snapshot of the source document's fields (specifically, the result of `watchProjection`).
|
|
30
|
+
3. **Diffing**: When an event occurs (or during [reconciliation](./reconciliation.md)), the system compares the current state of the document against the stored snapshot (`lastObservedValues`).
|
|
31
|
+
4. **No-Op**: If the watched fields haven't changed, **no task is triggered**. This guarantees reliability and prevents redundant processing.
|
|
32
|
+
|
|
33
|
+
**Storage Implications:**
|
|
34
|
+
- **Task Persistence**: The task document remains in the `_tasks` collection as long as the source document exists. It is only removed when the source document is deleted.
|
|
35
|
+
- **Optimization**: If `watchProjection` is **not defined**, the system copies the **entire source document** into the task document.
|
|
36
|
+
- **Recommendation**: For collections with **large documents** or **large datasets**, always define `watchProjection`. This significantly reduces storage usage and improves performance by copying only the necessary data subset.
|
|
37
|
+
- **Tip**: If you want to trigger the task on *any* change but avoid storing the full document, watch a versioning field like `updatedAt`, `lastModifiedAt`, or `_version`.
|
|
38
|
+
```typescript
|
|
39
|
+
// Triggers on any update (assuming your app updates 'updatedAt'),
|
|
40
|
+
// but stores ONLY the 'updatedAt' date in the tasks collection.
|
|
41
|
+
watchProjection: { updatedAt: 1 }
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Task Lifecycle (States)
|
|
45
|
+
|
|
46
|
+
Every task record in the `_tasks` collection follows a specific lifecycle:
|
|
47
|
+
|
|
48
|
+
| Status | Description |
|
|
49
|
+
| :--- | :--- |
|
|
50
|
+
| `pending` | Task is waiting to be processed by a worker. This is the initial state after scheduling or a re-trigger. |
|
|
51
|
+
| `processing` | Task is currently locked and being worked on by an active worker instance. |
|
|
52
|
+
| `processing_dirty` | **Concurrency Guard.** New data was detected while the worker was already processing the previous state. The task will be reset to `pending` immediately after the current run finishes to ensure no updates are missed. |
|
|
53
|
+
| `completed` | Task was processed successfully or it was not matching the filter during the last attempt. |
|
|
54
|
+
| `failed` | Task permanently failed after exceeding all [retries](./policy-retry.md) or the `maxDuration` window. |
|
|
55
|
+
|
|
56
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Filter & Logic Evolution
|
|
2
|
+
|
|
3
|
+
Reactive Tasks are designed to evolve with your application. As you deploy new versions of your code, you might change the `filter`, `watchProjection`, or the `handler` logic itself. The system automatically detects these changes and adapts the task state accordingly.
|
|
4
|
+
|
|
5
|
+
You can control this behavior using the optional `evolution` configuration:
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
await reactiveTask({
|
|
9
|
+
task: 'process-order',
|
|
10
|
+
collection: 'orders',
|
|
11
|
+
filter: { status: 'paid', amount: { $gt: 100 } },
|
|
12
|
+
|
|
13
|
+
// Logic Versioning
|
|
14
|
+
evolution: {
|
|
15
|
+
// Increment this when you change the handler code and want to re-process tasks
|
|
16
|
+
handlerVersion: 2,
|
|
17
|
+
|
|
18
|
+
// What to do when version increments?
|
|
19
|
+
// - 'none': Do nothing (default).
|
|
20
|
+
// - 'reprocess_failed': Reset all 'failed' tasks to 'pending' to retry with new code.
|
|
21
|
+
// - 'reprocess_all': Reset ALL tasks (even completed ones) to 'pending'.
|
|
22
|
+
onHandlerVersionChange: 'reprocess_failed',
|
|
23
|
+
|
|
24
|
+
// If 'filter' or 'watchProjection' changes, should we run reconciliation?
|
|
25
|
+
// Default: true
|
|
26
|
+
reconcileOnTriggerChange: true
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
handler: async (order) => { /* ... */ }
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 1. Trigger Evolution (Filter / Projection)
|
|
34
|
+
|
|
35
|
+
When the scheduler starts, it compares the current `filter` and `watchProjection` with the stored configuration from the previous deployment.
|
|
36
|
+
|
|
37
|
+
* **Narrowing the Filter** (e.g., `amount > 50` → `amount > 100`):
|
|
38
|
+
* **Pending Tasks**: Workers will pick up pending tasks. Before execution, they perform a "Late-Binding Check". If the document no longer matches the new filter (e.g. amount is 75), the task is **skipped** (completed) without running the handler.
|
|
39
|
+
* **Existing Tasks**: Tasks for documents that no longer match are **not deleted** immediately; they remain as history but won't satisfy the filter for future updates. See the cleanup policies for more details.
|
|
40
|
+
|
|
41
|
+
* **Widening the Filter** (e.g., `amount > 100` → `amount > 50`):
|
|
42
|
+
* **Reconciliation**: The system detects the filter change and automatically triggers a **Reconciliation** scan for this specific task.
|
|
43
|
+
* **Backfilling**: It scans the collection for documents that *now* match the new filter (e.g. amount 75) but don't have a task yet. It schedules new tasks for them immediately.
|
|
44
|
+
* *Note*: This ensures specific newly-matched documents get processed without needing a manual migration script.
|
|
45
|
+
|
|
46
|
+
> [!WARNING]
|
|
47
|
+
> **Dynamic Filters (e.g., `$$NOW`)**: If your filter uses time-based expressions to "widen" the range automatically over time (e.g. `{ $expr: { $lte: ['$releaseDate', '$$NOW'] } }`), this does **NOT** trigger reconciliation. The scheduler only detects changes to the *filter definition object*. Documents that match purely because time has passed (without a data change) will **not** be picked up. For time-based triggers, use a [Cron Task](../cron-tasks.md).
|
|
48
|
+
|
|
49
|
+
## 2. Logic Evolution (Handler Versioning)
|
|
50
|
+
|
|
51
|
+
Sometimes you fix a bug in your handler and want to retry failed tasks, or you implement a new feature (e.g. generic data migration) and want to re-run the task for *every* document.
|
|
52
|
+
|
|
53
|
+
* **Versioning**: Increment `evolution.handlerVersion` (integer, default 1).
|
|
54
|
+
* **Policies (`onHandlerVersionChange`)**:
|
|
55
|
+
* `'none'`: The system acknowledges the new version but doesn't touch existing task states. New executions will use the new code.
|
|
56
|
+
* `'reprocess_failed'`: Finds all tasks currently in `failed` status and resets them to `pending` (resetting attempts count). Useful for bug fixes.
|
|
57
|
+
* `'reprocess_all'`: Resets **ALL** tasks (failed, completed) to `pending`. Useful for migrations or re-calculating data for the entire dataset.
|
|
58
|
+
|
|
59
|
+
> [!TIP]
|
|
60
|
+
> Use `reprocess_failed` for bug fixes and `reprocess_all` sparingly for data migrations. The system automatically handles the "reset" operation efficiently using database-side updates.
|
|
61
|
+
|
|
62
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Examples & Use Cases
|
|
2
|
+
|
|
3
|
+
Reactive Tasks are versatile. Here are a few patterns you can implement:
|
|
4
|
+
|
|
5
|
+
## A. Webhook Delivery & Data Sync
|
|
6
|
+
Perfect for reliable delivery of data to external systems. If the external API is down, Mongodash will automatically retry with exponential backoff.
|
|
7
|
+
|
|
8
|
+
```typescript
|
|
9
|
+
await reactiveTask({
|
|
10
|
+
task: 'sync-order-to-erp',
|
|
11
|
+
collection: 'orders',
|
|
12
|
+
filter: { status: 'paid' }, // Only sync when paid
|
|
13
|
+
watchProjection: { status: 1 }, // Only check when status changes
|
|
14
|
+
|
|
15
|
+
handler: async (context) => {
|
|
16
|
+
const order = await context.getDocument();
|
|
17
|
+
await axios.post('https://erp-system.com/api/orders', order);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## B. Async Statistics Recalculation
|
|
23
|
+
Offload heavy calculations from the main request path. When a raw document changes, update the aggregated view in the background.
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
await reactiveTask({
|
|
27
|
+
task: 'recalc-product-rating',
|
|
28
|
+
collection: 'reviews',
|
|
29
|
+
debounce: '5s', // Re-calc at most once every 5 seconds per product
|
|
30
|
+
|
|
31
|
+
handler: async (context) => {
|
|
32
|
+
// We only watched 'status', so we might need the full doc?
|
|
33
|
+
// Or if we have the ID, that's enough for aggregation:
|
|
34
|
+
const { docId } = context;
|
|
35
|
+
|
|
36
|
+
// Calculate new average
|
|
37
|
+
const stats = await calculateAverageRating(docId);
|
|
38
|
+
|
|
39
|
+
// Update product document
|
|
40
|
+
await db.collection('products').updateOne(
|
|
41
|
+
{ _id: docId },
|
|
42
|
+
{ $set: { rating: stats.rating, reviewCount: stats.count } }
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## C. Pub-Sub (Event Bus)
|
|
49
|
+
Use Reactive Tasks as a distributed Event Bus. By creating an events collection and watching only the `_id`, you effectively create a listener that triggers **only on new insertions**.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
await reactiveTask({
|
|
53
|
+
task: 'send-welcome-sequence',
|
|
54
|
+
collection: 'app_events',
|
|
55
|
+
|
|
56
|
+
// TRICK: _id never changes.
|
|
57
|
+
// This config ensures the handler ONLY runs when a new document is inserted.
|
|
58
|
+
watchProjection: { _id: 1 },
|
|
59
|
+
filter: { type: 'user-registered' },
|
|
60
|
+
|
|
61
|
+
handler: async (context) => {
|
|
62
|
+
const event = await context.getDocument();
|
|
63
|
+
await emailService.sendWelcome(event.payload.email);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
```
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## 1. Initialization
|
|
4
|
+
|
|
5
|
+
Ensure `mongodash` is initialized with a global `uri` or `mongoClient`.
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import mongodash from 'mongodash';
|
|
9
|
+
|
|
10
|
+
await mongodash.init({
|
|
11
|
+
uri: 'mongodb://localhost:27017/my-app'
|
|
12
|
+
});
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 2. Define a Task
|
|
16
|
+
|
|
17
|
+
Use the `reactiveTask` function to register a task. You define *what* to watch and *how* to process it.
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { reactiveTask } from 'mongodash';
|
|
21
|
+
|
|
22
|
+
// Define a task that sends an email when a User is created or updated
|
|
23
|
+
// multiple tasks can listen to the same collection!
|
|
24
|
+
await reactiveTask({
|
|
25
|
+
task: 'send-welcome-email', // Unique Job ID
|
|
26
|
+
collection: 'users', // Collection to watch
|
|
27
|
+
|
|
28
|
+
// Optional: Only trigger if specific fields change
|
|
29
|
+
watchProjection: { status: 1, email: 1 },
|
|
30
|
+
|
|
31
|
+
// Optional: Filter documents (Standard Query or Aggregation Expression)
|
|
32
|
+
filter: { status: 'active' },
|
|
33
|
+
|
|
34
|
+
// The logic to execute
|
|
35
|
+
handler: async (context) => {
|
|
36
|
+
// Fetch the document (verifies filter & optimistic locking)
|
|
37
|
+
const userDoc = await context.getDocument();
|
|
38
|
+
|
|
39
|
+
console.log(`Processing user: ${userDoc._id}`);
|
|
40
|
+
await sendEmail(userDoc.email, 'Welcome!');
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
For a full list of options, see [Configuration](./configuration.md).
|
|
45
|
+
|
|
46
|
+
## 3. Start the System
|
|
47
|
+
|
|
48
|
+
After registering all tasks, start the scheduler. This will assume leadership (if possible) and start processing.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { startReactiveTasks } from 'mongodash';
|
|
52
|
+
|
|
53
|
+
await startReactiveTasks();
|
|
54
|
+
```
|