pg-boss 12.11.1 → 12.12.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.
- package/README.md +3 -103
- package/dist/attorney.d.ts.map +1 -1
- package/dist/attorney.js +11 -0
- package/dist/boss.d.ts.map +1 -1
- package/dist/boss.js +17 -16
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/manager.d.ts +1 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +31 -5
- package/dist/migrationStore.d.ts.map +1 -1
- package/dist/migrationStore.js +180 -0
- package/dist/plans.d.ts +3 -1
- package/dist/plans.d.ts.map +1 -1
- package/dist/plans.js +55 -12
- package/dist/types.d.ts +137 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -54,113 +54,13 @@ This will likely cater the most to teams already familiar with the simplicity of
|
|
|
54
54
|
|
|
55
55
|
## CLI
|
|
56
56
|
|
|
57
|
-
pg-boss includes a command-line interface for managing database migrations without writing code. This is useful for CI/CD pipelines, database setup scripts, or manual schema management.
|
|
57
|
+
pg-boss includes a command-line interface if needed for managing database migrations without writing code. This is useful for CI/CD pipelines, database setup scripts, or manual schema management.
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
When installed globally, the CLI is available as `pg-boss`:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
npm install -g pg-boss
|
|
65
|
-
pg-boss --help
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Or run directly with npx:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
npx pg-boss --help
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Commands
|
|
75
|
-
|
|
76
|
-
| Command | Description |
|
|
77
|
-
|---------|-------------|
|
|
78
|
-
| `migrate` | Run pending migrations (creates schema if not exists) |
|
|
79
|
-
| `create` | Create initial pg-boss schema |
|
|
80
|
-
| `version` | Show current schema version |
|
|
81
|
-
| `rollback` | Rollback the last migration |
|
|
82
|
-
| `plans <subcommand>` | Output SQL without executing (subcommands: `create`, `migrate`, `rollback`) |
|
|
83
|
-
|
|
84
|
-
### Connection Configuration
|
|
85
|
-
|
|
86
|
-
The CLI supports multiple ways to configure the database connection, in order of precedence:
|
|
87
|
-
|
|
88
|
-
1. **Command-line arguments**
|
|
89
|
-
```bash
|
|
90
|
-
pg-boss migrate --connection-string postgres://user:pass@host/database
|
|
91
|
-
# or individual options
|
|
92
|
-
pg-boss migrate --host localhost --port 5432 --database mydb --user postgres --password secret
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
2. **Environment variables**
|
|
96
|
-
```bash
|
|
97
|
-
PGBOSS_DATABASE_URL=postgres://user:pass@host/database pg-boss migrate
|
|
98
|
-
# or individual variables
|
|
99
|
-
PGBOSS_HOST=localhost PGBOSS_PORT=5432 PGBOSS_DATABASE=mydb PGBOSS_USER=postgres PGBOSS_PASSWORD=secret pg-boss migrate
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
This allows admin credentials for migrations to coexist with regular application database credentials (e.g., `DATABASE_URL` for the app, `PGBOSS_DATABASE_URL` for migrations).
|
|
103
|
-
|
|
104
|
-
3. **Config file** (pgboss.json or .pgbossrc in current directory, or specify with `--config`)
|
|
105
|
-
```bash
|
|
106
|
-
pg-boss migrate --config ./config/pgboss.json
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Config file format:
|
|
110
|
-
```json
|
|
111
|
-
{
|
|
112
|
-
"host": "localhost",
|
|
113
|
-
"port": 5432,
|
|
114
|
-
"database": "mydb",
|
|
115
|
-
"user": "postgres",
|
|
116
|
-
"password": "secret",
|
|
117
|
-
"schema": "pgboss"
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Options
|
|
122
|
-
|
|
123
|
-
| Option | Short | Description |
|
|
124
|
-
|--------|-------|-------------|
|
|
125
|
-
| `--connection-string` | `-c` | PostgreSQL connection string |
|
|
126
|
-
| `--host` | | Database host |
|
|
127
|
-
| `--port` | | Database port |
|
|
128
|
-
| `--database` | `-d` | Database name |
|
|
129
|
-
| `--user` | `-u` | Database user |
|
|
130
|
-
| `--password` | `-p` | Database password |
|
|
131
|
-
| `--schema` | `-s` | pg-boss schema name (default: pgboss) |
|
|
132
|
-
| `--config` | | Path to config file |
|
|
133
|
-
| `--dry-run` | | Show SQL without executing (for migrate, create, rollback) |
|
|
134
|
-
|
|
135
|
-
### Examples
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
# Create schema in a new database
|
|
139
|
-
pg-boss create --connection-string postgres://localhost/myapp
|
|
140
|
-
|
|
141
|
-
# Run migrations in CI/CD pipeline
|
|
142
|
-
PGBOSS_DATABASE_URL=$PGBOSS_DATABASE_URL pg-boss migrate
|
|
143
|
-
|
|
144
|
-
# Preview migration SQL before running
|
|
145
|
-
pg-boss migrate --connection-string postgres://localhost/myapp --dry-run
|
|
146
|
-
|
|
147
|
-
# Check current schema version
|
|
148
|
-
pg-boss version -c postgres://localhost/myapp
|
|
149
|
-
|
|
150
|
-
# Use a custom schema name
|
|
151
|
-
pg-boss migrate -c postgres://localhost/myapp --schema myapp_jobs
|
|
152
|
-
|
|
153
|
-
# Output SQL for creating schema (useful for review or manual execution)
|
|
154
|
-
pg-boss plans create --schema myapp_jobs
|
|
155
|
-
```
|
|
59
|
+
See the [CLI documentation](https://timgit.github.io/pg-boss/#/cli) for details.
|
|
156
60
|
|
|
157
61
|
## Dashboard
|
|
158
62
|
|
|
159
|
-
A web-based dashboard is available
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
DATABASE_URL="postgres://user:password@localhost:5432/mydb" npx pg-boss-dashboard
|
|
163
|
-
```
|
|
63
|
+
A web-based dashboard is available in the [`@pg-boss/dashboard`](https://www.npmjs.com/package/@pg-boss/dashboard) package for monitoring and managing jobs, queues and schedules.
|
|
164
64
|
|
|
165
65
|
See the [dashboard documentation](https://github.com/timgit/pg-boss/blob/master/packages/dashboard/README.md) for full configuration and deployment options.
|
|
166
66
|
|
package/dist/attorney.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attorney.d.ts","sourceRoot":"","sources":["../src/attorney.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAExC,QAAA,MAAM,MAAM;;;;CAIX,CAAA;AAMD,iBAAS,iBAAiB,CAAE,MAAM,GAAE,GAAQ,
|
|
1
|
+
{"version":3,"file":"attorney.d.ts","sourceRoot":"","sources":["../src/attorney.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAExC,QAAA,MAAM,MAAM;;;;CAIX,CAAA;AAMD,iBAAS,iBAAiB,CAAE,MAAM,GAAE,GAAQ,QAY3C;AAED,iBAAS,aAAa,CAAE,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAgDhD;AAmED,iBAAS,aAAa,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;IAClD,OAAO,EAAE,KAAK,CAAC,mBAAmB,CAAA;IAClC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;CACjC,CA4BA;AAED,iBAAS,cAAc,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAOlD;AAED,iBAAS,SAAS,CAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,0BAA0B,CAoB9F;AAwBD,iBAAS,wBAAwB,CAAE,IAAI,EAAE,MAAM,QAK9C;AAED,iBAAS,eAAe,CAAE,IAAI,EAAE,MAAM,QAIrC;AAED,iBAAS,SAAS,CAAE,GAAG,EAAE,MAAM,QAI9B;AA2GD,OAAO,EACL,SAAS,EACT,wBAAwB,EACxB,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,SAAS,EACT,MAAM,EACN,iBAAiB,EAClB,CAAA"}
|
package/dist/attorney.js
CHANGED
|
@@ -17,6 +17,7 @@ function validateQueueArgs(config = {}) {
|
|
|
17
17
|
validateExpirationConfig(config);
|
|
18
18
|
validateRetentionConfig(config);
|
|
19
19
|
validateDeletionConfig(config);
|
|
20
|
+
validateHeartbeatConfig(config);
|
|
20
21
|
}
|
|
21
22
|
function checkSendArgs(args) {
|
|
22
23
|
let name, data, options;
|
|
@@ -52,6 +53,7 @@ function checkSendArgs(args) {
|
|
|
52
53
|
validateRetentionConfig(options);
|
|
53
54
|
validateDeletionConfig(options);
|
|
54
55
|
validateGroupConfig(options);
|
|
56
|
+
validateHeartbeatConfig(options);
|
|
55
57
|
return { name, data, options };
|
|
56
58
|
}
|
|
57
59
|
function validateGroupConfig(config) {
|
|
@@ -122,6 +124,7 @@ function checkWorkArgs(name, args) {
|
|
|
122
124
|
assert(!('priority' in options) || typeof options.priority === 'boolean', 'priority must be a boolean');
|
|
123
125
|
assert(!('localConcurrency' in options) || (Number.isInteger(options.localConcurrency) && options.localConcurrency >= 1), 'localConcurrency must be an integer >= 1');
|
|
124
126
|
validateGroupConcurrencyConfig(options);
|
|
127
|
+
validateHeartbeatRefreshConfig(options);
|
|
125
128
|
return { options, callback };
|
|
126
129
|
}
|
|
127
130
|
function checkFetchArgs(name, options) {
|
|
@@ -190,6 +193,14 @@ function validateRetryConfig(config) {
|
|
|
190
193
|
assert(!('retryDelayMax' in config) || config.retryDelayMax === null || config.retryBackoff === true, 'retryDelayMax can only be set if retryBackoff is true');
|
|
191
194
|
assert(!('retryDelayMax' in config) || config.retryDelayMax === null || (Number.isInteger(config.retryDelayMax) && config.retryDelayMax >= 0), 'retryDelayMax must be an integer >= 0');
|
|
192
195
|
}
|
|
196
|
+
function validateHeartbeatConfig(config) {
|
|
197
|
+
assert(!('heartbeatSeconds' in config) || config.heartbeatSeconds === null || (Number.isInteger(config.heartbeatSeconds) && config.heartbeatSeconds >= 10), 'heartbeatSeconds must be an integer >= 10');
|
|
198
|
+
}
|
|
199
|
+
function validateHeartbeatRefreshConfig(config) {
|
|
200
|
+
if (!('heartbeatRefreshSeconds' in config) || config.heartbeatRefreshSeconds == null)
|
|
201
|
+
return;
|
|
202
|
+
assert(typeof config.heartbeatRefreshSeconds === 'number' && config.heartbeatRefreshSeconds > 0, 'heartbeatRefreshSeconds must be a number > 0');
|
|
203
|
+
}
|
|
193
204
|
function applyPollingInterval(config) {
|
|
194
205
|
assert(!('pollingIntervalSeconds' in config) || config.pollingIntervalSeconds >= POLICY.MIN_POLLING_INTERVAL_MS / 1000, `configuration assert: pollingIntervalSeconds must be at least every ${POLICY.MIN_POLLING_INTERVAL_MS}ms`);
|
|
195
206
|
config.pollingInterval = ('pollingIntervalSeconds' in config)
|
package/dist/boss.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boss.d.ts","sourceRoot":"","sources":["../src/boss.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAkBnC,cAAM,IAAK,SAAQ,YAAa,YAAW,KAAK,CAAC,WAAW;;IAS1D,MAAM;;;MAAS;gBAGb,EAAE,EAAE,KAAK,CAAC,SAAS,EACnB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,CAAC,0BAA0B;IAmBpC,KAAK;IAWL,IAAI;
|
|
1
|
+
{"version":3,"file":"boss.d.ts","sourceRoot":"","sources":["../src/boss.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAkBnC,cAAM,IAAK,SAAQ,YAAa,YAAW,KAAK,CAAC,WAAW;;IAS1D,MAAM;;;MAAS;gBAGb,EAAE,EAAE,KAAK,CAAC,SAAS,EACnB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,CAAC,0BAA0B;IAmBpC,KAAK;IAWL,IAAI;IAwEJ,SAAS,CAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;CAqGtD;AAED,eAAe,IAAI,CAAA"}
|
package/dist/boss.js
CHANGED
|
@@ -63,17 +63,10 @@ class Boss extends EventEmitter {
|
|
|
63
63
|
errorEvent: events.error
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
-
async #executeSql(sql) {
|
|
67
|
-
const started = Date.now();
|
|
68
|
-
const result = unwrapSQLResult(await this.#db.executeSql(sql));
|
|
69
|
-
const elapsed = (Date.now() - started) / 1000;
|
|
70
|
-
if (elapsed > WARNINGS.SLOW_QUERY.seconds ||
|
|
71
|
-
this.#config.__test__warn_slow_query) {
|
|
72
|
-
await emitAndPersistWarning(this.#warningContext, WARNING_TYPES.SLOW_QUERY, WARNINGS.SLOW_QUERY.message, { elapsed, sql });
|
|
73
|
-
}
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
66
|
async #executeQuery(query) {
|
|
67
|
+
if (typeof (query) === 'string') {
|
|
68
|
+
query = { text: query, values: [] };
|
|
69
|
+
}
|
|
77
70
|
const started = Date.now();
|
|
78
71
|
const result = unwrapSQLResult(await this.#db.executeSql(query.text, query.values));
|
|
79
72
|
const elapsed = (Date.now() - started) / 1000;
|
|
@@ -109,7 +102,7 @@ class Boss extends EventEmitter {
|
|
|
109
102
|
return;
|
|
110
103
|
}
|
|
111
104
|
const sql = plans.deleteOldWarnings(this.#config.schema, this.#config.warningRetentionDays);
|
|
112
|
-
await this.#
|
|
105
|
+
await this.#executeQuery(sql);
|
|
113
106
|
}
|
|
114
107
|
async supervise(value) {
|
|
115
108
|
let queues;
|
|
@@ -125,6 +118,7 @@ class Boss extends EventEmitter {
|
|
|
125
118
|
acc[table].queues.push(q);
|
|
126
119
|
return acc;
|
|
127
120
|
}, {});
|
|
121
|
+
const heartbeatQueueNames = new Set(queues.filter(q => q.heartbeatSeconds != null).map(q => q.name));
|
|
128
122
|
for (const queueGroup of Object.values(queueGroups)) {
|
|
129
123
|
if (this.#stopping)
|
|
130
124
|
return;
|
|
@@ -134,12 +128,12 @@ class Boss extends EventEmitter {
|
|
|
134
128
|
if (this.#stopping)
|
|
135
129
|
return;
|
|
136
130
|
const chunk = names.splice(0, 100);
|
|
137
|
-
await this.#monitor(table, chunk);
|
|
131
|
+
await this.#monitor(table, chunk, heartbeatQueueNames);
|
|
138
132
|
await this.#maintain(table, chunk);
|
|
139
133
|
}
|
|
140
134
|
}
|
|
141
135
|
}
|
|
142
|
-
async #monitor(table, names) {
|
|
136
|
+
async #monitor(table, names, heartbeatQueueNames) {
|
|
143
137
|
if (this.#stopping)
|
|
144
138
|
return;
|
|
145
139
|
const command = plans.trySetQueueMonitorTime(this.#config.schema, names, this.#config.monitorIntervalSeconds);
|
|
@@ -149,7 +143,7 @@ class Boss extends EventEmitter {
|
|
|
149
143
|
if (rows.length) {
|
|
150
144
|
const queues = rows.map((q) => q.name);
|
|
151
145
|
const cacheStatsSql = plans.cacheQueueStats(this.#config.schema, table, queues);
|
|
152
|
-
const { rows: rowsCacheStats } = await this.#
|
|
146
|
+
const { rows: rowsCacheStats } = await this.#executeQuery(cacheStatsSql);
|
|
153
147
|
if (this.#stopping)
|
|
154
148
|
return;
|
|
155
149
|
const warnings = rowsCacheStats.filter(i => i.queuedCount > (i.warningQueueSize || WARNINGS.LARGE_QUEUE.size));
|
|
@@ -157,7 +151,14 @@ class Boss extends EventEmitter {
|
|
|
157
151
|
await emitAndPersistWarning(this.#warningContext, WARNING_TYPES.QUEUE_BACKLOG, WARNINGS.LARGE_QUEUE.message, warning);
|
|
158
152
|
}
|
|
159
153
|
const sql = plans.failJobsByTimeout(this.#config.schema, table, queues);
|
|
160
|
-
await this.#
|
|
154
|
+
await this.#executeQuery(sql);
|
|
155
|
+
if (this.#stopping)
|
|
156
|
+
return;
|
|
157
|
+
const heartbeatQueues = queues.filter(q => heartbeatQueueNames.has(q));
|
|
158
|
+
if (heartbeatQueues.length) {
|
|
159
|
+
const heartbeatSql = plans.failJobsByHeartbeat(this.#config.schema, table, heartbeatQueues);
|
|
160
|
+
await this.#executeQuery(heartbeatSql);
|
|
161
|
+
}
|
|
161
162
|
}
|
|
162
163
|
}
|
|
163
164
|
async #maintain(table, names) {
|
|
@@ -170,7 +171,7 @@ class Boss extends EventEmitter {
|
|
|
170
171
|
if (rows.length) {
|
|
171
172
|
const queues = rows.map((q) => q.name);
|
|
172
173
|
const sql = plans.deletion(this.#config.schema, table, queues);
|
|
173
|
-
await this.#
|
|
174
|
+
await this.#executeQuery(sql);
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
177
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export declare class PgBoss extends EventEmitter<types.PgBossEventMap> {
|
|
|
44
44
|
deleteAllJobs(name?: string): Promise<void>;
|
|
45
45
|
complete(name: string, id: string | string[], data?: object | null, options?: types.CompleteOptions): Promise<types.CommandResponse>;
|
|
46
46
|
fail(name: string, id: string | string[], data?: object | null, options?: types.ConnectionOptions): Promise<types.CommandResponse>;
|
|
47
|
+
touch(name: string, id: string | string[], options?: types.ConnectionOptions): Promise<types.CommandResponse>;
|
|
47
48
|
/**
|
|
48
49
|
* @deprecated Use findJobs() instead
|
|
49
50
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAA;AAQtC,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAGxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AACvD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,MAMzB,CAAA;AAEF,wBAAgB,oBAAoB,CAAE,MAAM,CAAC,EAAE,MAAM,UAEpD;AAED,wBAAgB,iBAAiB,CAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,UAEnE;AAED,wBAAgB,gBAAgB,CAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,UAElE;AAED,qBAAa,MAAO,SAAQ,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC;;gBAa/C,gBAAgB,EAAE,MAAM;gBACxB,OAAO,EAAE,KAAK,CAAC,kBAAkB;IA6CxC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAsCvB,IAAI,CAAE,OAAO,GAAE,KAAK,CAAC,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C3D,IAAI,CAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACrD,IAAI,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK9F,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACpH,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAC5H,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKzH,aAAa,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3I,aAAa,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3I,MAAM,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAIvG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,GAAG;QAAE,eAAe,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACpH,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAK7E,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG;QAAE,eAAe,EAAE,IAAI,CAAA;KAAE,EAAE,OAAO,EAAE,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7K,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrI,OAAO,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,YAAY,CAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIrC,SAAS,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,WAAW,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,OAAO,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlF,MAAM,CAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;IAI/G,MAAM,CAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;IAI/G,KAAK,CAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;IAI9G,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;IAIlH,gBAAgB,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,gBAAgB,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,aAAa,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,QAAQ,CAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;IAIrI,IAAI,CAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;IAInI;;OAEG;IACH,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAIpH,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAI/F,WAAW,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E,cAAc,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhD,WAAW,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,SAAS,CAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAI1D,QAAQ,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IAI1D,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;IAIxD,SAAS,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAG,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAIrD,UAAU,IAAK,IAAI;IAInB,WAAW,IAAK,OAAO,CAAC,OAAO,CAAC;IAIhC,aAAa,IAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,QAAQ,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3G,UAAU,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,YAAY,CAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAI/D,YAAY,IAAK,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAMlD,aAAa,IAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAMjD,KAAK,IAAK,KAAK,CAAC,SAAS;CAW1B;AAED,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,SAAS,IAAI,EAAE,EACf,aAAa,EACb,GAAG,EACH,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,KAAK,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,EACX,WAAW,EACX,uBAAuB,GACxB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,MAAM,GACP,MAAM,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -193,6 +193,9 @@ export class PgBoss extends EventEmitter {
|
|
|
193
193
|
fail(name, id, data, options) {
|
|
194
194
|
return this.#manager.fail(name, id, data, options);
|
|
195
195
|
}
|
|
196
|
+
touch(name, id, options) {
|
|
197
|
+
return this.#manager.touch(name, id, options);
|
|
198
|
+
}
|
|
196
199
|
/**
|
|
197
200
|
* @deprecated Use findJobs() instead
|
|
198
201
|
*/
|
package/dist/manager.d.ts
CHANGED
|
@@ -72,6 +72,7 @@ declare class Manager extends EventEmitter implements types.EventsMixin {
|
|
|
72
72
|
resume(name: string, id: string | string[], options?: types.ConnectionOptions): Promise<types.CommandResponse>;
|
|
73
73
|
restore(name: string, id: string | string[], options?: types.ConnectionOptions): Promise<void>;
|
|
74
74
|
retry(name: string, id: string | string[], options?: types.ConnectionOptions): Promise<types.CommandResponse>;
|
|
75
|
+
touch(name: string, id: string | string[], options?: types.ConnectionOptions): Promise<types.CommandResponse>;
|
|
75
76
|
createQueue(name: string, options?: Omit<types.Queue, 'name'> & {
|
|
76
77
|
name?: string;
|
|
77
78
|
}): Promise<void>;
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,aAAa,CAAA;AAGtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAG7C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAU,KAAK,eAAe,EAAE,MAAM,UAAU,CAAA;AASvD,cAAM,OAAQ,SAAQ,YAAa,YAAW,KAAK,CAAC,WAAW;;IAC7D,MAAM;;;MAAS;IACf,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;QAAE,MAAM,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,GAAG,EAAE,CAAA;IAC/C,MAAM,EAAE,KAAK,CAAC,0BAA0B,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,kBAAkB,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAA;IAC9C,UAAU,EAAE,UAAU,GAAG,SAAS,CAAA;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBAK5B,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,0BAA0B;IAc1E,MAAM,CAAC,CAAC,GAAG,MAAM,EAAG,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAYrD,UAAU,IAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.js
CHANGED
|
@@ -174,15 +174,29 @@ class Manager extends EventEmitter {
|
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
|
-
async #processJobs(name, jobs, callback, worker) {
|
|
177
|
+
async #processJobs(name, jobs, callback, worker, heartbeatRefreshSeconds) {
|
|
178
178
|
const jobIds = jobs.map(job => job.id);
|
|
179
179
|
const maxExpiration = jobs.reduce((acc, i) => Math.max(acc, i.expireInSeconds), 0);
|
|
180
|
+
const heartbeatSeconds = jobs.reduce((acc, j) => Math.max(acc, j.heartbeatSeconds || 0), 0);
|
|
180
181
|
const ac = new AbortController();
|
|
181
182
|
jobs.forEach(job => { job.signal = ac.signal; });
|
|
182
183
|
// Store AbortController on worker so it can be aborted after graceful shutdown
|
|
183
184
|
if (worker) {
|
|
184
185
|
worker.abortController = ac;
|
|
185
186
|
}
|
|
187
|
+
let heartbeatTimer = null;
|
|
188
|
+
if (heartbeatSeconds > 0) {
|
|
189
|
+
const refreshSeconds = heartbeatRefreshSeconds ?? (heartbeatSeconds / 2);
|
|
190
|
+
const intervalMs = refreshSeconds * 1000;
|
|
191
|
+
heartbeatTimer = setInterval(async () => {
|
|
192
|
+
try {
|
|
193
|
+
await this.touch(name, jobIds);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
this.emit(events.error, err);
|
|
197
|
+
}
|
|
198
|
+
}, intervalMs);
|
|
199
|
+
}
|
|
186
200
|
try {
|
|
187
201
|
const result = await resolveWithinSeconds(callback(jobs), maxExpiration, `handler execution exceeded ${maxExpiration}s`, ac);
|
|
188
202
|
await this.complete(name, jobIds, jobIds.length === 1 ? result : undefined);
|
|
@@ -193,6 +207,8 @@ class Manager extends EventEmitter {
|
|
|
193
207
|
this.#trackJobsFailed(name, jobs, err);
|
|
194
208
|
}
|
|
195
209
|
finally {
|
|
210
|
+
if (heartbeatTimer)
|
|
211
|
+
clearInterval(heartbeatTimer);
|
|
196
212
|
if (worker) {
|
|
197
213
|
// Clear between jobs
|
|
198
214
|
worker.abortController = null;
|
|
@@ -251,7 +267,7 @@ class Manager extends EventEmitter {
|
|
|
251
267
|
if (this.stopped) {
|
|
252
268
|
throw new Error('Workers are disabled. pg-boss is stopped');
|
|
253
269
|
}
|
|
254
|
-
const { pollingInterval: interval, batchSize = 1, includeMetadata = false, priority = true, localConcurrency = 1, localGroupConcurrency, groupConcurrency, orderByCreatedOn = true } = options;
|
|
270
|
+
const { pollingInterval: interval, batchSize = 1, includeMetadata = false, priority = true, localConcurrency = 1, localGroupConcurrency, groupConcurrency, orderByCreatedOn = true, heartbeatRefreshSeconds } = options;
|
|
255
271
|
if (localGroupConcurrency != null) {
|
|
256
272
|
this.#storeLocalGroupConfig(name, localGroupConcurrency);
|
|
257
273
|
}
|
|
@@ -274,7 +290,7 @@ class Manager extends EventEmitter {
|
|
|
274
290
|
const worker = this.workers.get(workerId);
|
|
275
291
|
// Skip all in-memory group tracking when localGroupConcurrency is not enabled
|
|
276
292
|
if (localGroupConcurrency == null) {
|
|
277
|
-
await this.#processJobs(name, jobs, callback, worker);
|
|
293
|
+
await this.#processJobs(name, jobs, callback, worker, heartbeatRefreshSeconds);
|
|
278
294
|
}
|
|
279
295
|
else {
|
|
280
296
|
const { allowed, excess, groupedJobs } = this.#trackLocalGroupStart(name, jobs);
|
|
@@ -284,7 +300,7 @@ class Manager extends EventEmitter {
|
|
|
284
300
|
}
|
|
285
301
|
if (allowed.length > 0) {
|
|
286
302
|
try {
|
|
287
|
-
await this.#processJobs(name, allowed, callback, worker);
|
|
303
|
+
await this.#processJobs(name, allowed, callback, worker, heartbeatRefreshSeconds);
|
|
288
304
|
}
|
|
289
305
|
finally {
|
|
290
306
|
this.#trackLocalGroupEnd(name, groupedJobs);
|
|
@@ -408,7 +424,7 @@ class Manager extends EventEmitter {
|
|
|
408
424
|
}
|
|
409
425
|
async createJob(request) {
|
|
410
426
|
const { name, data = null, options = {} } = request;
|
|
411
|
-
const { id = null, db: wrapper, priority, startAfter, singletonKey = null, singletonSeconds, singletonNextSlot, expireInSeconds, deleteAfterSeconds, retentionSeconds, keepUntil, retryLimit, retryDelay, retryBackoff, retryDelayMax, group, deadLetter = null } = options;
|
|
427
|
+
const { id = null, db: wrapper, priority, startAfter, singletonKey = null, singletonSeconds, singletonNextSlot, expireInSeconds, deleteAfterSeconds, retentionSeconds, keepUntil, retryLimit, retryDelay, retryBackoff, retryDelayMax, heartbeatSeconds, group, deadLetter = null } = options;
|
|
412
428
|
const job = {
|
|
413
429
|
id,
|
|
414
430
|
name,
|
|
@@ -428,6 +444,7 @@ class Manager extends EventEmitter {
|
|
|
428
444
|
retryDelay,
|
|
429
445
|
retryBackoff,
|
|
430
446
|
retryDelayMax,
|
|
447
|
+
heartbeatSeconds,
|
|
431
448
|
deadLetter
|
|
432
449
|
};
|
|
433
450
|
const db = wrapper || this.db;
|
|
@@ -610,6 +627,15 @@ class Manager extends EventEmitter {
|
|
|
610
627
|
const result = await db.executeSql(sql, [name, ids]);
|
|
611
628
|
return this.mapCommandResponse(ids, result);
|
|
612
629
|
}
|
|
630
|
+
async touch(name, id, options = {}) {
|
|
631
|
+
Attorney.assertQueueName(name);
|
|
632
|
+
const db = this.assertDb(options);
|
|
633
|
+
const ids = this.mapCompletionIdArg(id, 'touch');
|
|
634
|
+
const { table } = await this.getQueueCache(name);
|
|
635
|
+
const sql = plans.touchJobs(this.config.schema, table);
|
|
636
|
+
const result = await db.executeSql(sql, [name, ids]);
|
|
637
|
+
return this.mapCommandResponse(ids, result);
|
|
638
|
+
}
|
|
613
639
|
async createQueue(name, options = {}) {
|
|
614
640
|
name = name || options.name;
|
|
615
641
|
Attorney.assertQueueName(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrationStore.d.ts","sourceRoot":"","sources":["../src/migrationStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AASnC,iBAAS,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,UAQjF;AAED,iBAAS,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,SAAS,UAQxF;AAED,iBAAS,OAAO,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,UAuBhF;AAED,iBAAS,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"migrationStore.d.ts","sourceRoot":"","sources":["../src/migrationStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AASnC,iBAAS,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,UAQjF;AAED,iBAAS,IAAI,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,SAAS,UAQxF;AAED,iBAAS,OAAO,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,UAuBhF;AAED,iBAAS,MAAM,CAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAgwBlD;AAED,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,MAAM,GACP,CAAA"}
|
package/dist/migrationStore.js
CHANGED
|
@@ -621,6 +621,186 @@ function getAll(schema) {
|
|
|
621
621
|
`DROP INDEX ${schema}.warning_i1`,
|
|
622
622
|
`DROP TABLE ${schema}.warning`
|
|
623
623
|
]
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
release: '12.12.0',
|
|
627
|
+
version: 30,
|
|
628
|
+
previous: 29,
|
|
629
|
+
install: [
|
|
630
|
+
`ALTER TABLE ${schema}.job ADD COLUMN heartbeat_on timestamp with time zone`,
|
|
631
|
+
`ALTER TABLE ${schema}.job ADD COLUMN heartbeat_seconds int`,
|
|
632
|
+
`ALTER TABLE ${schema}.queue ADD COLUMN heartbeat_seconds int`,
|
|
633
|
+
`
|
|
634
|
+
CREATE OR REPLACE FUNCTION ${schema}.create_queue(queue_name text, options jsonb)
|
|
635
|
+
RETURNS VOID AS
|
|
636
|
+
$$
|
|
637
|
+
DECLARE
|
|
638
|
+
tablename varchar := CASE WHEN options->>'partition' = 'true'
|
|
639
|
+
THEN 'j' || encode(sha224(queue_name::bytea), 'hex')
|
|
640
|
+
ELSE 'job_common'
|
|
641
|
+
END;
|
|
642
|
+
queue_created_on timestamptz;
|
|
643
|
+
BEGIN
|
|
644
|
+
|
|
645
|
+
WITH q as (
|
|
646
|
+
INSERT INTO ${schema}.queue (
|
|
647
|
+
name,
|
|
648
|
+
policy,
|
|
649
|
+
retry_limit,
|
|
650
|
+
retry_delay,
|
|
651
|
+
retry_backoff,
|
|
652
|
+
retry_delay_max,
|
|
653
|
+
expire_seconds,
|
|
654
|
+
retention_seconds,
|
|
655
|
+
deletion_seconds,
|
|
656
|
+
warning_queued,
|
|
657
|
+
dead_letter,
|
|
658
|
+
partition,
|
|
659
|
+
table_name,
|
|
660
|
+
heartbeat_seconds
|
|
661
|
+
)
|
|
662
|
+
VALUES (
|
|
663
|
+
queue_name,
|
|
664
|
+
options->>'policy',
|
|
665
|
+
COALESCE((options->>'retryLimit')::int, 2),
|
|
666
|
+
COALESCE((options->>'retryDelay')::int, 0),
|
|
667
|
+
COALESCE((options->>'retryBackoff')::bool, false),
|
|
668
|
+
(options->>'retryDelayMax')::int,
|
|
669
|
+
COALESCE((options->>'expireInSeconds')::int, 900),
|
|
670
|
+
COALESCE((options->>'retentionSeconds')::int, 1209600),
|
|
671
|
+
COALESCE((options->>'deleteAfterSeconds')::int, 604800),
|
|
672
|
+
COALESCE((options->>'warningQueueSize')::int, 0),
|
|
673
|
+
options->>'deadLetter',
|
|
674
|
+
COALESCE((options->>'partition')::bool, false),
|
|
675
|
+
tablename,
|
|
676
|
+
(options->>'heartbeatSeconds')::int
|
|
677
|
+
)
|
|
678
|
+
ON CONFLICT DO NOTHING
|
|
679
|
+
RETURNING created_on
|
|
680
|
+
)
|
|
681
|
+
SELECT created_on into queue_created_on from q;
|
|
682
|
+
|
|
683
|
+
IF queue_created_on IS NULL OR options->>'partition' IS DISTINCT FROM 'true' THEN
|
|
684
|
+
RETURN;
|
|
685
|
+
END IF;
|
|
686
|
+
|
|
687
|
+
EXECUTE format('CREATE TABLE ${schema}.%I (LIKE ${schema}.job INCLUDING DEFAULTS)', tablename);
|
|
688
|
+
|
|
689
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD PRIMARY KEY (name, id)$cmd$, tablename);
|
|
690
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT q_fkey FOREIGN KEY (name) REFERENCES ${schema}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);
|
|
691
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT dlq_fkey FOREIGN KEY (dead_letter) REFERENCES ${schema}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);
|
|
692
|
+
|
|
693
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i5 ON ${schema}.job (name, start_after) INCLUDE (priority, created_on, id) WHERE state < 'active'$cmd$, tablename);
|
|
694
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i4 ON ${schema}.job (name, singleton_on, COALESCE(singleton_key, '')) WHERE state <> 'cancelled' AND singleton_on IS NOT NULL$cmd$, tablename);
|
|
695
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i7 ON ${schema}.job (name, group_id) WHERE state = 'active' AND group_id IS NOT NULL$cmd$, tablename);
|
|
696
|
+
|
|
697
|
+
IF options->>'policy' = 'short' THEN
|
|
698
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i1 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state = 'created' AND policy = 'short'$cmd$, tablename);
|
|
699
|
+
ELSIF options->>'policy' = 'singleton' THEN
|
|
700
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i2 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state = 'active' AND policy = 'singleton'$cmd$, tablename);
|
|
701
|
+
ELSIF options->>'policy' = 'stately' THEN
|
|
702
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i3 ON ${schema}.job (name, state, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'stately'$cmd$, tablename);
|
|
703
|
+
ELSIF options->>'policy' = 'exclusive' THEN
|
|
704
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i6 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'exclusive'$cmd$, tablename);
|
|
705
|
+
ELSIF options->>'policy' = 'key_strict_fifo' THEN
|
|
706
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i8 ON ${schema}.job (name, singleton_key) WHERE state IN ('active', 'retry', 'failed') AND policy = 'key_strict_fifo'$cmd$, tablename);
|
|
707
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT job_key_strict_fifo_singleton_key_check CHECK (NOT (policy = 'key_strict_fifo' AND singleton_key IS NULL))$cmd$, tablename);
|
|
708
|
+
END IF;
|
|
709
|
+
|
|
710
|
+
EXECUTE format('ALTER TABLE ${schema}.%I ADD CONSTRAINT cjc CHECK (name=%L)', tablename, queue_name);
|
|
711
|
+
EXECUTE format('ALTER TABLE ${schema}.job ATTACH PARTITION ${schema}.%I FOR VALUES IN (%L)', tablename, queue_name);
|
|
712
|
+
END;
|
|
713
|
+
$$
|
|
714
|
+
LANGUAGE plpgsql;
|
|
715
|
+
`
|
|
716
|
+
],
|
|
717
|
+
uninstall: [
|
|
718
|
+
// Restore previous version of create_queue function (without heartbeat_seconds)
|
|
719
|
+
`
|
|
720
|
+
CREATE OR REPLACE FUNCTION ${schema}.create_queue(queue_name text, options jsonb)
|
|
721
|
+
RETURNS VOID AS
|
|
722
|
+
$$
|
|
723
|
+
DECLARE
|
|
724
|
+
tablename varchar := CASE WHEN options->>'partition' = 'true'
|
|
725
|
+
THEN 'j' || encode(sha224(queue_name::bytea), 'hex')
|
|
726
|
+
ELSE 'job_common'
|
|
727
|
+
END;
|
|
728
|
+
queue_created_on timestamptz;
|
|
729
|
+
BEGIN
|
|
730
|
+
|
|
731
|
+
WITH q as (
|
|
732
|
+
INSERT INTO ${schema}.queue (
|
|
733
|
+
name,
|
|
734
|
+
policy,
|
|
735
|
+
retry_limit,
|
|
736
|
+
retry_delay,
|
|
737
|
+
retry_backoff,
|
|
738
|
+
retry_delay_max,
|
|
739
|
+
expire_seconds,
|
|
740
|
+
retention_seconds,
|
|
741
|
+
deletion_seconds,
|
|
742
|
+
warning_queued,
|
|
743
|
+
dead_letter,
|
|
744
|
+
partition,
|
|
745
|
+
table_name
|
|
746
|
+
)
|
|
747
|
+
VALUES (
|
|
748
|
+
queue_name,
|
|
749
|
+
options->>'policy',
|
|
750
|
+
COALESCE((options->>'retryLimit')::int, 2),
|
|
751
|
+
COALESCE((options->>'retryDelay')::int, 0),
|
|
752
|
+
COALESCE((options->>'retryBackoff')::bool, false),
|
|
753
|
+
(options->>'retryDelayMax')::int,
|
|
754
|
+
COALESCE((options->>'expireInSeconds')::int, 900),
|
|
755
|
+
COALESCE((options->>'retentionSeconds')::int, 1209600),
|
|
756
|
+
COALESCE((options->>'deleteAfterSeconds')::int, 604800),
|
|
757
|
+
COALESCE((options->>'warningQueueSize')::int, 0),
|
|
758
|
+
options->>'deadLetter',
|
|
759
|
+
COALESCE((options->>'partition')::bool, false),
|
|
760
|
+
tablename
|
|
761
|
+
)
|
|
762
|
+
ON CONFLICT DO NOTHING
|
|
763
|
+
RETURNING created_on
|
|
764
|
+
)
|
|
765
|
+
SELECT created_on into queue_created_on from q;
|
|
766
|
+
|
|
767
|
+
IF queue_created_on IS NULL OR options->>'partition' IS DISTINCT FROM 'true' THEN
|
|
768
|
+
RETURN;
|
|
769
|
+
END IF;
|
|
770
|
+
|
|
771
|
+
EXECUTE format('CREATE TABLE ${schema}.%I (LIKE ${schema}.job INCLUDING DEFAULTS)', tablename);
|
|
772
|
+
|
|
773
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD PRIMARY KEY (name, id)$cmd$, tablename);
|
|
774
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT q_fkey FOREIGN KEY (name) REFERENCES ${schema}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);
|
|
775
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT dlq_fkey FOREIGN KEY (dead_letter) REFERENCES ${schema}.queue (name) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED$cmd$, tablename);
|
|
776
|
+
|
|
777
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i5 ON ${schema}.job (name, start_after) INCLUDE (priority, created_on, id) WHERE state < 'active'$cmd$, tablename);
|
|
778
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i4 ON ${schema}.job (name, singleton_on, COALESCE(singleton_key, '')) WHERE state <> 'cancelled' AND singleton_on IS NOT NULL$cmd$, tablename);
|
|
779
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE INDEX job_i7 ON ${schema}.job (name, group_id) WHERE state = 'active' AND group_id IS NOT NULL$cmd$, tablename);
|
|
780
|
+
|
|
781
|
+
IF options->>'policy' = 'short' THEN
|
|
782
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i1 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state = 'created' AND policy = 'short'$cmd$, tablename);
|
|
783
|
+
ELSIF options->>'policy' = 'singleton' THEN
|
|
784
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i2 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state = 'active' AND policy = 'singleton'$cmd$, tablename);
|
|
785
|
+
ELSIF options->>'policy' = 'stately' THEN
|
|
786
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i3 ON ${schema}.job (name, state, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'stately'$cmd$, tablename);
|
|
787
|
+
ELSIF options->>'policy' = 'exclusive' THEN
|
|
788
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i6 ON ${schema}.job (name, COALESCE(singleton_key, '')) WHERE state <= 'active' AND policy = 'exclusive'$cmd$, tablename);
|
|
789
|
+
ELSIF options->>'policy' = 'key_strict_fifo' THEN
|
|
790
|
+
EXECUTE ${schema}.job_table_format($cmd$CREATE UNIQUE INDEX job_i8 ON ${schema}.job (name, singleton_key) WHERE state IN ('active', 'retry', 'failed') AND policy = 'key_strict_fifo'$cmd$, tablename);
|
|
791
|
+
EXECUTE ${schema}.job_table_format($cmd$ALTER TABLE ${schema}.job ADD CONSTRAINT job_key_strict_fifo_singleton_key_check CHECK (NOT (policy = 'key_strict_fifo' AND singleton_key IS NULL))$cmd$, tablename);
|
|
792
|
+
END IF;
|
|
793
|
+
|
|
794
|
+
EXECUTE format('ALTER TABLE ${schema}.%I ADD CONSTRAINT cjc CHECK (name=%L)', tablename, queue_name);
|
|
795
|
+
EXECUTE format('ALTER TABLE ${schema}.job ATTACH PARTITION ${schema}.%I FOR VALUES IN (%L)', tablename, queue_name);
|
|
796
|
+
END;
|
|
797
|
+
$$
|
|
798
|
+
LANGUAGE plpgsql;
|
|
799
|
+
`,
|
|
800
|
+
`ALTER TABLE ${schema}.queue DROP COLUMN heartbeat_seconds`,
|
|
801
|
+
`ALTER TABLE ${schema}.job DROP COLUMN heartbeat_seconds`,
|
|
802
|
+
`ALTER TABLE ${schema}.job DROP COLUMN heartbeat_on`
|
|
803
|
+
]
|
|
624
804
|
}
|
|
625
805
|
];
|
|
626
806
|
}
|
package/dist/plans.d.ts
CHANGED
|
@@ -87,6 +87,8 @@ interface InsertJobsOptions {
|
|
|
87
87
|
declare function insertJobs(schema: string, { table, name, returnId }: InsertJobsOptions): string;
|
|
88
88
|
declare function failJobsById(schema: string, table: string): string;
|
|
89
89
|
declare function failJobsByTimeout(schema: string, table: string, queues: string[]): string;
|
|
90
|
+
declare function failJobsByHeartbeat(schema: string, table: string, queues: string[]): string;
|
|
91
|
+
declare function touchJobs(schema: string, table: string): string;
|
|
90
92
|
declare function deletion(schema: string, table: string, queues: string[]): string;
|
|
91
93
|
declare function retryJobs(schema: string, table: string): string;
|
|
92
94
|
declare function getQueueStats(schema: string, table: string, queues: string[]): SqlQuery;
|
|
@@ -107,5 +109,5 @@ declare function setBamCompleted(schema: string, id: string): string;
|
|
|
107
109
|
declare function setBamFailed(schema: string, id: string, error: string): string;
|
|
108
110
|
declare function getBamStatus(schema: string): string;
|
|
109
111
|
declare function getBamEntries(schema: string): string;
|
|
110
|
-
export { create, insertVersion, getVersion, setVersion, versionTableExists, fetchNextJob, completeJobs, cancelJobs, resumeJobs, restoreJobs, retryJobs, findJobs, deleteJobsById, deleteAllJobs, deleteQueuedJobs, deleteStoredJobs, truncateTable, failJobsById, failJobsByTimeout, insertJobs, getTime, getSchedules, getSchedulesByQueue, schedule, unschedule, subscribe, unsubscribe, getQueuesForEvent, deletion, cacheQueueStats, updateQueue, createQueue, deleteQueue, getQueues, getQueueStats, trySetQueueMonitorTime, trySetQueueDeletionTime, trySetCronTime, trySetBamTime, locked, assertMigration, getJobById, insertWarning, getWarnings, getWarningsCount, deleteOldWarnings, createTableWarning, createIndexWarning, getBlockedKeys, getNextBamCommand, setBamCompleted, setBamFailed, getBamStatus, getBamEntries, serializeArrayParam, QUEUE_POLICIES, JOB_STATES, MIGRATE_RACE_MESSAGE, CREATE_RACE_MESSAGE, DEFAULT_SCHEMA, };
|
|
112
|
+
export { create, insertVersion, getVersion, setVersion, versionTableExists, fetchNextJob, completeJobs, cancelJobs, resumeJobs, restoreJobs, retryJobs, findJobs, deleteJobsById, deleteAllJobs, deleteQueuedJobs, deleteStoredJobs, truncateTable, failJobsById, failJobsByTimeout, failJobsByHeartbeat, touchJobs, insertJobs, getTime, getSchedules, getSchedulesByQueue, schedule, unschedule, subscribe, unsubscribe, getQueuesForEvent, deletion, cacheQueueStats, updateQueue, createQueue, deleteQueue, getQueues, getQueueStats, trySetQueueMonitorTime, trySetQueueDeletionTime, trySetCronTime, trySetBamTime, locked, assertMigration, getJobById, insertWarning, getWarnings, getWarningsCount, deleteOldWarnings, createTableWarning, createIndexWarning, getBlockedKeys, getNextBamCommand, setBamCompleted, setBamFailed, getBamStatus, getBamEntries, serializeArrayParam, QUEUE_POLICIES, JOB_STATES, MIGRATE_RACE_MESSAGE, CREATE_RACE_MESSAGE, DEFAULT_SCHEMA, };
|
|
111
113
|
//# sourceMappingURL=plans.d.ts.map
|
package/dist/plans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,EAAE,CAAA;CAClB;AAED,QAAA,MAAM,cAAc,WAAW,CAAA;AAC/B,QAAA,MAAM,oBAAoB,qBAAqB,CAAA;AAC/C,QAAA,MAAM,mBAAmB,mBAAmB,CAAA;AAM5C,QAAA,MAAM,UAAU;;;;;;;EAOd,CAAA;AAEF,QAAA,MAAM,cAAc;;;;;;;EAOlB,CAAA;AAeF,iBAAS,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,UA8BrF;
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
|
package/dist/plans.js
CHANGED
|
@@ -101,6 +101,7 @@ function createTableQueue(schema) {
|
|
|
101
101
|
warning_queued int NOT NULL default 0,
|
|
102
102
|
active_count int NOT NULL default 0,
|
|
103
103
|
total_count int NOT NULL default 0,
|
|
104
|
+
heartbeat_seconds int,
|
|
104
105
|
singletons_active text[],
|
|
105
106
|
monitor_on timestamp with time zone,
|
|
106
107
|
maintain_on timestamp with time zone,
|
|
@@ -283,11 +284,13 @@ function createTableJob(schema) {
|
|
|
283
284
|
keep_until timestamp with time zone NOT NULL default now() + interval '${QUEUE_DEFAULTS.retention_seconds}',
|
|
284
285
|
output jsonb,
|
|
285
286
|
dead_letter text,
|
|
286
|
-
policy text
|
|
287
|
+
policy text,
|
|
288
|
+
heartbeat_on timestamp with time zone,
|
|
289
|
+
heartbeat_seconds int
|
|
287
290
|
) PARTITION BY LIST (name)
|
|
288
291
|
`;
|
|
289
292
|
}
|
|
290
|
-
const JOB_COLUMNS_MIN = 'id, name, data, expire_seconds as "expireInSeconds", group_id as "groupId", group_tier as "groupTier"';
|
|
293
|
+
const JOB_COLUMNS_MIN = 'id, name, data, expire_seconds as "expireInSeconds", heartbeat_seconds as "heartbeatSeconds", group_id as "groupId", group_tier as "groupTier"';
|
|
291
294
|
const JOB_COLUMNS_ALL = `${JOB_COLUMNS_MIN},
|
|
292
295
|
policy,
|
|
293
296
|
state,
|
|
@@ -302,6 +305,7 @@ const JOB_COLUMNS_ALL = `${JOB_COLUMNS_MIN},
|
|
|
302
305
|
singleton_key as "singletonKey",
|
|
303
306
|
singleton_on as "singletonOn",
|
|
304
307
|
deletion_seconds as "deleteAfterSeconds",
|
|
308
|
+
heartbeat_on as "heartbeatOn",
|
|
305
309
|
created_on as "createdOn",
|
|
306
310
|
completed_on as "completedOn",
|
|
307
311
|
keep_until as "keepUntil",
|
|
@@ -355,7 +359,8 @@ function createQueueFunction(schema) {
|
|
|
355
359
|
warning_queued,
|
|
356
360
|
dead_letter,
|
|
357
361
|
partition,
|
|
358
|
-
table_name
|
|
362
|
+
table_name,
|
|
363
|
+
heartbeat_seconds
|
|
359
364
|
)
|
|
360
365
|
VALUES (
|
|
361
366
|
queue_name,
|
|
@@ -370,7 +375,8 @@ function createQueueFunction(schema) {
|
|
|
370
375
|
COALESCE((options->>'warningQueueSize')::int, ${QUEUE_DEFAULTS.warning_queued}),
|
|
371
376
|
options->>'deadLetter',
|
|
372
377
|
COALESCE((options->>'partition')::bool, ${QUEUE_DEFAULTS.partition}),
|
|
373
|
-
tablename
|
|
378
|
+
tablename,
|
|
379
|
+
(options->>'heartbeatSeconds')::int
|
|
374
380
|
)
|
|
375
381
|
ON CONFLICT DO NOTHING
|
|
376
382
|
RETURNING created_on
|
|
@@ -527,6 +533,9 @@ function updateQueue(schema, { deadLetter } = {}) {
|
|
|
527
533
|
retention_seconds = COALESCE((o.data->>'retentionSeconds')::int, retention_seconds),
|
|
528
534
|
deletion_seconds = COALESCE((o.data->>'deleteAfterSeconds')::int, deletion_seconds),
|
|
529
535
|
warning_queued = COALESCE((o.data->>'warningQueueSize')::int, warning_queued),
|
|
536
|
+
heartbeat_seconds = CASE WHEN o.data ? 'heartbeatSeconds'
|
|
537
|
+
THEN (o.data->>'heartbeatSeconds')::int
|
|
538
|
+
ELSE heartbeat_seconds END,
|
|
530
539
|
${deadLetter === undefined
|
|
531
540
|
? ''
|
|
532
541
|
: `dead_letter = CASE WHEN '${deadLetter}' IS DISTINCT FROM dead_letter THEN '${deadLetter}' ELSE dead_letter END,`}
|
|
@@ -550,6 +559,7 @@ function getQueues(schema, names) {
|
|
|
550
559
|
q.retention_seconds as "retentionSeconds",
|
|
551
560
|
q.deletion_seconds as "deleteAfterSeconds",
|
|
552
561
|
q.partition,
|
|
562
|
+
q.heartbeat_seconds as "heartbeatSeconds",
|
|
553
563
|
q.dead_letter as "deadLetter",
|
|
554
564
|
q.deferred_count as "deferredCount",
|
|
555
565
|
q.warning_queued as "warningQueueSize",
|
|
@@ -804,6 +814,7 @@ function fetchNextJob(options) {
|
|
|
804
814
|
UPDATE ${schema}.${table} j SET
|
|
805
815
|
state = '${JOB_STATES.active}',
|
|
806
816
|
started_on = now(),
|
|
817
|
+
heartbeat_on = now(),
|
|
807
818
|
retry_count = CASE WHEN started_on IS NOT NULL THEN retry_count + 1 ELSE retry_count END
|
|
808
819
|
FROM ${finalCte}
|
|
809
820
|
WHERE name = '${name}' AND j.id = ${finalCte}.id
|
|
@@ -887,7 +898,8 @@ function insertJobs(schema, { table, name, returnId = true }) {
|
|
|
887
898
|
retry_backoff,
|
|
888
899
|
retry_delay_max,
|
|
889
900
|
policy,
|
|
890
|
-
dead_letter
|
|
901
|
+
dead_letter,
|
|
902
|
+
heartbeat_seconds
|
|
891
903
|
)
|
|
892
904
|
SELECT
|
|
893
905
|
COALESCE(id, gen_random_uuid()) as id,
|
|
@@ -910,7 +922,8 @@ function insertJobs(schema, { table, name, returnId = true }) {
|
|
|
910
922
|
COALESCE("retryBackoff", q.retry_backoff, false) as retry_backoff,
|
|
911
923
|
COALESCE("retryDelayMax", q.retry_delay_max) as retry_delay_max,
|
|
912
924
|
q.policy,
|
|
913
|
-
COALESCE("deadLetter", q.dead_letter) as dead_letter
|
|
925
|
+
COALESCE("deadLetter", q.dead_letter) as dead_letter,
|
|
926
|
+
COALESCE("heartbeatSeconds", q.heartbeat_seconds) as heartbeat_seconds
|
|
914
927
|
FROM (
|
|
915
928
|
SELECT *,
|
|
916
929
|
CASE
|
|
@@ -934,7 +947,8 @@ function insertJobs(schema, { table, name, returnId = true }) {
|
|
|
934
947
|
"expireInSeconds" integer,
|
|
935
948
|
"deleteAfterSeconds" integer,
|
|
936
949
|
"retentionSeconds" integer,
|
|
937
|
-
"deadLetter" text
|
|
950
|
+
"deadLetter" text,
|
|
951
|
+
"heartbeatSeconds" integer
|
|
938
952
|
)
|
|
939
953
|
) j
|
|
940
954
|
JOIN ${schema}.queue q ON q.name = '${name}'
|
|
@@ -955,6 +969,27 @@ function failJobsByTimeout(schema, table, queues) {
|
|
|
955
969
|
const output = '\'{ "value": { "message": "job timed out" } }\'::jsonb';
|
|
956
970
|
return locked(schema, failJobs(schema, table, where, output), table + 'failJobsByTimeout');
|
|
957
971
|
}
|
|
972
|
+
function failJobsByHeartbeat(schema, table, queues) {
|
|
973
|
+
const where = `state = '${JOB_STATES.active}'
|
|
974
|
+
AND heartbeat_seconds IS NOT NULL
|
|
975
|
+
AND (heartbeat_on + heartbeat_seconds * interval '1s') < now()
|
|
976
|
+
AND name = ANY(${serializeArrayParam(queues)})`;
|
|
977
|
+
const output = '\'{ "value": { "message": "job heartbeat timeout" } }\'::jsonb';
|
|
978
|
+
return locked(schema, failJobs(schema, table, where, output), table + 'failJobsByHeartbeat');
|
|
979
|
+
}
|
|
980
|
+
function touchJobs(schema, table) {
|
|
981
|
+
return `
|
|
982
|
+
WITH results AS (
|
|
983
|
+
UPDATE ${schema}.${table}
|
|
984
|
+
SET heartbeat_on = now()
|
|
985
|
+
WHERE name = $1
|
|
986
|
+
AND id IN (SELECT UNNEST($2::uuid[]))
|
|
987
|
+
AND state = '${JOB_STATES.active}'
|
|
988
|
+
RETURNING 1
|
|
989
|
+
)
|
|
990
|
+
SELECT COUNT(*) FROM results
|
|
991
|
+
`;
|
|
992
|
+
}
|
|
958
993
|
function failJobs(schema, table, where, output) {
|
|
959
994
|
return `
|
|
960
995
|
WITH deleted_jobs AS (
|
|
@@ -987,7 +1022,9 @@ function failJobs(schema, table, where, output) {
|
|
|
987
1022
|
keep_until,
|
|
988
1023
|
policy,
|
|
989
1024
|
output,
|
|
990
|
-
dead_letter
|
|
1025
|
+
dead_letter,
|
|
1026
|
+
heartbeat_on,
|
|
1027
|
+
heartbeat_seconds
|
|
991
1028
|
)
|
|
992
1029
|
SELECT
|
|
993
1030
|
id,
|
|
@@ -1025,7 +1062,9 @@ function failJobs(schema, table, where, output) {
|
|
|
1025
1062
|
keep_until,
|
|
1026
1063
|
policy,
|
|
1027
1064
|
${output},
|
|
1028
|
-
dead_letter
|
|
1065
|
+
dead_letter,
|
|
1066
|
+
NULL as heartbeat_on,
|
|
1067
|
+
heartbeat_seconds
|
|
1029
1068
|
FROM deleted_jobs
|
|
1030
1069
|
ON CONFLICT DO NOTHING
|
|
1031
1070
|
RETURNING *
|
|
@@ -1055,7 +1094,9 @@ function failJobs(schema, table, where, output) {
|
|
|
1055
1094
|
keep_until,
|
|
1056
1095
|
policy,
|
|
1057
1096
|
output,
|
|
1058
|
-
dead_letter
|
|
1097
|
+
dead_letter,
|
|
1098
|
+
heartbeat_on,
|
|
1099
|
+
heartbeat_seconds
|
|
1059
1100
|
)
|
|
1060
1101
|
SELECT
|
|
1061
1102
|
id,
|
|
@@ -1081,7 +1122,9 @@ function failJobs(schema, table, where, output) {
|
|
|
1081
1122
|
keep_until,
|
|
1082
1123
|
policy,
|
|
1083
1124
|
${output},
|
|
1084
|
-
dead_letter
|
|
1125
|
+
dead_letter,
|
|
1126
|
+
NULL as heartbeat_on,
|
|
1127
|
+
heartbeat_seconds
|
|
1085
1128
|
FROM deleted_jobs
|
|
1086
1129
|
WHERE id NOT IN (SELECT id from retried_jobs)
|
|
1087
1130
|
RETURNING *
|
|
@@ -1291,4 +1334,4 @@ function getBamEntries(schema) {
|
|
|
1291
1334
|
ORDER BY version, created_on
|
|
1292
1335
|
`;
|
|
1293
1336
|
}
|
|
1294
|
-
export { create, insertVersion, getVersion, setVersion, versionTableExists, fetchNextJob, completeJobs, cancelJobs, resumeJobs, restoreJobs, retryJobs, findJobs, deleteJobsById, deleteAllJobs, deleteQueuedJobs, deleteStoredJobs, truncateTable, failJobsById, failJobsByTimeout, insertJobs, getTime, getSchedules, getSchedulesByQueue, schedule, unschedule, subscribe, unsubscribe, getQueuesForEvent, deletion, cacheQueueStats, updateQueue, createQueue, deleteQueue, getQueues, getQueueStats, trySetQueueMonitorTime, trySetQueueDeletionTime, trySetCronTime, trySetBamTime, locked, assertMigration, getJobById, insertWarning, getWarnings, getWarningsCount, deleteOldWarnings, createTableWarning, createIndexWarning, getBlockedKeys, getNextBamCommand, setBamCompleted, setBamFailed, getBamStatus, getBamEntries, serializeArrayParam, QUEUE_POLICIES, JOB_STATES, MIGRATE_RACE_MESSAGE, CREATE_RACE_MESSAGE, DEFAULT_SCHEMA, };
|
|
1337
|
+
export { create, insertVersion, getVersion, setVersion, versionTableExists, fetchNextJob, completeJobs, cancelJobs, resumeJobs, restoreJobs, retryJobs, findJobs, deleteJobsById, deleteAllJobs, deleteQueuedJobs, deleteStoredJobs, truncateTable, failJobsById, failJobsByTimeout, failJobsByHeartbeat, touchJobs, insertJobs, getTime, getSchedules, getSchedulesByQueue, schedule, unschedule, subscribe, unsubscribe, getQueuesForEvent, deletion, cacheQueueStats, updateQueue, createQueue, deleteQueue, getQueues, getQueueStats, trySetQueueMonitorTime, trySetQueueDeletionTime, trySetCronTime, trySetBamTime, locked, assertMigration, getJobById, insertWarning, getWarnings, getWarningsCount, deleteOldWarnings, createTableWarning, createIndexWarning, getBlockedKeys, getNextBamCommand, setBamCompleted, setBamFailed, getBamStatus, getBamEntries, serializeArrayParam, QUEUE_POLICIES, JOB_STATES, MIGRATE_RACE_MESSAGE, CREATE_RACE_MESSAGE, DEFAULT_SCHEMA, };
|
package/dist/types.d.ts
CHANGED
|
@@ -70,14 +70,65 @@ export interface ResolvedConstructorOptions extends ConstructorOptions {
|
|
|
70
70
|
maintenanceIntervalSeconds: number;
|
|
71
71
|
bamIntervalSeconds: number;
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Options for a queue. All retry, expiration, and retention options set on a
|
|
75
|
+
* queue will be inherited by each job in the queue unless they are overridden.
|
|
76
|
+
*/
|
|
73
77
|
export interface QueueOptions {
|
|
78
|
+
/**
|
|
79
|
+
* How many seconds a job may be in active state before being retried or
|
|
80
|
+
* failed. Must be >=1. The default is 15 minutes.
|
|
81
|
+
* @default 900
|
|
82
|
+
*/
|
|
74
83
|
expireInSeconds?: number;
|
|
84
|
+
/**
|
|
85
|
+
* How many seconds a job may be in created or retry state before it's
|
|
86
|
+
* deleted. Must be >=1. The default is 14 days.
|
|
87
|
+
* @default 1209600
|
|
88
|
+
*/
|
|
75
89
|
retentionSeconds?: number;
|
|
90
|
+
/**
|
|
91
|
+
* How long a job should be retained in the database after it's completed. Set
|
|
92
|
+
* to `0` to never delete completed jobs. The default is 7 days.
|
|
93
|
+
* @default 604800
|
|
94
|
+
*/
|
|
76
95
|
deleteAfterSeconds?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Number of times a job is allowed to be retried before it is marked as
|
|
98
|
+
* failed.
|
|
99
|
+
* @default 2
|
|
100
|
+
*/
|
|
77
101
|
retryLimit?: number;
|
|
102
|
+
/**
|
|
103
|
+
* Delay between retries of failed jobs, in seconds.
|
|
104
|
+
* @default 0
|
|
105
|
+
*/
|
|
78
106
|
retryDelay?: number;
|
|
107
|
+
/**
|
|
108
|
+
* Enables exponential backoff retries based on `retryDelay` instead of a
|
|
109
|
+
* fixed delay. Sets initial `retryDelay` to 1 if not set.
|
|
110
|
+
*
|
|
111
|
+
* A simplified function to get the delay between runs is: `retryDelay * 2 ^ retryCount`
|
|
112
|
+
* with some jitter.
|
|
113
|
+
*
|
|
114
|
+
* The function used to determine the backoff delay is:
|
|
115
|
+
* ```js
|
|
116
|
+
* Math.min(retryDelayMax, retryDelay * (2 ** Math.Min(16, retryCount) / 2 + 2 Math.Min(16, retryCount) / 2 * Math.random()))
|
|
117
|
+
* ```
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
79
120
|
retryBackoff?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Maximum delay between retries of failed jobs, in seconds. Only used when
|
|
123
|
+
* `retryBackoff` is `true`. The default is no limit.
|
|
124
|
+
*/
|
|
80
125
|
retryDelayMax?: number;
|
|
126
|
+
/**
|
|
127
|
+
* Expected heartbeat interval in seconds. When set, workers must send periodic
|
|
128
|
+
* heartbeats. If no heartbeat is received within this interval, the monitor will
|
|
129
|
+
* fail/retry the job. Must be >= 10. NULL = heartbeat disabled (default).
|
|
130
|
+
*/
|
|
131
|
+
heartbeatSeconds?: number;
|
|
81
132
|
}
|
|
82
133
|
export interface GroupOptions {
|
|
83
134
|
id: string;
|
|
@@ -114,13 +165,62 @@ export type InsertOptions = ConnectionOptions & {
|
|
|
114
165
|
returnId?: boolean;
|
|
115
166
|
};
|
|
116
167
|
export type SendOptions = JobOptions & QueueOptions & ConnectionOptions;
|
|
168
|
+
/**
|
|
169
|
+
* The queue policy dictates how jobs are allowed to be queued and processed.
|
|
170
|
+
*
|
|
171
|
+
* - `standard` supports all standard features such as deferral, priority, and
|
|
172
|
+
* throttling.
|
|
173
|
+
*
|
|
174
|
+
* - `short` only allows 1 job to be queued, unlimited active. Can be extended
|
|
175
|
+
* with `singletonKey`.
|
|
176
|
+
*
|
|
177
|
+
* - `singleton` only allows 1 job to be active, unlimited queued. Can be
|
|
178
|
+
* extended with `singletonKey`.
|
|
179
|
+
*
|
|
180
|
+
* - `stately` offers a combination of `short` and `singleton`; only allows 1
|
|
181
|
+
* job per state, queued and/or active. Can be extended with `singletonKey`.
|
|
182
|
+
*
|
|
183
|
+
* - `exclusive` only allows 1 job to be queued or active. Can be extended with
|
|
184
|
+
* singletonKey`.
|
|
185
|
+
*
|
|
186
|
+
* - `key_strict_fifo` ensures strict FIFO ordering per `singletonKey`. Requires
|
|
187
|
+
* `singletonKey` on every job. Blocks processing of jobs with the same key
|
|
188
|
+
* while any job with that key is active, in retry, or failed.
|
|
189
|
+
*/
|
|
117
190
|
export type QueuePolicy = 'standard' | 'short' | 'singleton' | 'stately' | 'exclusive' | 'key_strict_fifo' | (string & {});
|
|
118
191
|
export interface Queue extends QueueOptions {
|
|
192
|
+
/**
|
|
193
|
+
* The name of the queue.
|
|
194
|
+
*/
|
|
119
195
|
name: string;
|
|
196
|
+
/**
|
|
197
|
+
* The policy for the queue.
|
|
198
|
+
* @default 'standard'
|
|
199
|
+
*/
|
|
120
200
|
policy?: QueuePolicy;
|
|
201
|
+
/**
|
|
202
|
+
* If set to true, a dedicated table will be created in the partition scheme.
|
|
203
|
+
* This is more useful for a large queue in order to keep it from being a
|
|
204
|
+
* "noisy neighbor".
|
|
205
|
+
* @default false
|
|
206
|
+
*/
|
|
121
207
|
partition?: boolean;
|
|
208
|
+
/**
|
|
209
|
+
* The name of the queue's dead letter queue. When a job fails after all
|
|
210
|
+
* retries, the job's payload will be copied into said queue, copying the same
|
|
211
|
+
* retention and retry configuration as the original job.
|
|
212
|
+
*/
|
|
122
213
|
deadLetter?: string;
|
|
214
|
+
/**
|
|
215
|
+
* The number of jobs allowed to exist in the created or retry state before
|
|
216
|
+
* emitting a warning event.
|
|
217
|
+
*/
|
|
123
218
|
warningQueueSize?: number;
|
|
219
|
+
/**
|
|
220
|
+
* Expected heartbeat interval in seconds for jobs in this queue.
|
|
221
|
+
* When set, workers must send periodic heartbeats. NULL = heartbeat disabled (default).
|
|
222
|
+
*/
|
|
223
|
+
heartbeatSeconds?: number;
|
|
124
224
|
}
|
|
125
225
|
export interface QueueResult extends Queue {
|
|
126
226
|
deferredCount: number;
|
|
@@ -137,13 +237,39 @@ export type ScheduleOptions = SendOptions & {
|
|
|
137
237
|
key?: string;
|
|
138
238
|
};
|
|
139
239
|
export interface JobPollingOptions {
|
|
240
|
+
/**
|
|
241
|
+
* Interval to check for new jobs, in seconds. Must be >= `0.5` (500 ms).
|
|
242
|
+
* @default 2
|
|
243
|
+
*/
|
|
140
244
|
pollingIntervalSeconds?: number;
|
|
141
245
|
}
|
|
142
246
|
export interface JobFetchOptions {
|
|
247
|
+
/**
|
|
248
|
+
* If `true`, all job metadata will be included in the returned job object.
|
|
249
|
+
* @default false
|
|
250
|
+
*/
|
|
143
251
|
includeMetadata?: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* Allow jobs with a higher priority to be fetched before jobs with lower or
|
|
254
|
+
* no priority.
|
|
255
|
+
* @default true
|
|
256
|
+
*/
|
|
144
257
|
priority?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* Fetch jobs in the order they were created. Set to `false` to disable this
|
|
260
|
+
* sorting and improve performance when the order of jobs does not matter.
|
|
261
|
+
* @default true
|
|
262
|
+
*/
|
|
145
263
|
orderByCreatedOn?: boolean;
|
|
264
|
+
/**
|
|
265
|
+
* The number of jobs to fetch.
|
|
266
|
+
* @default 1
|
|
267
|
+
*/
|
|
146
268
|
batchSize?: number;
|
|
269
|
+
/**
|
|
270
|
+
* Fetch jobs even if they have a `startAfter` timestamp in the future.
|
|
271
|
+
* @default false
|
|
272
|
+
*/
|
|
147
273
|
ignoreStartAfter?: boolean;
|
|
148
274
|
}
|
|
149
275
|
export interface WorkConcurrencyOptions {
|
|
@@ -163,7 +289,13 @@ export interface WorkConcurrencyOptions {
|
|
|
163
289
|
*/
|
|
164
290
|
groupConcurrency?: number | GroupConcurrencyConfig;
|
|
165
291
|
}
|
|
166
|
-
export type WorkOptions = JobFetchOptions & JobPollingOptions & WorkConcurrencyOptions
|
|
292
|
+
export type WorkOptions = JobFetchOptions & JobPollingOptions & WorkConcurrencyOptions & {
|
|
293
|
+
/**
|
|
294
|
+
* Custom heartbeat refresh interval in seconds. Defaults to `heartbeatSeconds / 2`.
|
|
295
|
+
* Must be strictly less than `heartbeatSeconds`.
|
|
296
|
+
*/
|
|
297
|
+
heartbeatRefreshSeconds?: number;
|
|
298
|
+
};
|
|
167
299
|
export interface FetchGroupConcurrencyOptions {
|
|
168
300
|
groupConcurrency?: number | GroupConcurrencyConfig;
|
|
169
301
|
ignoreGroups?: string[] | null;
|
|
@@ -196,6 +328,7 @@ export interface Job<T = object> {
|
|
|
196
328
|
name: string;
|
|
197
329
|
data: T;
|
|
198
330
|
expireInSeconds: number;
|
|
331
|
+
heartbeatSeconds: number | null;
|
|
199
332
|
signal: AbortSignal;
|
|
200
333
|
groupId?: string | null;
|
|
201
334
|
groupTier?: string | null;
|
|
@@ -218,6 +351,8 @@ export interface JobWithMetadata<T = object> extends Job<T> {
|
|
|
218
351
|
completedOn: Date | null;
|
|
219
352
|
keepUntil: Date;
|
|
220
353
|
policy: QueuePolicy;
|
|
354
|
+
heartbeatOn: Date | null;
|
|
355
|
+
heartbeatSeconds: number | null;
|
|
221
356
|
deadLetter: string;
|
|
222
357
|
output: object;
|
|
223
358
|
}
|
|
@@ -235,6 +370,7 @@ export interface JobInsert<T = object> {
|
|
|
235
370
|
expireInSeconds?: number;
|
|
236
371
|
deleteAfterSeconds?: number;
|
|
237
372
|
retentionSeconds?: number;
|
|
373
|
+
heartbeatSeconds?: number;
|
|
238
374
|
group?: GroupOptions;
|
|
239
375
|
deadLetter?: string;
|
|
240
376
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-boss",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.12.0",
|
|
4
4
|
"description": "Queueing jobs in Postgres from Node.js like a boss",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"db:construct": "node --import=tsx -e 'console.log(require(\"./src\").getConstructionPlans())'"
|
|
45
45
|
},
|
|
46
46
|
"pgboss": {
|
|
47
|
-
"schema":
|
|
47
|
+
"schema": 30
|
|
48
48
|
},
|
|
49
49
|
"repository": {
|
|
50
50
|
"type": "git",
|