velocious 1.0.518 → 1.0.520
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 +43 -1
- package/build/background-jobs/json-socket.js +12 -0
- package/build/background-jobs/main.js +88 -2
- package/build/background-jobs/store.js +177 -8
- package/build/background-jobs/types.js +4 -2
- package/build/background-jobs/worker.js +113 -23
- package/build/configuration-types.js +27 -0
- package/build/configuration.js +18 -3
- package/build/database/record/attachments/handle.js +18 -0
- package/build/database/record/attachments/store.js +45 -0
- package/build/environment-handlers/node/cli/commands/generate/base-models.js +1 -1
- package/build/http-server/client/index.js +1 -1
- package/build/jobs/prune-terminal-background-jobs.js +67 -0
- package/build/src/background-jobs/json-socket.d.ts +12 -0
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.js +13 -1
- package/build/src/background-jobs/main.d.ts +22 -1
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +81 -3
- package/build/src/background-jobs/store.d.ts +53 -1
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +154 -8
- package/build/src/background-jobs/types.d.ts +14 -3
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +5 -3
- package/build/src/background-jobs/worker.d.ts +55 -7
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +108 -22
- package/build/src/configuration-types.d.ts +79 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +27 -1
- package/build/src/configuration.d.ts +4 -2
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +18 -3
- package/build/src/database/record/attachments/handle.d.ts +11 -0
- package/build/src/database/record/attachments/handle.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.js +17 -1
- package/build/src/database/record/attachments/store.d.ts +13 -0
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +40 -1
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +2 -2
- package/build/src/http-server/client/index.js +2 -2
- package/build/src/jobs/prune-terminal-background-jobs.d.ts +23 -0
- package/build/src/jobs/prune-terminal-background-jobs.d.ts.map +1 -0
- package/build/src/jobs/prune-terminal-background-jobs.js +61 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/background-jobs/json-socket.js +12 -0
- package/src/background-jobs/main.js +88 -2
- package/src/background-jobs/store.js +177 -8
- package/src/background-jobs/types.js +4 -2
- package/src/background-jobs/worker.js +113 -23
- package/src/configuration-types.js +27 -0
- package/src/configuration.js +18 -3
- package/src/database/record/attachments/handle.js +18 -0
- package/src/database/record/attachments/store.js +45 -0
- package/src/environment-handlers/node/cli/commands/generate/base-models.js +1 -1
- package/src/http-server/client/index.js +1 -1
- package/src/jobs/prune-terminal-background-jobs.js +67 -0
|
@@ -13,6 +13,7 @@ export default class BackgroundJobsStore {
|
|
|
13
13
|
databaseIdentifier: string | undefined;
|
|
14
14
|
logger: Logger;
|
|
15
15
|
_readyPromise: Promise<void> | null;
|
|
16
|
+
_queueConcurrencyReconciled: boolean;
|
|
16
17
|
/**
|
|
17
18
|
* Runs get database identifier.
|
|
18
19
|
* @returns {string} - Database identifier.
|
|
@@ -175,6 +176,40 @@ export default class BackgroundJobsStore {
|
|
|
175
176
|
markOrphanedJobs({ orphanedAfterMs }?: {
|
|
176
177
|
orphanedAfterMs?: number | undefined;
|
|
177
178
|
}): Promise<number>;
|
|
179
|
+
/**
|
|
180
|
+
* Deletes terminal job rows past their retention window so the jobs table
|
|
181
|
+
* does not grow unbounded (completed rows in particular accumulate forever
|
|
182
|
+
* otherwise). Batched by id — SELECT a page of ids, then
|
|
183
|
+
* `DELETE ... WHERE id IN (...)` — rather than `DELETE ... LIMIT`, which not
|
|
184
|
+
* every driver supports; each batch runs on its own connection so the sweep
|
|
185
|
+
* yields between batches instead of holding one long transaction.
|
|
186
|
+
* @param {object} [args] - Options.
|
|
187
|
+
* @param {number | null} [args.completedTtlMs] - Delete `completed` jobs whose `completed_at_ms` is older than this many ms. Falsy or `<= 0` disables completed pruning.
|
|
188
|
+
* @param {number | null} [args.failedTtlMs] - Delete terminal `failed`/`orphaned` jobs older than this many ms (by `failed_at_ms`/`orphaned_at_ms`). Falsy or `<= 0` disables.
|
|
189
|
+
* @param {number} [args.batchSize] - Max rows deleted per batch. Default `1000`.
|
|
190
|
+
* @returns {Promise<number>} - Total rows deleted.
|
|
191
|
+
*/
|
|
192
|
+
pruneTerminalJobs({ completedTtlMs, failedTtlMs, batchSize }?: {
|
|
193
|
+
completedTtlMs?: number | null | undefined;
|
|
194
|
+
failedTtlMs?: number | null | undefined;
|
|
195
|
+
batchSize?: number | undefined;
|
|
196
|
+
}): Promise<number>;
|
|
197
|
+
/**
|
|
198
|
+
* Deletes rows of one terminal status older than a cutoff, batch by batch,
|
|
199
|
+
* until a page returns fewer than `batchSize` rows.
|
|
200
|
+
* @param {object} args - Options.
|
|
201
|
+
* @param {string} args.status - Terminal status to prune.
|
|
202
|
+
* @param {string} args.column - Timestamp column compared against the cutoff.
|
|
203
|
+
* @param {number} args.cutoff - Delete rows whose column value is `<= cutoff`.
|
|
204
|
+
* @param {number} args.batchSize - Max rows per batch.
|
|
205
|
+
* @returns {Promise<number>} - Rows deleted for this status.
|
|
206
|
+
*/
|
|
207
|
+
_pruneStatusBatches({ status, column, cutoff, batchSize }: {
|
|
208
|
+
status: string;
|
|
209
|
+
column: string;
|
|
210
|
+
cutoff: number;
|
|
211
|
+
batchSize: number;
|
|
212
|
+
}): Promise<number>;
|
|
178
213
|
/**
|
|
179
214
|
* Runs clear all.
|
|
180
215
|
* @returns {Promise<void>} - Resolves when cleared.
|
|
@@ -260,13 +295,15 @@ export default class BackgroundJobsStore {
|
|
|
260
295
|
* @param {import("./types.js").BackgroundJobRow} args.job - Job row.
|
|
261
296
|
* @param {?} args.error - Error.
|
|
262
297
|
* @param {boolean} args.markOrphaned - Whether marking orphaned.
|
|
298
|
+
* @param {Record<string, ?>} [args.conditions] - Update fencing conditions. Defaults to the active-handoff lease match; the time-based orphan sweep overrides this with an id/status match so it can reclaim rows whose `handoff_id` is null (e.g. handed off by an older velocious before handoff-id fencing existed).
|
|
263
299
|
* @returns {Promise<import("./types.js").BackgroundJobRow | null>} - Updated job row when the lease transition won.
|
|
264
300
|
*/
|
|
265
|
-
_applyFailure({ db, job, error, markOrphaned }: {
|
|
301
|
+
_applyFailure({ db, job, error, markOrphaned, conditions }: {
|
|
266
302
|
db: import("../database/drivers/base.js").default;
|
|
267
303
|
job: import("./types.js").BackgroundJobRow;
|
|
268
304
|
error: unknown;
|
|
269
305
|
markOrphaned: boolean;
|
|
306
|
+
conditions?: Record<string, any> | undefined;
|
|
270
307
|
}): Promise<import("./types.js").BackgroundJobRow | null>;
|
|
271
308
|
/**
|
|
272
309
|
* Runs failure update.
|
|
@@ -416,6 +453,21 @@ export default class BackgroundJobsStore {
|
|
|
416
453
|
* @returns {Promise<void>} - Resolves when reconciled.
|
|
417
454
|
*/
|
|
418
455
|
_reconcileConcurrency(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
456
|
+
/**
|
|
457
|
+
* Reconciles queue-derived concurrency with the current configuration, once
|
|
458
|
+
* per process. Enqueue only consults config for new jobs, so a cap added,
|
|
459
|
+
* removed, or changed while a backlog exists otherwise leaves persisted rows
|
|
460
|
+
* stale: pre-cap jobs keep a null key and bypass the cap, post-removal jobs
|
|
461
|
+
* stay capped under a now-unconfigured key, and a changed numeric cap stays
|
|
462
|
+
* stale until the next enqueue. Bring the durable state in line with config:
|
|
463
|
+
* sync each configured queue's stored cap, adopt not-yet-keyed non-terminal
|
|
464
|
+
* jobs onto their queue key, and release non-terminal jobs from queue keys
|
|
465
|
+
* whose queue is no longer capped. Runs before {@link _reconcileConcurrency}
|
|
466
|
+
* so the rebuilt active counts reflect the adopted/released keys.
|
|
467
|
+
* @param {import("../database/drivers/base.js").default} db - Database connection.
|
|
468
|
+
* @returns {Promise<void>} - Resolves when reconciled.
|
|
469
|
+
*/
|
|
470
|
+
_reconcileQueueConcurrency(db: import("../database/drivers/base.js").default): Promise<void>;
|
|
419
471
|
/**
|
|
420
472
|
* Runs normalize number.
|
|
421
473
|
* @param {?} value - Input value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/store.js"],"names":[],"mappings":"AAyCA;IACE;;;;;OAKG;IACH,mDAHG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACvB,kBAAkB;KAC1C,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/store.js"],"names":[],"mappings":"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"}
|