signalk-backup 0.4.0 → 0.5.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 +2 -0
- package/package.json +3 -3
- package/plugin/config/image-tag.d.ts +3 -0
- package/plugin/config/image-tag.d.ts.map +1 -0
- package/plugin/config/image-tag.js +16 -0
- package/plugin/config/image-tag.js.map +1 -0
- package/plugin/config/schema.d.ts +2 -0
- package/plugin/config/schema.d.ts.map +1 -1
- package/plugin/config/schema.js +16 -4
- package/plugin/config/schema.js.map +1 -1
- package/plugin/database-export/grafana.d.ts +25 -0
- package/plugin/database-export/grafana.d.ts.map +1 -0
- package/plugin/database-export/grafana.js +262 -0
- package/plugin/database-export/grafana.js.map +1 -0
- package/plugin/database-export/index.d.ts +9 -2
- package/plugin/database-export/index.d.ts.map +1 -1
- package/plugin/database-export/index.js +24 -6
- package/plugin/database-export/index.js.map +1 -1
- package/plugin/database-export/signalk-database.d.ts +21 -0
- package/plugin/database-export/signalk-database.d.ts.map +1 -0
- package/plugin/database-export/signalk-database.js +148 -0
- package/plugin/database-export/signalk-database.js.map +1 -0
- package/plugin/index.d.ts.map +1 -1
- package/plugin/index.js +115 -42
- package/plugin/index.js.map +1 -1
- package/public/assets/{index-DMT6pdi_.js → index-BbZnGesz.js} +2 -2
- package/public/assets/{index-DMT6pdi_.js.map → index-BbZnGesz.js.map} +1 -1
- package/public/assets/{main-BZ1xX0IR.js → main-Bb6YhYnz.js} +2 -2
- package/public/assets/{main-BZ1xX0IR.js.map → main-Bb6YhYnz.js.map} +1 -1
- package/public/index.html +1 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// Mirrors the Grafana exporter: pulls signalk-database's /api/full-export/{databases,<id>} over loopback and stages one db.sqlite per consumer-plugin into kopia's snapshot tree.
|
|
2
|
+
import { mkdir, rename, rm, unlink } from 'node:fs/promises';
|
|
3
|
+
import { createWriteStream } from 'node:fs';
|
|
4
|
+
import { Readable } from 'node:stream';
|
|
5
|
+
import { pipeline } from 'node:stream/promises';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
const SIGNALK_DATABASE_PLUGIN_ID = 'signalk-database';
|
|
8
|
+
const DEFAULT_SIGNALK_BASE = 'http://127.0.0.1:3000';
|
|
9
|
+
const FETCH_TIMEOUT_MS = 600_000;
|
|
10
|
+
// Same id grammar the source plugin enforces — reject early so we never
|
|
11
|
+
// even try a fetch the server would 400 on.
|
|
12
|
+
const SAFE_ID = /^[A-Za-z0-9._-]+$/;
|
|
13
|
+
export class SignalKDatabaseExporter {
|
|
14
|
+
pluginId = SIGNALK_DATABASE_PLUGIN_ID;
|
|
15
|
+
baseUrl;
|
|
16
|
+
fetchImpl;
|
|
17
|
+
log;
|
|
18
|
+
constructor(opts = {}) {
|
|
19
|
+
this.baseUrl = (opts.signalkBaseUrl ?? DEFAULT_SIGNALK_BASE).replace(/\/$/, '');
|
|
20
|
+
this.fetchImpl = opts.fetch ?? fetch;
|
|
21
|
+
this.log = (msg) => opts.log?.(`[signalk-database-export] ${msg}`);
|
|
22
|
+
}
|
|
23
|
+
async detect() {
|
|
24
|
+
// Manifest is cheap — GET returning 200 with a `databases` array even
|
|
25
|
+
// when there are zero consumer DBs yet (empty plugin-config-data).
|
|
26
|
+
try {
|
|
27
|
+
const manifest = await this.fetchManifest(5_000);
|
|
28
|
+
return Array.isArray(manifest);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
this.log(`detect failed: ${errMsg(err)}`);
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async exportAll(stagingDir) {
|
|
36
|
+
const startedAt = Date.now();
|
|
37
|
+
await mkdir(stagingDir, { recursive: true });
|
|
38
|
+
// Reset the staging tree so DBs removed from disk (because the
|
|
39
|
+
// consumer plugin was uninstalled) don't linger in kopia forever.
|
|
40
|
+
await this.resetStagingDir(stagingDir);
|
|
41
|
+
await mkdir(stagingDir, { recursive: true });
|
|
42
|
+
const manifest = await this.fetchManifest(10_000);
|
|
43
|
+
const exports = [];
|
|
44
|
+
let totalBytes = 0;
|
|
45
|
+
for (const entry of manifest) {
|
|
46
|
+
if (!SAFE_ID.test(entry.id) || entry.id === '.' || entry.id === '..') {
|
|
47
|
+
this.log(`skip suspicious id: ${entry.id}`);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const bytes = await this.exportOne(entry, stagingDir);
|
|
52
|
+
exports.push({
|
|
53
|
+
// `table` is the per-row label in the result manifest. For us,
|
|
54
|
+
// each row is a whole consumer DB — use the id verbatim.
|
|
55
|
+
table: entry.id,
|
|
56
|
+
tableDir: join(stagingDir, entry.id),
|
|
57
|
+
shardsWritten: 1,
|
|
58
|
+
shardsSkipped: 0,
|
|
59
|
+
bytes
|
|
60
|
+
});
|
|
61
|
+
totalBytes += bytes;
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
this.log(`export ${entry.id} failed: ${errMsg(err)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
pluginId: this.pluginId,
|
|
69
|
+
tables: exports,
|
|
70
|
+
totalBytes,
|
|
71
|
+
durationMs: Date.now() - startedAt
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// -------------------------------------------------------------------
|
|
75
|
+
// Internal
|
|
76
|
+
// -------------------------------------------------------------------
|
|
77
|
+
async fetchManifest(timeoutMs) {
|
|
78
|
+
const url = `${this.baseUrl}/plugins/${this.pluginId}/api/full-export/databases`;
|
|
79
|
+
const res = await this.fetchImpl(url, { signal: AbortSignal.timeout(timeoutMs) });
|
|
80
|
+
if (!res.ok) {
|
|
81
|
+
throw new Error(`manifest HTTP ${res.status}`);
|
|
82
|
+
}
|
|
83
|
+
const body = (await res.json());
|
|
84
|
+
if (!Array.isArray(body.databases)) {
|
|
85
|
+
throw new Error(`manifest missing 'databases' array`);
|
|
86
|
+
}
|
|
87
|
+
const out = [];
|
|
88
|
+
for (const raw of body.databases) {
|
|
89
|
+
const parsed = this.parseEntry(raw);
|
|
90
|
+
if (parsed)
|
|
91
|
+
out.push(parsed);
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
parseEntry(raw) {
|
|
96
|
+
if (!raw || typeof raw !== 'object')
|
|
97
|
+
return null;
|
|
98
|
+
const o = raw;
|
|
99
|
+
if (typeof o.id !== 'string' || typeof o.bytes !== 'number')
|
|
100
|
+
return null;
|
|
101
|
+
if (typeof o.modifiedAt !== 'string')
|
|
102
|
+
return null;
|
|
103
|
+
return { id: o.id, bytes: o.bytes, modifiedAt: o.modifiedAt };
|
|
104
|
+
}
|
|
105
|
+
async exportOne(entry, stagingDir) {
|
|
106
|
+
const dir = join(stagingDir, entry.id);
|
|
107
|
+
await mkdir(dir, { recursive: true });
|
|
108
|
+
const finalPath = join(dir, 'db.sqlite');
|
|
109
|
+
const url = `${this.baseUrl}/plugins/${this.pluginId}/api/full-export/${encodeURIComponent(entry.id)}`;
|
|
110
|
+
const res = await this.fetchImpl(url, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
|
|
111
|
+
if (!res.ok) {
|
|
112
|
+
throw new Error(`HTTP ${res.status}: ${(await res.text()).slice(0, 200)}`);
|
|
113
|
+
}
|
|
114
|
+
if (!res.body) {
|
|
115
|
+
throw new Error('response body is empty');
|
|
116
|
+
}
|
|
117
|
+
const bytes = await atomicWrite(res.body, finalPath);
|
|
118
|
+
this.log(`wrote ${entry.id}/db.sqlite (${bytes} bytes)`);
|
|
119
|
+
return bytes;
|
|
120
|
+
}
|
|
121
|
+
// Errors propagate so a failed reset reports as failed-section instead of emitting a half-fresh half-stale tree.
|
|
122
|
+
async resetStagingDir(root) {
|
|
123
|
+
await rm(root, { recursive: true, force: true });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Failed writes unlink the partial so half-written data can't slip into the next snapshot.
|
|
127
|
+
async function atomicWrite(body, finalPath) {
|
|
128
|
+
const partialPath = `${finalPath}.partial`;
|
|
129
|
+
const nodeStream = Readable.fromWeb(body);
|
|
130
|
+
const sink = createWriteStream(partialPath);
|
|
131
|
+
let bytes = 0;
|
|
132
|
+
nodeStream.on('data', (chunk) => {
|
|
133
|
+
bytes += chunk.length;
|
|
134
|
+
});
|
|
135
|
+
try {
|
|
136
|
+
await pipeline(nodeStream, sink);
|
|
137
|
+
await rename(partialPath, finalPath);
|
|
138
|
+
return bytes;
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
await unlink(partialPath).catch(() => undefined);
|
|
142
|
+
throw err;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function errMsg(err) {
|
|
146
|
+
return err instanceof Error ? err.message : String(err);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=signalk-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalk-database.js","sourceRoot":"","sources":["../../src/database-export/signalk-database.ts"],"names":[],"mappings":"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"}
|
package/plugin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAK5C,OAAO,EACL,eAAe,EAKhB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAK5C,OAAO,EACL,eAAe,EAKhB,MAAM,YAAY,CAAA;AA2GnB,MAAM,CAAC,OAAO,WAAW,GAAG,EAAE,eAAe,GAAG,MAAM,CA+mBrD"}
|
package/plugin/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { BackupClient } from './backup-client.js';
|
|
|
4
4
|
import { registerProxy } from './proxy.js';
|
|
5
5
|
import { discoverSmbHosts, shutdownSmbDiscovery } from './smb-discovery.js';
|
|
6
6
|
import { ConfigSchema, SCHEMA_DEFAULTS } from './config/schema.js';
|
|
7
|
+
import { resolveImageTag } from './config/image-tag.js';
|
|
7
8
|
import { runAllExports } from './database-export/index.js';
|
|
8
9
|
const BACKUP_IMAGE = 'ghcr.io/dirkwa/signalk-backup-server';
|
|
9
10
|
const CONTAINER_NAME = 'signalk-backup-server';
|
|
@@ -23,10 +24,15 @@ const SAFE_TAG = /^[a-zA-Z0-9._-]+$/;
|
|
|
23
24
|
* container name `signalk-backup-server`. See:
|
|
24
25
|
* signalk-container/doc/plugin-developer-guide.md §"Resource Limits"
|
|
25
26
|
*/
|
|
27
|
+
// Cloud sync to Google Drive / SMB runs rclone with 8 parallel transfers
|
|
28
|
+
// alongside kopia; observed RSS during a real sync climbs well past
|
|
29
|
+
// 256 MB and the container gets OOM-killed. 1 GB gives comfortable
|
|
30
|
+
// headroom for the worst-case rclone+kopia path while still being a
|
|
31
|
+
// modest ask on a Pi-class host.
|
|
26
32
|
const DEFAULT_RESOURCES = {
|
|
27
33
|
cpus: 1,
|
|
28
|
-
memory: '
|
|
29
|
-
memorySwap: '
|
|
34
|
+
memory: '1g',
|
|
35
|
+
memorySwap: '1g',
|
|
30
36
|
pidsLimit: 100
|
|
31
37
|
};
|
|
32
38
|
function getContainerManager() {
|
|
@@ -102,7 +108,9 @@ export default function (app) {
|
|
|
102
108
|
let currentSettings = null;
|
|
103
109
|
let containerAddress = null;
|
|
104
110
|
let dbExportTimer = null;
|
|
105
|
-
|
|
111
|
+
// In-flight tick handle so concurrent callers (scheduler + manual
|
|
112
|
+
// backup) coalesce onto the same export rather than racing.
|
|
113
|
+
let dbExportInFlight = null;
|
|
106
114
|
const buildContainerConfig = (tag) => ({
|
|
107
115
|
image: BACKUP_IMAGE,
|
|
108
116
|
tag,
|
|
@@ -170,9 +178,18 @@ export default function (app) {
|
|
|
170
178
|
app.debug('Starting signalk-backup');
|
|
171
179
|
// CRITICAL: Signal K does not seed schema defaults into the runtime
|
|
172
180
|
// config — when the plugin is auto-enabled (or enabled without
|
|
173
|
-
// saving the form), `config` is `{}`.
|
|
174
|
-
// rely on every field being present
|
|
175
|
-
|
|
181
|
+
// saving the form), `config` is `{}`. Deep-merge defaults so callers
|
|
182
|
+
// can rely on every field being present, including nested fields
|
|
183
|
+
// added in later versions (e.g. databaseExport.grafana for users
|
|
184
|
+
// upgrading from a config saved before G2).
|
|
185
|
+
const merged = {
|
|
186
|
+
...SCHEMA_DEFAULTS,
|
|
187
|
+
...config,
|
|
188
|
+
databaseExport: {
|
|
189
|
+
...SCHEMA_DEFAULTS.databaseExport,
|
|
190
|
+
...(config.databaseExport ?? {})
|
|
191
|
+
}
|
|
192
|
+
};
|
|
176
193
|
currentSettings = merged;
|
|
177
194
|
void asyncStart(merged).catch((err) => {
|
|
178
195
|
app.setPluginError(`Startup failed: ${errMsg(err)}`);
|
|
@@ -227,7 +244,7 @@ export default function (app) {
|
|
|
227
244
|
}
|
|
228
245
|
}
|
|
229
246
|
if (!containerImage) {
|
|
230
|
-
containerImage = `${BACKUP_IMAGE}:${currentSettings?.imageTag ?? '
|
|
247
|
+
containerImage = `${BACKUP_IMAGE}:${resolveImageTag(currentSettings?.imageTag ?? 'auto')}`;
|
|
231
248
|
}
|
|
232
249
|
res.json({
|
|
233
250
|
container: {
|
|
@@ -261,13 +278,18 @@ export default function (app) {
|
|
|
261
278
|
return;
|
|
262
279
|
}
|
|
263
280
|
const body = (req.body ?? {});
|
|
264
|
-
|
|
281
|
+
if ('tag' in body && typeof body.tag !== 'string') {
|
|
282
|
+
res.status(400).json({ error: 'tag must be a string' });
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
const requestedTag = (typeof body.tag === 'string' ? body.tag : undefined) ??
|
|
265
286
|
currentSettings?.imageTag ??
|
|
266
|
-
'
|
|
267
|
-
if (!SAFE_TAG.test(
|
|
287
|
+
'auto';
|
|
288
|
+
if (!SAFE_TAG.test(requestedTag)) {
|
|
268
289
|
res.status(400).json({ error: 'Invalid tag format' });
|
|
269
290
|
return;
|
|
270
291
|
}
|
|
292
|
+
const tag = resolveImageTag(requestedTag);
|
|
271
293
|
try {
|
|
272
294
|
app.setPluginStatus(`Pulling ${BACKUP_IMAGE}:${tag}...`);
|
|
273
295
|
await containers.pullImage(`${BACKUP_IMAGE}:${tag}`);
|
|
@@ -284,8 +306,9 @@ export default function (app) {
|
|
|
284
306
|
res.status(500).json({ error: msg });
|
|
285
307
|
return;
|
|
286
308
|
}
|
|
309
|
+
// Persist requestedTag not resolved tag: saving "auto" preserves auto-tracking across upgrades.
|
|
287
310
|
if (currentSettings) {
|
|
288
|
-
currentSettings.imageTag =
|
|
311
|
+
currentSettings.imageTag = requestedTag;
|
|
289
312
|
await new Promise((resolve) => {
|
|
290
313
|
app.savePluginOptions({ ...currentSettings }, (err) => {
|
|
291
314
|
if (err) {
|
|
@@ -312,15 +335,20 @@ export default function (app) {
|
|
|
312
335
|
router.post('/api/db-export/config', async (req, res) => {
|
|
313
336
|
const body = (req.body ?? {});
|
|
314
337
|
const questdb = typeof body.questdb === 'boolean' ? body.questdb : undefined;
|
|
338
|
+
const grafana = typeof body.grafana === 'boolean' ? body.grafana : undefined;
|
|
339
|
+
const signalkDatabase = typeof body.signalkDatabase === 'boolean' ? body.signalkDatabase : undefined;
|
|
315
340
|
const intervalMinutes = typeof body.intervalMinutes === 'number' && Number.isFinite(body.intervalMinutes)
|
|
316
341
|
? Math.round(body.intervalMinutes)
|
|
317
342
|
: undefined;
|
|
318
|
-
if (questdb === undefined &&
|
|
343
|
+
if (questdb === undefined &&
|
|
344
|
+
grafana === undefined &&
|
|
345
|
+
signalkDatabase === undefined &&
|
|
346
|
+
intervalMinutes === undefined) {
|
|
319
347
|
res.status(400).json({
|
|
320
348
|
success: false,
|
|
321
349
|
error: {
|
|
322
350
|
code: 'INVALID_INPUT',
|
|
323
|
-
message: 'Provide questdb (boolean) and/or intervalMinutes (number).'
|
|
351
|
+
message: 'Provide questdb (boolean), grafana (boolean), signalkDatabase (boolean), and/or intervalMinutes (number).'
|
|
324
352
|
},
|
|
325
353
|
timestamp: new Date().toISOString()
|
|
326
354
|
});
|
|
@@ -347,6 +375,8 @@ export default function (app) {
|
|
|
347
375
|
}
|
|
348
376
|
const next = {
|
|
349
377
|
questdb: questdb ?? currentSettings.databaseExport.questdb,
|
|
378
|
+
grafana: grafana ?? currentSettings.databaseExport.grafana,
|
|
379
|
+
signalkDatabase: signalkDatabase ?? currentSettings.databaseExport.signalkDatabase,
|
|
350
380
|
intervalMinutes: intervalMinutes ?? currentSettings.databaseExport.intervalMinutes
|
|
351
381
|
};
|
|
352
382
|
currentSettings.databaseExport = next;
|
|
@@ -397,6 +427,21 @@ export default function (app) {
|
|
|
397
427
|
});
|
|
398
428
|
}
|
|
399
429
|
});
|
|
430
|
+
// Manual-backup interceptor — runs DB exports synchronously
|
|
431
|
+
// before forwarding to the backup-server's snapshot endpoint, so
|
|
432
|
+
// the resulting kopia snapshot captures fresh DB state. Without
|
|
433
|
+
// this, a manual backup would snapshot whatever stale (or empty)
|
|
434
|
+
// files the last scheduler tick left in the staging dir.
|
|
435
|
+
router.post('/api/backups', async (_req, _res, next) => {
|
|
436
|
+
const dbCfg = currentSettings?.databaseExport;
|
|
437
|
+
if (dbCfg?.questdb || dbCfg?.grafana || dbCfg?.signalkDatabase) {
|
|
438
|
+
// runDbExportTick logs and swallows failures internally — a
|
|
439
|
+
// backup with stale DB state is better than no backup, so we
|
|
440
|
+
// always continue to the proxy regardless of export outcome.
|
|
441
|
+
await runDbExportTick();
|
|
442
|
+
}
|
|
443
|
+
next();
|
|
444
|
+
});
|
|
400
445
|
// Proxy /api/* to the backup-server. Registered LAST so the
|
|
401
446
|
// explicit /api/update/{check,apply} and /api/cloud/smb/discover
|
|
402
447
|
// above match first. containerAddress includes the scheme so
|
|
@@ -424,7 +469,9 @@ export default function (app) {
|
|
|
424
469
|
await client.waitForReady(15_000);
|
|
425
470
|
app.setPluginStatus(`Connected to external backup-server at ${url}`);
|
|
426
471
|
await seedFirstRunSchedule(client);
|
|
427
|
-
if (settings.databaseExport.questdb
|
|
472
|
+
if (settings.databaseExport.questdb ||
|
|
473
|
+
settings.databaseExport.grafana ||
|
|
474
|
+
settings.databaseExport.signalkDatabase) {
|
|
428
475
|
app.setPluginStatus(`Connected to external backup-server. Note: database export ` +
|
|
429
476
|
`requires managed-container mode and was skipped.`);
|
|
430
477
|
}
|
|
@@ -452,9 +499,10 @@ export default function (app) {
|
|
|
452
499
|
app.setPluginError(`Invalid imageTag "${settings.imageTag}"`);
|
|
453
500
|
return;
|
|
454
501
|
}
|
|
502
|
+
const resolvedTag = resolveImageTag(settings.imageTag);
|
|
455
503
|
try {
|
|
456
|
-
app.setPluginStatus(`Starting ${BACKUP_IMAGE}:${
|
|
457
|
-
await containers.ensureRunning(CONTAINER_NAME, buildContainerConfig(
|
|
504
|
+
app.setPluginStatus(`Starting ${BACKUP_IMAGE}:${resolvedTag}...`);
|
|
505
|
+
await containers.ensureRunning(CONTAINER_NAME, buildContainerConfig(resolvedTag), {
|
|
458
506
|
onVolumeIssue
|
|
459
507
|
});
|
|
460
508
|
// Register with the central update service so users see "update available"
|
|
@@ -465,7 +513,7 @@ export default function (app) {
|
|
|
465
513
|
pluginId: PLUGIN_ID,
|
|
466
514
|
containerName: CONTAINER_NAME,
|
|
467
515
|
image: BACKUP_IMAGE,
|
|
468
|
-
currentTag: () => currentSettings?.imageTag ?? settings.imageTag,
|
|
516
|
+
currentTag: () => resolveImageTag(currentSettings?.imageTag ?? settings.imageTag),
|
|
469
517
|
versionSource: containers.updates.sources.githubReleases('dirkwa/signalk-backup-server')
|
|
470
518
|
});
|
|
471
519
|
}
|
|
@@ -501,8 +549,16 @@ export default function (app) {
|
|
|
501
549
|
*/
|
|
502
550
|
function startDbExportTimer() {
|
|
503
551
|
stopDbExportTimer();
|
|
552
|
+
// External backup-server mode doesn't run the export pipeline — the
|
|
553
|
+
// exporters write into our local plugin-config-data tree, which the
|
|
554
|
+
// external server has no access to. Don't arm an interval that
|
|
555
|
+
// would no-op on every tick.
|
|
556
|
+
if (currentSettings?.managedContainer === false) {
|
|
557
|
+
app.debug('Database export: external mode, scheduler idle');
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
504
560
|
const dbCfg = currentSettings?.databaseExport;
|
|
505
|
-
if (!dbCfg?.questdb) {
|
|
561
|
+
if (!dbCfg?.questdb && !dbCfg?.grafana && !dbCfg?.signalkDatabase) {
|
|
506
562
|
app.debug('Database export: no exporters enabled, scheduler idle');
|
|
507
563
|
return;
|
|
508
564
|
}
|
|
@@ -518,33 +574,50 @@ export default function (app) {
|
|
|
518
574
|
dbExportTimer = null;
|
|
519
575
|
}
|
|
520
576
|
}
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
577
|
+
// Pure body — the coalescing/promise-tracking happens in
|
|
578
|
+
// runDbExportTick() so callers always get a single shared promise.
|
|
579
|
+
async function runDbExportOnce() {
|
|
580
|
+
// Belt-and-braces: the scheduler timer and the POST /api/backups
|
|
581
|
+
// interceptor both gate on managedContainer too, but this is the
|
|
582
|
+
// single chokepoint every caller flows through. In external mode
|
|
583
|
+
// there's nowhere local to stage exports for the external server
|
|
584
|
+
// to pick up, so the whole pipeline is a no-op.
|
|
585
|
+
if (currentSettings?.managedContainer === false) {
|
|
586
|
+
app.debug('Database export: skipped (external mode)');
|
|
526
587
|
return;
|
|
527
588
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
589
|
+
const dbCfg = currentSettings?.databaseExport ?? SCHEMA_DEFAULTS.databaseExport;
|
|
590
|
+
const results = await runAllExports({
|
|
591
|
+
signalkConfigRoot: resolveSignalkConfigRoot(),
|
|
592
|
+
signalkBaseUrl: resolveSignalkBaseUrl(),
|
|
593
|
+
log: (msg) => {
|
|
594
|
+
app.debug(msg);
|
|
595
|
+
},
|
|
596
|
+
enabled: {
|
|
597
|
+
questdb: dbCfg.questdb,
|
|
598
|
+
grafana: dbCfg.grafana,
|
|
599
|
+
signalkDatabase: dbCfg.signalkDatabase
|
|
600
|
+
}
|
|
601
|
+
});
|
|
602
|
+
const totalTables = results.reduce((acc, r) => acc + r.tables.length, 0);
|
|
603
|
+
const totalBytes = results.reduce((acc, r) => acc + r.totalBytes, 0);
|
|
604
|
+
app.debug(`Database export tick: ${results.length} sources, ` +
|
|
605
|
+
`${totalTables} tables, ${totalBytes} bytes`);
|
|
606
|
+
}
|
|
607
|
+
// Coalesce concurrent callers — a manual backup hitting this while
|
|
608
|
+
// the scheduler tick is still in-flight should await the same export,
|
|
609
|
+
// not skip out and snapshot mid-write.
|
|
610
|
+
function runDbExportTick() {
|
|
611
|
+
if (dbExportInFlight)
|
|
612
|
+
return dbExportInFlight;
|
|
613
|
+
dbExportInFlight = runDbExportOnce()
|
|
614
|
+
.catch((err) => {
|
|
543
615
|
app.error(`Database export tick failed: ${errMsg(err)}`);
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
dbExportInFlight =
|
|
547
|
-
}
|
|
616
|
+
})
|
|
617
|
+
.finally(() => {
|
|
618
|
+
dbExportInFlight = null;
|
|
619
|
+
});
|
|
620
|
+
return dbExportInFlight;
|
|
548
621
|
}
|
|
549
622
|
/**
|
|
550
623
|
* Resolve the host-visible SignalK config root. Prefer the env var
|
package/plugin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`modulepreload`,t=function(e){return`/signalk-backup/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};async function i(){let e=await fetch(`/admin/.vite/manifest.json`);if(!e.ok)return;let t=await e.json(),n=new Set;for(let e of Object.values(t))if(e){for(let t of e.css??[])n.add(t);typeof e.file==`string`&&e.file.endsWith(`.css`)&&n.add(e.file)}await Promise.all([...n].map(e=>new Promise(t=>{let n=document.createElement(`link`);n.rel=`stylesheet`,n.href=`/admin/`+e,n.onload=t,n.onerror=t,document.head.appendChild(n)})))}try{await i()}catch(e){console.warn(`signalk-backup: admin CSS not available`,e)}finally{await r(()=>import(`./main-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`modulepreload`,t=function(e){return`/signalk-backup/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};async function i(){let e=await fetch(`/admin/.vite/manifest.json`);if(!e.ok)return;let t=await e.json(),n=new Set;for(let e of Object.values(t))if(e){for(let t of e.css??[])n.add(t);typeof e.file==`string`&&e.file.endsWith(`.css`)&&n.add(e.file)}await Promise.all([...n].map(e=>new Promise(t=>{let n=document.createElement(`link`);n.rel=`stylesheet`,n.href=`/admin/`+e,n.onload=t,n.onerror=t,document.head.appendChild(n)})))}try{await i()}catch(e){console.warn(`signalk-backup: admin CSS not available`,e)}finally{await r(()=>import(`./main-Bb6YhYnz.js`),[])}
|
|
2
|
+
//# sourceMappingURL=index-BbZnGesz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"m2DACM,eAAe,GAAiB,CAC9B,IAAM,EAAM,MAAM,MAAM,4BAA4B,EACpD,GAAI,CAAC,EAAI,GAAI,OACb,IAAM,EAAW,MAAM,EAAI,KAAK,EAC1B,EAAW,IAAI,IAMrB,IAAK,IAAM,KAAS,OAAO,OAAO,CAAQ,EACnC,KACL,KAAK,IAAM,KAAO,EAAM,KAAO,CAAC,EAAG,EAAS,IAAI,CAAG,EAC/C,OAAO,EAAM,MAAS,UAAY,EAAM,KAAK,SAAS,MAAM,GAC9D,EAAS,IAAI,EAAM,IAAI,CAF0B,CAKrD,MAAM,QAAQ,IACZ,CAAC,GAAG,CAAQ,EAAE,IACX,GACC,IAAI,QAAS,GAAY,CACvB,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,IAAM,aACX,EAAK,KAAO,UAAY,EACxB,EAAK,OAAS,EACd,EAAK,QAAU,EACf,SAAS,KAAK,YAAY,CAAI,CAChC,CAAC,CACL,CACF,CACF,CAEA,GAAI,CACF,MAAM,EAAe,CACvB,OAAS,EAAK,CACZ,QAAQ,KAAK,0CAA2C,CAAG,CAC7D,QAAU,CACR,YAAM,OAAO,yBACf","names":[],"ignoreList":[],"sources":["../../webapp/index.html?html-proxy&index=0.js"],"sourcesContent":["\n async function injectAdminCss() {\n const res = await fetch('/admin/.vite/manifest.json')\n if (!res.ok) return\n const manifest = await res.json()\n const cssFiles = new Set()\n // Two shapes are common: an entry whose `css` array lists its\n // stylesheet imports, OR a top-level entry whose `file` itself\n // ends in `.css` (when Vite extracts a global stylesheet). The\n // current SignalK admin uses the second shape; older builds and\n // the docs example use the first. Cover both.\n for (const entry of Object.values(manifest)) {\n if (!entry) continue\n for (const css of entry.css ?? []) cssFiles.add(css)\n if (typeof entry.file === 'string' && entry.file.endsWith('.css')) {\n cssFiles.add(entry.file)\n }\n }\n await Promise.all(\n [...cssFiles].map(\n (css) =>\n new Promise((resolve) => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/admin/' + css\n link.onload = resolve\n link.onerror = resolve\n document.head.appendChild(link)\n })\n )\n )\n }\n\n try {\n await injectAdminCss()\n } catch (err) {\n console.warn('signalk-backup: admin CSS not available', err)\n } finally {\n await import('./src/main.tsx')\n }\n "],"file":"index-
|
|
1
|
+
{"version":3,"mappings":"m2DACM,eAAe,GAAiB,CAC9B,IAAM,EAAM,MAAM,MAAM,4BAA4B,EACpD,GAAI,CAAC,EAAI,GAAI,OACb,IAAM,EAAW,MAAM,EAAI,KAAK,EAC1B,EAAW,IAAI,IAMrB,IAAK,IAAM,KAAS,OAAO,OAAO,CAAQ,EACnC,KACL,KAAK,IAAM,KAAO,EAAM,KAAO,CAAC,EAAG,EAAS,IAAI,CAAG,EAC/C,OAAO,EAAM,MAAS,UAAY,EAAM,KAAK,SAAS,MAAM,GAC9D,EAAS,IAAI,EAAM,IAAI,CAF0B,CAKrD,MAAM,QAAQ,IACZ,CAAC,GAAG,CAAQ,EAAE,IACX,GACC,IAAI,QAAS,GAAY,CACvB,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,IAAM,aACX,EAAK,KAAO,UAAY,EACxB,EAAK,OAAS,EACd,EAAK,QAAU,EACf,SAAS,KAAK,YAAY,CAAI,CAChC,CAAC,CACL,CACF,CACF,CAEA,GAAI,CACF,MAAM,EAAe,CACvB,OAAS,EAAK,CACZ,QAAQ,KAAK,0CAA2C,CAAG,CAC7D,QAAU,CACR,YAAM,OAAO,yBACf","names":[],"ignoreList":[],"sources":["../../webapp/index.html?html-proxy&index=0.js"],"sourcesContent":["\n async function injectAdminCss() {\n const res = await fetch('/admin/.vite/manifest.json')\n if (!res.ok) return\n const manifest = await res.json()\n const cssFiles = new Set()\n // Two shapes are common: an entry whose `css` array lists its\n // stylesheet imports, OR a top-level entry whose `file` itself\n // ends in `.css` (when Vite extracts a global stylesheet). The\n // current SignalK admin uses the second shape; older builds and\n // the docs example use the first. Cover both.\n for (const entry of Object.values(manifest)) {\n if (!entry) continue\n for (const css of entry.css ?? []) cssFiles.add(css)\n if (typeof entry.file === 'string' && entry.file.endsWith('.css')) {\n cssFiles.add(entry.file)\n }\n }\n await Promise.all(\n [...cssFiles].map(\n (css) =>\n new Promise((resolve) => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/admin/' + css\n link.onload = resolve\n link.onerror = resolve\n document.head.appendChild(link)\n })\n )\n )\n }\n\n try {\n await injectAdminCss()\n } catch (err) {\n console.warn('signalk-backup: admin CSS not available', err)\n } finally {\n await import('./src/main.tsx')\n }\n "],"file":"index-BbZnGesz.js"}
|