@exellix/exellix-jobs 1.9.9 → 4.0.5
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 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -25
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs-logxer.d.ts +14 -0
- package/dist/jobs-logxer.d.ts.map +1 -0
- package/dist/jobs-logxer.js +51 -0
- package/dist/jobs-logxer.js.map +1 -0
- package/dist/worker/matrix-worker.d.ts.map +1 -1
- package/dist/worker/matrix-worker.js +18 -3
- package/dist/worker/matrix-worker.js.map +1 -1
- package/docs/diagnostics/jobs-catalog.json +34 -0
- package/docs/specs.md +4 -0
- package/examples/graph-engine-stub.mjs +0 -1
- package/examples/host-bootstrap.mjs +6 -2
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -93,6 +93,9 @@ See `docs/specs.md` §12. Implemented keys include:
|
|
|
93
93
|
| `EXELLIX_JOBS_HTTP_ENABLED` | Start HTTP server |
|
|
94
94
|
| `EXELLIX_JOBS_API_KEY` | Mutating HTTP routes |
|
|
95
95
|
| `EXELLIX_JOBS_ACTIVIX_SCHEDULER_PROBE` | Activix lane on dependency probe |
|
|
96
|
+
| `EXELLIX_JOBS_LOGS_LEVEL` | Worker/CLI Logxer level (`warn` default; see `@x12i/logxer`) |
|
|
97
|
+
|
|
98
|
+
Logging uses **`@x12i/logxer` ^4.4** (`getJobsLogxer`, in-process `getJobLogs`, diagnostic catalog codes under `docs/diagnostics/`). Override with `matrixLogxer` on `createMatrixWorker` if you need a custom instance.
|
|
96
99
|
|
|
97
100
|
## HA note
|
|
98
101
|
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAG/F,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,yBAAyB,CAAC;CAC1C,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
|
+
import { DebugLogAbstract, runWithLogContext } from '@x12i/logxer';
|
|
4
5
|
import { loadJobsEnv } from './env.js';
|
|
6
|
+
import { getJobsLogxer } from './jobs-logxer.js';
|
|
5
7
|
import { createMatrixWorker } from './worker/matrix-worker.js';
|
|
6
8
|
import { startMatrixWorkerHttp } from './http/server.js';
|
|
7
9
|
async function loadDotenvIfAvailable() {
|
|
@@ -12,9 +14,13 @@ function defaultHostBootstrapPath() {
|
|
|
12
14
|
return join(dirname(fileURLToPath(import.meta.url)), '..', 'examples', 'host-bootstrap.mjs');
|
|
13
15
|
}
|
|
14
16
|
async function loadHostBootstrap() {
|
|
17
|
+
const log = getJobsLogxer();
|
|
15
18
|
const p = process.env.EXELLIX_JOBS_HOST_BOOTSTRAP ?? defaultHostBootstrapPath();
|
|
16
19
|
if (!process.env.EXELLIX_JOBS_HOST_BOOTSTRAP) {
|
|
17
|
-
|
|
20
|
+
log.infoCode('JOBS_HOST_BOOTSTRAP_DEFAULT', {
|
|
21
|
+
debugKind: DebugLogAbstract.TRACE,
|
|
22
|
+
bootstrapPath: p,
|
|
23
|
+
});
|
|
18
24
|
}
|
|
19
25
|
const href = p.startsWith('file:') ? p : pathToFileURL(resolve(p)).href;
|
|
20
26
|
const mod = (await import(href));
|
|
@@ -38,32 +44,46 @@ function mergeWorkerOptionsFromEnv(options) {
|
|
|
38
44
|
}
|
|
39
45
|
async function cmdServe() {
|
|
40
46
|
await loadDotenvIfAvailable();
|
|
41
|
-
const factory = await loadHostBootstrap();
|
|
42
|
-
const { workerOptions } = await factory();
|
|
43
|
-
const worker = await createMatrixWorker(mergeWorkerOptionsFromEnv(workerOptions));
|
|
44
47
|
const env = loadJobsEnv();
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
for (const ev of ['SIGINT', 'SIGTERM']) {
|
|
63
|
-
process.on(ev, () => {
|
|
64
|
-
void shutdown().then(() => process.exit(0));
|
|
48
|
+
const log = getJobsLogxer();
|
|
49
|
+
await runWithLogContext({
|
|
50
|
+
correlationId: env.matrixWorkerId ? `jobs-serve:${env.matrixWorkerId}` : 'jobs-serve',
|
|
51
|
+
sessionId: env.matrixWorkerId,
|
|
52
|
+
}, async () => {
|
|
53
|
+
const factory = await loadHostBootstrap();
|
|
54
|
+
const { workerOptions } = await factory();
|
|
55
|
+
const worker = await createMatrixWorker(mergeWorkerOptionsFromEnv(workerOptions));
|
|
56
|
+
const ac = new AbortController();
|
|
57
|
+
const { signal } = ac;
|
|
58
|
+
const supervised = worker.startSupervised(signal).catch((err) => {
|
|
59
|
+
log.errorCode('JOBS_SUPERVISOR_FAILED', {
|
|
60
|
+
debugKind: DebugLogAbstract.ANOMALY,
|
|
61
|
+
error: err instanceof Error ? err.message : String(err),
|
|
62
|
+
...(err instanceof Error && err.stack ? { stack: err.stack } : {}),
|
|
63
|
+
});
|
|
64
|
+
process.exitCode = 1;
|
|
65
65
|
});
|
|
66
|
-
|
|
66
|
+
let http;
|
|
67
|
+
if (env.httpEnabled) {
|
|
68
|
+
http = await startMatrixWorkerHttp({ worker, env });
|
|
69
|
+
log.infoCode('JOBS_HTTP_LISTENING', {
|
|
70
|
+
debugKind: DebugLogAbstract.EVENT,
|
|
71
|
+
port: env.port,
|
|
72
|
+
httpPrefix: env.httpPrefix,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const shutdown = async () => {
|
|
76
|
+
ac.abort();
|
|
77
|
+
await supervised;
|
|
78
|
+
await http?.close();
|
|
79
|
+
await worker.close();
|
|
80
|
+
};
|
|
81
|
+
for (const ev of ['SIGINT', 'SIGTERM']) {
|
|
82
|
+
process.on(ev, () => {
|
|
83
|
+
void shutdown().then(() => process.exit(0));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
67
87
|
}
|
|
68
88
|
async function main() {
|
|
69
89
|
const cmd = process.argv[2] ?? 'help';
|
|
@@ -87,6 +107,7 @@ Environment (subset — see README and docs/specs.md §12):
|
|
|
87
107
|
Mutating graph routes: PATCH /v1/graphs/:id/operational | /publication (see docs/troubleshooting.md).
|
|
88
108
|
MATRIX_WORKER_ID Worker identity in /health and /workers/status.
|
|
89
109
|
EXELLIX_JOBS_ACTIVIX_SCHEDULER_PROBE When true, /health?probe=dependencies includes Activix lane.
|
|
110
|
+
EXELLIX_JOBS_LOGS_LEVEL Logxer level for this process (canonical; legacy EXELLIX_JOBS_LOG_LEVEL).
|
|
90
111
|
execution_db / config_db DB names for persistence openers (default exellix-runtime / exellix).
|
|
91
112
|
`);
|
|
92
113
|
return;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAkC,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAMzD,KAAK,UAAU,qBAAqB;IAClC,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC1C,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,wBAAwB,EAAE,CAAC;IAChF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { wrapMatrixGraphExecutor, type WrapMatrixGraphExecutorOptions } from './
|
|
|
5
5
|
export { startMatrixWorkerHttp, type StartMatrixWorkerHttpOptions } from './http/server.js';
|
|
6
6
|
export { buildJobsLivenessPayload, runJobsConnectivityProbe } from './http/health.js';
|
|
7
7
|
export { loadJobsEnv, type JobsEnv } from './env.js';
|
|
8
|
+
export { createJobsLogxer, getJobsLogxer, createMatrixLogxerQueryableClient, } from './jobs-logxer.js';
|
|
8
9
|
export { createJobsMetrics, type JobsMetrics } from './metrics.js';
|
|
9
10
|
export type { ExellixMatrixPersistenceHandles, ExellixMatrixPersistenceProbeHandles, MatrixPersistenceCollection, OpenExellixMatrixPersistenceOptions, } from './collections.js';
|
|
10
11
|
export { openExellixMatrixPersistenceFromXmemoryStore } from './xmemory-matrix-tier.js';
|
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,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,2CAA2C,EAAE,MAAM,6BAA6B,CAAC;AAC1F,YAAY,EAAE,kDAAkD,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,KAAK,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EACV,+BAA+B,EAC/B,oCAAoC,EACpC,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4CAA4C,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,gDAAgD,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,sCAAsC,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,2CAA2C,EAAE,MAAM,6BAA6B,CAAC;AAC1F,YAAY,EAAE,kDAAkD,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAE,KAAK,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,iCAAiC,GAClC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EACV,+BAA+B,EAC/B,oCAAoC,EACpC,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4CAA4C,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,gDAAgD,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,sCAAsC,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { wrapMatrixGraphExecutor } from './worker/wrap-execute-graph.js';
|
|
|
4
4
|
export { startMatrixWorkerHttp } from './http/server.js';
|
|
5
5
|
export { buildJobsLivenessPayload, runJobsConnectivityProbe } from './http/health.js';
|
|
6
6
|
export { loadJobsEnv } from './env.js';
|
|
7
|
+
export { createJobsLogxer, getJobsLogxer, createMatrixLogxerQueryableClient, } from './jobs-logxer.js';
|
|
7
8
|
export { createJobsMetrics } from './metrics.js';
|
|
8
9
|
export { openExellixMatrixPersistenceFromXmemoryStore } from './xmemory-matrix-tier.js';
|
|
9
10
|
export { openExellixMatrixPersistenceFromRuntimeFactories } from './runtime-matrix-tier.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAKlB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,2CAA2C,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,uBAAuB,EAAuC,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAqC,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAgB,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAC;AAOnE,OAAO,EAAE,4CAA4C,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,gDAAgD,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,sCAAsC,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAKlB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,2CAA2C,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EAAE,uBAAuB,EAAuC,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAqC,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAgB,MAAM,UAAU,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,iCAAiC,GAClC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAC;AAOnE,OAAO,EAAE,4CAA4C,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,gDAAgD,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,sCAAsC,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createMatrixLogxerQueryableClient } from '@exellix/exellix-runtime';
|
|
2
|
+
import { type Logxer } from '@x12i/logxer';
|
|
3
|
+
/**
|
|
4
|
+
* Package-scoped Logxer for the matrix worker process.
|
|
5
|
+
*
|
|
6
|
+
* Levels: **`EXELLIX_JOBS_LOGS_LEVEL`** (canonical) or legacy **`EXELLIX_JOBS_LOG_LEVEL`**.
|
|
7
|
+
* In-process **`getJobLogs`** / **`scopeLogs`** use query store + cache (Logxer 4.4+).
|
|
8
|
+
* Diagnostic codes: [`docs/diagnostics/jobs-catalog.json`](../docs/diagnostics/jobs-catalog.json).
|
|
9
|
+
*/
|
|
10
|
+
export declare function createJobsLogxer(): Logxer;
|
|
11
|
+
/** Shared default for worker dispatch, CLI, and host bootstrap when none is injected. */
|
|
12
|
+
export declare function getJobsLogxer(): Logxer;
|
|
13
|
+
export { createMatrixLogxerQueryableClient };
|
|
14
|
+
//# sourceMappingURL=jobs-logxer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs-logxer.d.ts","sourceRoot":"","sources":["../src/jobs-logxer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAwBzD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAczC;AAED,yFAAyF;AACzF,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { createMatrixLogxerQueryableClient } from '@exellix/exellix-runtime';
|
|
5
|
+
import { createLogxer } from '@x12i/logxer';
|
|
6
|
+
const PACKAGE_NAME = '@exellix/exellix-jobs';
|
|
7
|
+
const ENV_PREFIX = 'EXELLIX_JOBS';
|
|
8
|
+
let defaultLogxer;
|
|
9
|
+
let dotenvAppliedForLogxer = false;
|
|
10
|
+
function ensureProcessEnvFromDotenvBeforeLogxer() {
|
|
11
|
+
if (dotenvAppliedForLogxer)
|
|
12
|
+
return;
|
|
13
|
+
dotenvAppliedForLogxer = true;
|
|
14
|
+
const registerPath = '@x12i/env/register';
|
|
15
|
+
void import(registerPath).catch(() => undefined);
|
|
16
|
+
}
|
|
17
|
+
function resolveJobsDiagnosticCatalogPath() {
|
|
18
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const candidates = [
|
|
20
|
+
join(here, '..', 'docs', 'diagnostics', 'jobs-catalog.json'),
|
|
21
|
+
join(here, '..', '..', 'docs', 'diagnostics', 'jobs-catalog.json'),
|
|
22
|
+
];
|
|
23
|
+
return candidates.find((p) => existsSync(p));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Package-scoped Logxer for the matrix worker process.
|
|
27
|
+
*
|
|
28
|
+
* Levels: **`EXELLIX_JOBS_LOGS_LEVEL`** (canonical) or legacy **`EXELLIX_JOBS_LOG_LEVEL`**.
|
|
29
|
+
* In-process **`getJobLogs`** / **`scopeLogs`** use query store + cache (Logxer 4.4+).
|
|
30
|
+
* Diagnostic codes: [`docs/diagnostics/jobs-catalog.json`](../docs/diagnostics/jobs-catalog.json).
|
|
31
|
+
*/
|
|
32
|
+
export function createJobsLogxer() {
|
|
33
|
+
ensureProcessEnvFromDotenvBeforeLogxer();
|
|
34
|
+
const catalogPath = resolveJobsDiagnosticCatalogPath();
|
|
35
|
+
return createLogxer({ packageName: PACKAGE_NAME, envPrefix: ENV_PREFIX, debugNamespace: 'exellix-jobs' }, {
|
|
36
|
+
queryStore: { enabled: true },
|
|
37
|
+
queryCache: { enabled: true },
|
|
38
|
+
diagnostics: {
|
|
39
|
+
enabled: true,
|
|
40
|
+
...(catalogPath ? { catalogPath } : {}),
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** Shared default for worker dispatch, CLI, and host bootstrap when none is injected. */
|
|
45
|
+
export function getJobsLogxer() {
|
|
46
|
+
if (!defaultLogxer)
|
|
47
|
+
defaultLogxer = createJobsLogxer();
|
|
48
|
+
return defaultLogxer;
|
|
49
|
+
}
|
|
50
|
+
export { createMatrixLogxerQueryableClient };
|
|
51
|
+
//# sourceMappingURL=jobs-logxer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs-logxer.js","sourceRoot":"","sources":["../src/jobs-logxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AAEzD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC,IAAI,aAAiC,CAAC;AACtC,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,SAAS,sCAAsC;IAC7C,IAAI,sBAAsB;QAAE,OAAO;IACnC,sBAAsB,GAAG,IAAI,CAAC;IAC9B,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gCAAgC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,CAAC;KACnE,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,sCAAsC,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,gCAAgC,EAAE,CAAC;IACvD,OAAO,YAAY,CACjB,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,EACpF;QACE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7B,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7B,WAAW,EAAE;YACX,OAAO,EAAE,IAAI;YACb,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC;KACF,CACF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,aAAa;QAAE,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACvD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix-worker.d.ts","sourceRoot":"","sources":["../../src/worker/matrix-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,
|
|
1
|
+
{"version":3,"file":"matrix-worker.d.ts","sourceRoot":"","sources":["../../src/worker/matrix-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { createExecutionMatrixClaimPauseController, createExecutionMatrixRuntime, createExellixConfigStore, } from '@exellix/exellix-runtime';
|
|
1
|
+
import { createExecutionMatrixClaimPauseController, createExecutionMatrixRuntime, createExellixConfigStore, createMatrixLogxerQueryableClient, } from '@exellix/exellix-runtime';
|
|
2
|
+
import { DebugLogAbstract } from '@x12i/logxer';
|
|
3
|
+
import { getJobsLogxer } from '../jobs-logxer.js';
|
|
2
4
|
import { createJobsMetrics } from '../metrics.js';
|
|
3
5
|
import { MatrixCycleState } from './cycle-state.js';
|
|
4
6
|
import { runMatrixContinuouslyByCatalogIdWithMetrics } from './continuous-loop.js';
|
|
@@ -6,6 +8,7 @@ import { discoverMatrixAssignments } from './discovery.js';
|
|
|
6
8
|
import { wrapMatrixGraphExecutor } from './wrap-execute-graph.js';
|
|
7
9
|
export async function createMatrixWorker(options) {
|
|
8
10
|
await options.persistence.init?.();
|
|
11
|
+
const matrixLogxer = options.matrixLogxer ?? getJobsLogxer();
|
|
9
12
|
const runtime = createExecutionMatrixRuntime(options.persistence.rows, options.persistence.failures, {
|
|
10
13
|
snapshots: options.persistence.snapshots,
|
|
11
14
|
serializeClaims: true,
|
|
@@ -46,11 +49,19 @@ export async function createMatrixWorker(options) {
|
|
|
46
49
|
shouldClaimNext: () => pauseController.shouldClaimNext(),
|
|
47
50
|
sourceResolver: options.sourceResolver,
|
|
48
51
|
matrixActivix: options.matrixActivix,
|
|
49
|
-
matrixLogxer
|
|
52
|
+
matrixLogxer,
|
|
50
53
|
executeOverrides: options.executeOverrides,
|
|
51
54
|
runtimeScope: options.runtimeScope,
|
|
52
|
-
runtimeObjects: options.runtimeObjects
|
|
55
|
+
runtimeObjects: options.runtimeObjects ??
|
|
56
|
+
{
|
|
57
|
+
logxerClient: createMatrixLogxerQueryableClient(matrixLogxer),
|
|
58
|
+
},
|
|
53
59
|
};
|
|
60
|
+
matrixLogxer.infoCode('JOBS_WORKER_READY', {
|
|
61
|
+
debugKind: DebugLogAbstract.EVENT,
|
|
62
|
+
...(options.matrixWorkerId !== undefined ? { matrixWorkerId: options.matrixWorkerId } : {}),
|
|
63
|
+
maxConcurrentClaims,
|
|
64
|
+
});
|
|
54
65
|
const getStatus = (filter) => {
|
|
55
66
|
const activeJobsByGraphId = {};
|
|
56
67
|
for (const [gid, n] of inFlight) {
|
|
@@ -86,6 +97,10 @@ export async function createMatrixWorker(options) {
|
|
|
86
97
|
}, metrics)));
|
|
87
98
|
};
|
|
88
99
|
const close = async () => {
|
|
100
|
+
matrixLogxer.infoCode('JOBS_SHUTDOWN', {
|
|
101
|
+
debugKind: DebugLogAbstract.EVENT,
|
|
102
|
+
...(options.matrixWorkerId !== undefined ? { matrixWorkerId: options.matrixWorkerId } : {}),
|
|
103
|
+
});
|
|
89
104
|
await options.persistence.close();
|
|
90
105
|
};
|
|
91
106
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix-worker.js","sourceRoot":"","sources":["../../src/worker/matrix-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,4BAA4B,EAC5B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"matrix-worker.js","sourceRoot":"","sources":["../../src/worker/matrix-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"JOBS_WORKER_READY": {
|
|
3
|
+
"level": "info",
|
|
4
|
+
"message": "Matrix worker initialized",
|
|
5
|
+
"summary": "Persistence and dispatch deps are ready for supervised loops."
|
|
6
|
+
},
|
|
7
|
+
"JOBS_SUPERVISOR_FAILED": {
|
|
8
|
+
"level": "error",
|
|
9
|
+
"message": "Matrix supervisor loop failed",
|
|
10
|
+
"summary": "A supervised matrix loop exited with an error.",
|
|
11
|
+
"impact": "Claims and graph execution may stop until the process is restarted.",
|
|
12
|
+
"remediation": ["Inspect the error stack and matrix catalog configuration.", "Check Mongo connectivity and graph-engine bootstrap."]
|
|
13
|
+
},
|
|
14
|
+
"JOBS_HTTP_LISTENING": {
|
|
15
|
+
"level": "info",
|
|
16
|
+
"message": "Operator HTTP server listening",
|
|
17
|
+
"summary": "Fastify is serving health, metrics, and operator routes."
|
|
18
|
+
},
|
|
19
|
+
"JOBS_SHUTDOWN": {
|
|
20
|
+
"level": "info",
|
|
21
|
+
"message": "Matrix worker shutting down",
|
|
22
|
+
"summary": "Supervisor and HTTP server are stopping after a signal."
|
|
23
|
+
},
|
|
24
|
+
"JOBS_HOST_BOOTSTRAP_DEFAULT": {
|
|
25
|
+
"level": "debug",
|
|
26
|
+
"message": "Using default host bootstrap module",
|
|
27
|
+
"summary": "EXELLIX_JOBS_HOST_BOOTSTRAP was not set."
|
|
28
|
+
},
|
|
29
|
+
"JOBS_GRAPH_BOOTSTRAP_DEFAULT": {
|
|
30
|
+
"level": "debug",
|
|
31
|
+
"message": "Using default graph-engine bootstrap module",
|
|
32
|
+
"summary": "EXELLIX_JOBS_GRAPH_ENGINE_BOOTSTRAP was not set."
|
|
33
|
+
}
|
|
34
|
+
}
|
package/docs/specs.md
CHANGED
|
@@ -227,6 +227,10 @@ Optional: **`histogram`** for **`executeGraph`** duration per **`graph_id`**.
|
|
|
227
227
|
| **`EXELLIX_JOBS_GRAPH_SCHEDULABILITY_STRICT`** | Maps to **`graphSchedulabilityRequireConfig`** | `false` |
|
|
228
228
|
| **`EXELLIX_JOBS_HTTP_ENABLED`** | Start HTTP server | `true` |
|
|
229
229
|
| **`EXELLIX_JOBS_ACTIVIX_SCHEDULER_PROBE`** | Include Activix scheduler lane on **`/health?probe=dependencies`** | `false` |
|
|
230
|
+
| **`EXELLIX_JOBS_LOGS_LEVEL`** | Package Logxer level for worker + CLI (canonical; legacy **`EXELLIX_JOBS_LOG_LEVEL`**) | `warn` |
|
|
231
|
+
| **`EXELLIX_JOBS_LOG_TO_CONSOLE`** / **`EXELLIX_JOBS_LOG_FORMAT`** | Logxer ERC console + format (see `@x12i/logxer` package-usage) | console on, `text` |
|
|
232
|
+
|
|
233
|
+
Matrix claim logs use the same **`getJobsLogxer()`** instance unless the host passes **`matrixLogxer`** on **`createMatrixWorker`**. Orchestration falls back to **`EXELLIX_RUNTIME_*`** only when jobs does not install Logxer (not the default after v1.9.9). Diagnostic codes: [`diagnostics/jobs-catalog.json`](./diagnostics/jobs-catalog.json).
|
|
230
234
|
|
|
231
235
|
(Extend as needed; document every env key in **jobs** README.)
|
|
232
236
|
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
15
15
|
import { dirname, join, resolve } from 'node:path';
|
|
16
16
|
import { createExellixMatrixDataTier } from '@exellix/exellix-runtime';
|
|
17
|
-
import {
|
|
17
|
+
import { DebugLogAbstract } from '@x12i/logxer';
|
|
18
|
+
import { getJobsLogxer, loadJobsEnv } from '@exellix/exellix-jobs';
|
|
18
19
|
|
|
19
20
|
const examplesDir = dirname(fileURLToPath(import.meta.url));
|
|
20
21
|
const defaultGraphBootstrap = join(examplesDir, 'graph-engine-stub.mjs');
|
|
@@ -22,7 +23,10 @@ const defaultGraphBootstrap = join(examplesDir, 'graph-engine-stub.mjs');
|
|
|
22
23
|
async function loadGraphEngineBootstrap() {
|
|
23
24
|
const path = process.env.EXELLIX_JOBS_GRAPH_ENGINE_BOOTSTRAP ?? defaultGraphBootstrap;
|
|
24
25
|
if (!process.env.EXELLIX_JOBS_GRAPH_ENGINE_BOOTSTRAP) {
|
|
25
|
-
|
|
26
|
+
getJobsLogxer().infoCode('JOBS_GRAPH_BOOTSTRAP_DEFAULT', {
|
|
27
|
+
debugKind: DebugLogAbstract.TRACE,
|
|
28
|
+
bootstrapPath: path,
|
|
29
|
+
});
|
|
26
30
|
}
|
|
27
31
|
const href = path.startsWith('file:') ? path : pathToFileURL(resolve(path)).href;
|
|
28
32
|
const mod = await import(href);
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exellix/exellix-jobs",
|
|
3
|
-
"version": "
|
|
4
|
-
,
|
|
3
|
+
"version": "4.0.5",
|
|
5
4
|
"description": "Execution-matrix worker: claims, run-loop, operator HTTP, and Prometheus metrics (XMemory-backed persistence).",
|
|
6
5
|
"type": "module",
|
|
7
6
|
"engines": {
|
|
@@ -48,7 +47,8 @@
|
|
|
48
47
|
}
|
|
49
48
|
},
|
|
50
49
|
"dependencies": {
|
|
51
|
-
"@exellix/exellix-runtime": "^
|
|
50
|
+
"@exellix/exellix-runtime": "^4.1.10",
|
|
51
|
+
"@x12i/logxer": "^4.6.0",
|
|
52
52
|
"fastify": "^5.8.5",
|
|
53
53
|
"p-limit": "^7.3.0",
|
|
54
54
|
"prom-client": "^15.1.3"
|