@fnndsc/salsa 3.8.1 → 3.10.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/dist/dag/feedGraph.d.ts +4 -0
- package/dist/dag/feedGraph.js +3 -0
- package/dist/dag/feedGraph.js.map +1 -1
- package/dist/dag/feedJoins.d.ts +9 -0
- package/dist/dag/feedJoins.js +15 -0
- package/dist/dag/feedJoins.js.map +1 -1
- package/dist/dag/feedLoad.js +22 -3
- package/dist/dag/feedLoad.js.map +1 -1
- package/dist/pipelines/diagram.js +60 -6
- package/dist/pipelines/diagram.js.map +1 -1
- package/dist/pipelines/index.d.ts +29 -0
- package/dist/pipelines/index.js +33 -1
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/manifest.js +1 -6
- package/dist/pipelines/manifest.js.map +1 -1
- package/dist/pipelines/packages.d.ts +44 -0
- package/dist/pipelines/packages.js +181 -0
- package/dist/pipelines/packages.js.map +1 -0
- package/dist/retrieve/watch.d.ts +16 -2
- package/dist/retrieve/watch.js +124 -54
- package/dist/retrieve/watch.js.map +1 -1
- package/dist/vfs/dispatcher.js +9 -0
- package/dist/vfs/dispatcher.js.map +1 -1
- package/dist/vfs/providers/pacsGrammar.d.ts +69 -0
- package/dist/vfs/providers/pacsGrammar.js +83 -0
- package/dist/vfs/providers/pacsGrammar.js.map +1 -0
- package/dist/vfs/providers/pacsHelpers.d.ts +11 -43
- package/dist/vfs/providers/pacsHelpers.js +21 -60
- package/dist/vfs/providers/pacsHelpers.js.map +1 -1
- package/dist/vfs/providers/proc.d.ts +14 -0
- package/dist/vfs/providers/proc.js +98 -3
- package/dist/vfs/providers/proc.js.map +1 -1
- package/dist/vfs/providers/share.d.ts +65 -0
- package/dist/vfs/providers/share.js +227 -0
- package/dist/vfs/providers/share.js.map +1 -0
- package/dist/vfs/providers/tags.d.ts +30 -0
- package/dist/vfs/providers/tags.js +86 -0
- package/dist/vfs/providers/tags.js.map +1 -0
- package/dist/vfs/providers/workflows.d.ts +60 -0
- package/dist/vfs/providers/workflows.js +172 -0
- package/dist/vfs/providers/workflows.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pipelinePackagesPath_get = pipelinePackagesPath_get;
|
|
4
|
+
exports.pipelinePackages_restore = pipelinePackages_restore;
|
|
5
|
+
exports.pipelinePackages_sweep = pipelinePackages_sweep;
|
|
6
|
+
exports.pipelinePackages_all = pipelinePackages_all;
|
|
7
|
+
exports.pipelinePackage_find = pipelinePackage_find;
|
|
8
|
+
/**
|
|
9
|
+
* @file The pipeline package store: durable pre-cache of registered pipelines.
|
|
10
|
+
*
|
|
11
|
+
* A registered pipeline is immutable, so what CUBE knows about it — identity
|
|
12
|
+
* fields and the complete registered manifest — is fetched once, held in
|
|
13
|
+
* memory, and checkpointed to a local file keyed by the CUBE URL. The sweep
|
|
14
|
+
* runs as a warm-up tail after the topology index settles: it lists the
|
|
15
|
+
* registry and fetches only pipelines the store has never seen, so the
|
|
16
|
+
* steady-state cost is zero and a fresh daemon restores everything without
|
|
17
|
+
* a wire call. The `/usr/share/packages/<pipeline>` VFS tree and the diagram
|
|
18
|
+
* builder both read from here.
|
|
19
|
+
*
|
|
20
|
+
* @module
|
|
21
|
+
*/
|
|
22
|
+
const crypto_1 = require("crypto");
|
|
23
|
+
const fs_1 = require("fs");
|
|
24
|
+
const os_1 = require("os");
|
|
25
|
+
const path_1 = require("path");
|
|
26
|
+
const cumin_1 = require("@fnndsc/cumin");
|
|
27
|
+
const manifest_js_1 = require("./manifest.js");
|
|
28
|
+
const index_js_1 = require("../context/index.js");
|
|
29
|
+
/** Bumped when the persisted shape changes; older files are ignored. */
|
|
30
|
+
const PACKAGES_SCHEMA = 1;
|
|
31
|
+
/** The in-memory store, keyed by pipeline id. */
|
|
32
|
+
const packages = new Map();
|
|
33
|
+
/** The CUBE key the store was restored for; a different CUBE resets it. */
|
|
34
|
+
let restoredKey = null;
|
|
35
|
+
/** Returns the default directory for persistent pipeline-package files. */
|
|
36
|
+
function packagesRoot_get() {
|
|
37
|
+
const cacheHome = process.env['XDG_CACHE_HOME'] ?? (0, path_1.join)((0, os_1.homedir)(), '.cache');
|
|
38
|
+
return (0, path_1.join)(cacheHome, 'chell', 'pipelines');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Builds the CUBE-keyed store path without exposing the URL.
|
|
42
|
+
*
|
|
43
|
+
* @param cubeUrl - The CUBE API URL the registry belongs to.
|
|
44
|
+
* @param root - Store directory override (tests).
|
|
45
|
+
* @returns Versioned store file path.
|
|
46
|
+
*/
|
|
47
|
+
function pipelinePackagesPath_get(cubeUrl, root = packagesRoot_get()) {
|
|
48
|
+
const key = (0, crypto_1.createHash)('sha256').update(cubeUrl).digest('hex').slice(0, 16);
|
|
49
|
+
return (0, path_1.join)(root, `packages-${key}-v${PACKAGES_SCHEMA}.json`);
|
|
50
|
+
}
|
|
51
|
+
/** Resolves the current CUBE's store key, or null when disconnected. */
|
|
52
|
+
async function storeKey_get() {
|
|
53
|
+
try {
|
|
54
|
+
const context = await (0, index_js_1.context_getSingle)();
|
|
55
|
+
return context.URL ?? null;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Structurally validates one persisted package entry. */
|
|
62
|
+
function package_check(value) {
|
|
63
|
+
if (!value || typeof value !== 'object')
|
|
64
|
+
return false;
|
|
65
|
+
const entry = value;
|
|
66
|
+
return typeof entry.id === 'number' &&
|
|
67
|
+
typeof entry.name === 'string' &&
|
|
68
|
+
typeof entry.manifest === 'object' && entry.manifest !== null &&
|
|
69
|
+
Array.isArray(entry.manifest.nodes) &&
|
|
70
|
+
Array.isArray(entry.manifest.rootIDs);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Restores the store from its durable file for the current CUBE, once per
|
|
74
|
+
* key. Missing or invalid files leave the store empty — the sweep refills.
|
|
75
|
+
*
|
|
76
|
+
* @param root - Store directory override (tests).
|
|
77
|
+
*/
|
|
78
|
+
async function pipelinePackages_restore(root = packagesRoot_get()) {
|
|
79
|
+
const key = await storeKey_get();
|
|
80
|
+
if (key === null || key === restoredKey)
|
|
81
|
+
return;
|
|
82
|
+
restoredKey = key;
|
|
83
|
+
packages.clear();
|
|
84
|
+
try {
|
|
85
|
+
const raw = await fs_1.promises.readFile(pipelinePackagesPath_get(key, root), 'utf8');
|
|
86
|
+
const parsed = JSON.parse(raw);
|
|
87
|
+
const entries = parsed.packages;
|
|
88
|
+
if (!Array.isArray(entries))
|
|
89
|
+
return;
|
|
90
|
+
for (const entry of entries) {
|
|
91
|
+
if (package_check(entry))
|
|
92
|
+
packages.set(entry.id, entry);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// No file yet, or an unreadable one: the sweep rebuilds it.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Writes the store durably, atomically, keyed by the current CUBE.
|
|
101
|
+
*
|
|
102
|
+
* @param key - The CUBE URL key.
|
|
103
|
+
* @param root - Store directory override (tests).
|
|
104
|
+
*/
|
|
105
|
+
async function packages_save(key, root = packagesRoot_get()) {
|
|
106
|
+
const path = pipelinePackagesPath_get(key, root);
|
|
107
|
+
const temporaryPath = `${path}.${process.pid}.tmp`;
|
|
108
|
+
const file = {
|
|
109
|
+
schema: PACKAGES_SCHEMA,
|
|
110
|
+
savedAt: new Date().toISOString(),
|
|
111
|
+
packages: Array.from(packages.values()),
|
|
112
|
+
};
|
|
113
|
+
await fs_1.promises.mkdir((0, path_1.dirname)(path), { recursive: true, mode: 0o700 });
|
|
114
|
+
await fs_1.promises.writeFile(temporaryPath, `${JSON.stringify(file)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
115
|
+
await fs_1.promises.rename(temporaryPath, path);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The warm-up tail: lists the registry and fetches manifests only for
|
|
119
|
+
* pipelines the store has never seen, then saves. Sequential awaits are the
|
|
120
|
+
* throttle; per-pipeline failures are skipped and retried next sweep.
|
|
121
|
+
*
|
|
122
|
+
* @param root - Store directory override (tests).
|
|
123
|
+
*/
|
|
124
|
+
async function pipelinePackages_sweep(root = packagesRoot_get()) {
|
|
125
|
+
const key = await storeKey_get();
|
|
126
|
+
if (key === null)
|
|
127
|
+
return;
|
|
128
|
+
await pipelinePackages_restore(root);
|
|
129
|
+
const listed = await (0, cumin_1.pipelines_list)();
|
|
130
|
+
if (!listed.ok)
|
|
131
|
+
return;
|
|
132
|
+
const client = await cumin_1.chrisConnection.client_get();
|
|
133
|
+
if (!client)
|
|
134
|
+
return;
|
|
135
|
+
let added = false;
|
|
136
|
+
for (const record of listed.value) {
|
|
137
|
+
if (packages.has(record.id))
|
|
138
|
+
continue;
|
|
139
|
+
const handle = await (0, cumin_1.pipeline_get)(client, record.id);
|
|
140
|
+
if (!handle)
|
|
141
|
+
continue;
|
|
142
|
+
const manifest = await (0, manifest_js_1.pipelineManifestForPipeline_get)(record, handle, { detail: 'registered' });
|
|
143
|
+
if (!manifest.ok)
|
|
144
|
+
continue;
|
|
145
|
+
packages.set(record.id, {
|
|
146
|
+
id: record.id,
|
|
147
|
+
name: record.name,
|
|
148
|
+
...(typeof record.slug === 'string' ? { slug: record.slug } : {}),
|
|
149
|
+
...(typeof record.authors === 'string' ? { authors: record.authors } : {}),
|
|
150
|
+
...(typeof record.category === 'string' ? { category: record.category } : {}),
|
|
151
|
+
...(typeof record.description === 'string' ? { description: record.description } : {}),
|
|
152
|
+
...(typeof record.locked === 'boolean' ? { locked: record.locked } : {}),
|
|
153
|
+
manifest: manifest.value,
|
|
154
|
+
});
|
|
155
|
+
added = true;
|
|
156
|
+
}
|
|
157
|
+
if (added)
|
|
158
|
+
await packages_save(key, root);
|
|
159
|
+
}
|
|
160
|
+
/** @returns Every cached package, sorted by name. */
|
|
161
|
+
function pipelinePackages_all() {
|
|
162
|
+
return Array.from(packages.values()).sort((a, b) => a.name.localeCompare(b.name));
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Finds one cached package by id, exact name, or slug.
|
|
166
|
+
*
|
|
167
|
+
* @param specifier - Pipeline id (digits), name, or slug.
|
|
168
|
+
* @returns The package, or null when the store holds no match.
|
|
169
|
+
*/
|
|
170
|
+
function pipelinePackage_find(specifier) {
|
|
171
|
+
const trimmed = specifier.trim();
|
|
172
|
+
if (/^\d+$/.test(trimmed)) {
|
|
173
|
+
return packages.get(parseInt(trimmed, 10)) ?? null;
|
|
174
|
+
}
|
|
175
|
+
for (const entry of packages.values()) {
|
|
176
|
+
if (entry.name === trimmed || entry.slug === trimmed)
|
|
177
|
+
return entry;
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=packages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packages.js","sourceRoot":"","sources":["../../src/pipelines/packages.ts"],"names":[],"mappings":"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"}
|
package/dist/retrieve/watch.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { type Client } from '@fnndsc/cumin';
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Lifecycle states of one series retrieve.
|
|
4
|
+
*
|
|
5
|
+
* `unconfirmed` is the state of a series the client stopped watching before it
|
|
6
|
+
* could see the end. It is not a failure: the PACS keeps pushing and CUBE keeps
|
|
7
|
+
* registering after a watch ends, so the retrieve is very likely still running
|
|
8
|
+
* or already done. Reporting such a series as `error` claims knowledge the
|
|
9
|
+
* client does not have, and a caller that treats it as failure will tell an
|
|
10
|
+
* operator that nothing arrived while the files land behind them.
|
|
11
|
+
*/
|
|
12
|
+
export type RetrieveStatus = 'pending' | 'pulling' | 'pulled' | 'stalled' | 'timeout' | 'error' | 'unfired' | 'unconfirmed';
|
|
4
13
|
/** Progress classification reported to event consumers. */
|
|
5
14
|
export type RetrieveProgressStatus = 'running' | 'done' | 'unconfirmed' | 'error' | 'stalled' | 'timeout';
|
|
6
15
|
/**
|
|
@@ -46,6 +55,11 @@ export interface RetrieveTask {
|
|
|
46
55
|
export interface RetrieveWatchEvents {
|
|
47
56
|
task?: (task: RetrieveTask, status: RetrieveProgressStatus, phase: 'watching' | 'retrying') => void;
|
|
48
57
|
retryRound?: (attempt: number, retryMax: number, count: number) => void;
|
|
58
|
+
/**
|
|
59
|
+
* The watch socket dropped and is being reopened. Reported because a silent
|
|
60
|
+
* reconnection during a long pull looks identical to a stall.
|
|
61
|
+
*/
|
|
62
|
+
reconnect?: (attempt: number, maxAttempts: number, watching: number) => void;
|
|
49
63
|
}
|
|
50
64
|
/**
|
|
51
65
|
* Builds a fresh retrieve task from series identity facts.
|
package/dist/retrieve/watch.js
CHANGED
|
@@ -35,6 +35,14 @@ const FIRE_CONCURRENCY = 4;
|
|
|
35
35
|
/** Retry attempts for one retrieve creation, with backoff between them. */
|
|
36
36
|
const FIRE_ATTEMPTS = 3;
|
|
37
37
|
const FIRE_BACKOFF_MS = [250, 500];
|
|
38
|
+
/**
|
|
39
|
+
* Reconnection attempts for a dropped LONK socket.
|
|
40
|
+
*
|
|
41
|
+
* A long retrieve gives a socket more chances to die, which is why a large
|
|
42
|
+
* study failed where a small one did not. The retrieves are unaffected by the
|
|
43
|
+
* loss, so reconnecting resumes reporting rather than repeating work.
|
|
44
|
+
*/
|
|
45
|
+
const WATCH_RECONNECT_ATTEMPTS = 3;
|
|
38
46
|
const STALL_TIMEOUT_MS = 30_000;
|
|
39
47
|
const NO_ACTIVITY_TIMEOUT_MS = 15_000;
|
|
40
48
|
const SERIES_TIMEOUT_MS = 5 * 60 * 1_000;
|
|
@@ -194,14 +202,26 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
|
|
|
194
202
|
events.task?.(task, status ?? retrieveProgress_classify(task), phase);
|
|
195
203
|
};
|
|
196
204
|
const downloadToken = await (0, cumin_1.downloadToken_create)(client);
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
+
const lonkUrl = lonkWsUrl_build(downloadToken.url, downloadToken.token);
|
|
206
|
+
/**
|
|
207
|
+
* Opens a LONK socket and subscribes it to the series given.
|
|
208
|
+
*
|
|
209
|
+
* A reconnect subscribes only what is still in flight: the retrieves are
|
|
210
|
+
* already running on the server, so re-firing them would duplicate work that
|
|
211
|
+
* was never lost.
|
|
212
|
+
*/
|
|
213
|
+
const socket_open = async (subscribe) => {
|
|
214
|
+
const socket = new ws_1.default(lonkUrl);
|
|
215
|
+
await new Promise((openResolve, openReject) => {
|
|
216
|
+
socket.once('open', openResolve);
|
|
217
|
+
socket.once('error', (err) => openReject(err));
|
|
218
|
+
});
|
|
219
|
+
for (const t of subscribe) {
|
|
220
|
+
socket.send(JSON.stringify({ SeriesInstanceUID: t.seriesUID, pacs_name: t.pacsName, action: 'subscribe' }));
|
|
221
|
+
}
|
|
222
|
+
return socket;
|
|
223
|
+
};
|
|
224
|
+
let ws = await socket_open(tasks);
|
|
205
225
|
await tasks_fireBounded(tasks, pacsserver);
|
|
206
226
|
const fired = tasks.filter((t) => t.status !== 'unfired');
|
|
207
227
|
const firingErrors = tasks.length - fired.length;
|
|
@@ -219,6 +239,7 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
|
|
|
219
239
|
const taskByUID = new Map(tasks.map((t) => [t.seriesUID, t]));
|
|
220
240
|
await new Promise((resolve) => {
|
|
221
241
|
let resolved = false;
|
|
242
|
+
let reconnectsLeft = WATCH_RECONNECT_ATTEMPTS;
|
|
222
243
|
const done = () => {
|
|
223
244
|
if (resolved)
|
|
224
245
|
return;
|
|
@@ -230,11 +251,54 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
|
|
|
230
251
|
catch { /* best-effort socket cleanup */ }
|
|
231
252
|
resolve();
|
|
232
253
|
};
|
|
254
|
+
/** The series this watch is still waiting on. */
|
|
255
|
+
const inFlight = () => fired.filter((t) => t.status === 'pending' || t.status === 'pulling');
|
|
256
|
+
/**
|
|
257
|
+
* Replaces a dead socket, or gives up and records what is unknown.
|
|
258
|
+
*
|
|
259
|
+
* A LONK socket carries no state a client cannot rebuild: the retrieves run
|
|
260
|
+
* on the server regardless, and a fresh subscription resumes reporting on
|
|
261
|
+
* them. Only when reconnection is exhausted does the watch admit it stopped
|
|
262
|
+
* looking — and even then it says so rather than calling the retrieves
|
|
263
|
+
* failed.
|
|
264
|
+
*/
|
|
265
|
+
const socket_replace = () => {
|
|
266
|
+
if (resolved)
|
|
267
|
+
return;
|
|
268
|
+
const remaining = inFlight();
|
|
269
|
+
if (remaining.length === 0) {
|
|
270
|
+
done();
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
if (reconnectsLeft <= 0) {
|
|
274
|
+
for (const t of remaining) {
|
|
275
|
+
t.status = 'unconfirmed';
|
|
276
|
+
emit(t, 'unconfirmed');
|
|
277
|
+
}
|
|
278
|
+
done();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
reconnectsLeft -= 1;
|
|
282
|
+
events.reconnect?.(WATCH_RECONNECT_ATTEMPTS - reconnectsLeft, WATCH_RECONNECT_ATTEMPTS, remaining.length);
|
|
283
|
+
void socket_open(remaining)
|
|
284
|
+
.then((replacement) => {
|
|
285
|
+
if (resolved) {
|
|
286
|
+
try {
|
|
287
|
+
replacement.close();
|
|
288
|
+
}
|
|
289
|
+
catch { /* the watch already ended */ }
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
ws = replacement;
|
|
293
|
+
socket_listen();
|
|
294
|
+
})
|
|
295
|
+
.catch(() => socket_replace());
|
|
296
|
+
};
|
|
233
297
|
const checker = setInterval(() => {
|
|
234
298
|
const now = Date.now();
|
|
235
299
|
let allTerminal = true;
|
|
236
300
|
for (const t of fired) {
|
|
237
|
-
if (t.status === 'pulled' || t.status === 'error' || t.status === 'unfired' || t.status === 'stalled' || t.status === 'timeout') {
|
|
301
|
+
if (t.status === 'pulled' || t.status === 'error' || t.status === 'unfired' || t.status === 'stalled' || t.status === 'timeout' || t.status === 'unconfirmed') {
|
|
238
302
|
continue;
|
|
239
303
|
}
|
|
240
304
|
allTerminal = false;
|
|
@@ -258,52 +322,51 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
|
|
|
258
322
|
if (allTerminal)
|
|
259
323
|
done();
|
|
260
324
|
}, CHECKER_INTERVAL_MS);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
t.
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
t.
|
|
285
|
-
|
|
325
|
+
/** Attaches this watch's handlers to whichever socket is current. */
|
|
326
|
+
const socket_listen = () => {
|
|
327
|
+
ws.on('message', (data) => {
|
|
328
|
+
try {
|
|
329
|
+
const outer = JSON.parse(data.toString());
|
|
330
|
+
const seriesUID = outer.SeriesInstanceUID;
|
|
331
|
+
const message = outer.message;
|
|
332
|
+
if (!seriesUID || !message)
|
|
333
|
+
return;
|
|
334
|
+
const t = taskByUID.get(seriesUID);
|
|
335
|
+
if (!t)
|
|
336
|
+
return;
|
|
337
|
+
if ('ndicom' in message && typeof message.ndicom === 'number') {
|
|
338
|
+
const n = message.ndicom;
|
|
339
|
+
t.actualFiles = n;
|
|
340
|
+
t.lastProgressFiles = n;
|
|
341
|
+
t.lastProgressTime = Date.now();
|
|
342
|
+
if (t.status === 'pending')
|
|
343
|
+
t.status = 'pulling';
|
|
344
|
+
emit(t, 'running');
|
|
345
|
+
}
|
|
346
|
+
else if ('done' in message && message.done === true) {
|
|
347
|
+
t.status = 'pulled';
|
|
348
|
+
t.lonkConfirmed = true;
|
|
349
|
+
if (t.actualFiles < t.expectedFiles)
|
|
350
|
+
t.actualFiles = t.expectedFiles;
|
|
351
|
+
emit(t, 'done');
|
|
352
|
+
}
|
|
353
|
+
else if ('error' in message && typeof message.error === 'string') {
|
|
354
|
+
t.status = 'error';
|
|
355
|
+
emit(t, 'error');
|
|
356
|
+
}
|
|
286
357
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
358
|
+
catch {
|
|
359
|
+
// Deliberate absorption: a malformed LONK frame carries no correlation
|
|
360
|
+
// to fail; the checker's stall/timeout guards still bound the watch.
|
|
290
361
|
}
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
if (t.status === 'pending' || t.status === 'pulling') {
|
|
300
|
-
t.status = 'error';
|
|
301
|
-
emit(t, 'error');
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
done();
|
|
305
|
-
});
|
|
306
|
-
ws.on('close', () => { done(); });
|
|
362
|
+
});
|
|
363
|
+
// A dead socket is a lost view, not a lost retrieve: reconnect and keep
|
|
364
|
+
// watching. Only when that fails repeatedly does the watch stop, and even
|
|
365
|
+
// then it records what it no longer knows rather than declaring failure.
|
|
366
|
+
ws.on('error', () => { socket_replace(); });
|
|
367
|
+
ws.on('close', () => { socket_replace(); });
|
|
368
|
+
};
|
|
369
|
+
socket_listen();
|
|
307
370
|
});
|
|
308
371
|
return firingErrors;
|
|
309
372
|
}
|
|
@@ -322,13 +385,20 @@ async function retrieve_fireAndWatch(tasks, pacsserver, client, events = {}, pha
|
|
|
322
385
|
*/
|
|
323
386
|
async function retrieve_confirmLoop(allTasks, retryMax, pacsserver, client, events = {}) {
|
|
324
387
|
let extraFiringErrors = 0;
|
|
325
|
-
|
|
388
|
+
// A series the watch lost sight of is a candidate for exactly the same
|
|
389
|
+
// treatment as one whose confirmation went missing: ask CUBE. Both are
|
|
390
|
+
// "we did not see the end", and CUBE is the only thing that knows.
|
|
391
|
+
let retryCandidates = allTasks.filter((t) => (t.status === 'pulled' && !t.lonkConfirmed) || t.status === 'unconfirmed');
|
|
326
392
|
for (let attempt = 1; attempt <= retryMax && retryCandidates.length > 0; attempt++) {
|
|
327
393
|
await Promise.all(retryCandidates.map(async (t) => {
|
|
328
394
|
const stateResult = await (0, cumin_1.seriesStorage_resolve)(t.seriesUID);
|
|
329
395
|
if (stateResult.ok && stateResult.value.folderPath !== null) {
|
|
330
396
|
t.lonkConfirmed = true;
|
|
331
397
|
t.cubePathDir = stateResult.value.folderPath;
|
|
398
|
+
// A series found in CUBE arrived, whatever the watch managed to see.
|
|
399
|
+
t.status = 'pulled';
|
|
400
|
+
t.actualFiles = stateResult.value.fileCount;
|
|
401
|
+
events.task?.(t, 'done', 'retrying');
|
|
332
402
|
}
|
|
333
403
|
}));
|
|
334
404
|
retryCandidates = retryCandidates.filter((t) => !t.lonkConfirmed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/retrieve/watch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/retrieve/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/vfs/dispatcher.js
CHANGED
|
@@ -14,6 +14,9 @@ const native_js_1 = require("./providers/native.js");
|
|
|
14
14
|
const pacs_js_1 = require("./providers/pacs.js");
|
|
15
15
|
const etc_js_1 = require("./providers/etc.js");
|
|
16
16
|
const proc_js_1 = require("./providers/proc.js");
|
|
17
|
+
const workflows_js_1 = require("./providers/workflows.js");
|
|
18
|
+
const tags_js_1 = require("./providers/tags.js");
|
|
19
|
+
const share_js_1 = require("./providers/share.js");
|
|
17
20
|
/**
|
|
18
21
|
* Registry and dispatcher routing filesystem commands to matched VFS providers.
|
|
19
22
|
*/
|
|
@@ -29,6 +32,12 @@ class VFSDispatcher {
|
|
|
29
32
|
this.provider_register(new pacs_js_1.PacsVfsProvider());
|
|
30
33
|
this.provider_register(new etc_js_1.EtcVfsProvider());
|
|
31
34
|
this.provider_register(new proc_js_1.ProcVfsProvider());
|
|
35
|
+
// Three relations CUBE owns and the namespace did not reach: the tags a
|
|
36
|
+
// feed can carry, the runs a pipeline produced, and what is known about a
|
|
37
|
+
// plugin as opposed to how to invoke it.
|
|
38
|
+
this.provider_register(new workflows_js_1.WorkflowsVfsProvider());
|
|
39
|
+
this.provider_register(new tags_js_1.TagsVfsProvider());
|
|
40
|
+
this.provider_register(new share_js_1.ShareVfsProvider());
|
|
32
41
|
}
|
|
33
42
|
/**
|
|
34
43
|
* Registers a path resolution hook that maps logical paths to physical paths.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/vfs/dispatcher.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,yCAA4D;AAE5D,qDAA0D;AAC1D,iDAAsD;AACtD,+CAAoD;AACpD,iDAAsD;
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/vfs/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The PACS VFS folder grammar, both directions.
|
|
3
|
+
*
|
|
4
|
+
* Query folders are named `<desc>_qid:<id>[_<user>][_no-hits]`, study
|
|
5
|
+
* folders `Study_<uid>_<desc>`, series folders `Series_<uid>_<desc>`. This
|
|
6
|
+
* module owns building those names and parsing them back, so a path a
|
|
7
|
+
* surface builds is always the path the listing shows.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately dependency-free: test mocks forward these functions directly
|
|
10
|
+
* (via the package's `./pacs-grammar` subpath export) instead of maintaining
|
|
11
|
+
* copies, so nothing here may import anything.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Extracts the numeric query id from a query folder name or any path
|
|
17
|
+
* containing one.
|
|
18
|
+
*
|
|
19
|
+
* @param folder - Folder name or full path carrying a `_qid:<id>` marker.
|
|
20
|
+
* @returns The query id, or NaN when no marker is present.
|
|
21
|
+
*/
|
|
22
|
+
export declare function queryId_extractFromFolder(folder: string): number;
|
|
23
|
+
/**
|
|
24
|
+
* Extracts the descriptive label of a query folder, the part before its
|
|
25
|
+
* `_qid:` marker (the id, user, and no-hits suffixes are all dropped).
|
|
26
|
+
*
|
|
27
|
+
* @param folder - Query folder name (`<desc>_qid:<id>[_<user>][_no-hits]`).
|
|
28
|
+
* @returns The label, or the folder unchanged when it carries no marker.
|
|
29
|
+
*/
|
|
30
|
+
export declare function queryLabel_extractFromFolder(folder: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Extracts the UID portion of a study or series folder name
|
|
33
|
+
* (`<prefix>_<uid>_<label>`).
|
|
34
|
+
*
|
|
35
|
+
* @param folder - The folder name.
|
|
36
|
+
* @param prefix - The expected prefix, `Study` or `Series`.
|
|
37
|
+
* @returns The UID between the prefix and the first following underscore.
|
|
38
|
+
*/
|
|
39
|
+
export declare function folderUID_get(folder: string, prefix: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Everything that determines a query folder's name.
|
|
42
|
+
*
|
|
43
|
+
* @property queryId - The query's numeric id.
|
|
44
|
+
* @property queryObj - The query's key-value search terms; blank values are
|
|
45
|
+
* skipped.
|
|
46
|
+
* @property title - The query record's title, used as the description when
|
|
47
|
+
* queryObj yields nothing.
|
|
48
|
+
* @property username - Owning username, appended as `_<user>` when present.
|
|
49
|
+
* @property hasResult - Whether the query holds a result payload; false
|
|
50
|
+
* appends the `_no-hits` suffix. Defaults to true.
|
|
51
|
+
*/
|
|
52
|
+
export interface QueryFolderNameParts {
|
|
53
|
+
queryId: number | string;
|
|
54
|
+
queryObj: Record<string, unknown>;
|
|
55
|
+
title?: string;
|
|
56
|
+
username?: string;
|
|
57
|
+
hasResult?: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Builds a query folder name: `<desc>_qid:<id>[_<user>][_no-hits]`.
|
|
61
|
+
*
|
|
62
|
+
* This is the single naming authority: the listing provider and any surface
|
|
63
|
+
* that pre-computes a query's path must both use it, otherwise a freshly
|
|
64
|
+
* created query can be addressed by a name `ls` will never show.
|
|
65
|
+
*
|
|
66
|
+
* @param parts - The name's inputs. See QueryFolderNameParts.
|
|
67
|
+
* @returns The folder name (no leading path).
|
|
68
|
+
*/
|
|
69
|
+
export declare function queryFolderName_build(parts: QueryFolderNameParts): string;
|