@powersync/service-core 1.27.2 → 1.28.1
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/CHANGELOG.md +36 -0
- package/LICENSE +201 -67
- package/dist/api/RouteAPI.d.ts +6 -0
- package/dist/api/api-metrics.js +4 -0
- package/dist/api/api-metrics.js.map +1 -1
- package/dist/api/diagnostics.d.ts +5 -0
- package/dist/api/diagnostics.js +17 -2
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/metrics/connection-metrics.d.ts +28 -0
- package/dist/metrics/connection-metrics.js +55 -0
- package/dist/metrics/connection-metrics.js.map +1 -0
- package/dist/metrics/metrics-index.d.ts +1 -0
- package/dist/metrics/metrics-index.js +1 -0
- package/dist/metrics/metrics-index.js.map +1 -1
- package/dist/metrics/metrics-interfaces.d.ts +7 -1
- package/dist/metrics/metrics-interfaces.js.map +1 -1
- package/dist/modules/loader.js +8 -2
- package/dist/modules/loader.js.map +1 -1
- package/dist/replication/AbstractReplicationJob.d.ts +2 -0
- package/dist/replication/AbstractReplicationJob.js +17 -1
- package/dist/replication/AbstractReplicationJob.js.map +1 -1
- package/dist/replication/AbstractReplicator.d.ts +8 -18
- package/dist/replication/AbstractReplicator.js +63 -64
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/replication/ReplicationModule.js +0 -6
- package/dist/replication/ReplicationModule.js.map +1 -1
- package/dist/routes/configure-fastify.js +5 -1
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/endpoints/admin.js +24 -22
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +19 -27
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.js +17 -40
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.js +25 -23
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/hooks.d.ts +1 -1
- package/dist/routes/hooks.js +2 -1
- package/dist/routes/hooks.js.map +1 -1
- package/dist/routes/sync-connection.d.ts +7 -0
- package/dist/routes/sync-connection.js +34 -0
- package/dist/routes/sync-connection.js.map +1 -0
- package/dist/storage/BucketStorageFactory.d.ts +30 -22
- package/dist/storage/BucketStorageFactory.js +14 -14
- package/dist/storage/BucketStorageFactory.js.map +1 -1
- package/dist/storage/PersistedSyncConfigContent.js +2 -2
- package/dist/storage/PersistedSyncConfigContent.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +23 -2
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/storage-metrics.js +2 -1
- package/dist/storage/storage-metrics.js.map +1 -1
- package/dist/streams/BroadcastIterable.js +8 -7
- package/dist/streams/BroadcastIterable.js.map +1 -1
- package/dist/streams/LastValueSink.d.ts +2 -2
- package/dist/streams/LastValueSink.js +8 -13
- package/dist/streams/LastValueSink.js.map +1 -1
- package/dist/streams/merge.d.ts +15 -31
- package/dist/streams/merge.js +136 -152
- package/dist/streams/merge.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +3 -2
- package/dist/sync/BucketChecksumState.js +12 -5
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/sync.js +48 -38
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/util.d.ts +1 -2
- package/dist/sync/util.js +2 -5
- package/dist/sync/util.js.map +1 -1
- package/dist/system/ServiceContext.d.ts +7 -0
- package/dist/system/ServiceContext.js +3 -3
- package/dist/system/ServiceContext.js.map +1 -1
- package/dist/system/SyncConfigEngine.d.ts +135 -0
- package/dist/system/SyncConfigEngine.js +186 -0
- package/dist/system/SyncConfigEngine.js.map +1 -0
- package/dist/system/system-index.d.ts +1 -0
- package/dist/system/system-index.js +1 -0
- package/dist/system/system-index.js.map +1 -1
- package/dist/util/config/types.d.ts +4 -0
- package/package.json +8 -9
- package/src/api/RouteAPI.ts +6 -0
- package/src/api/api-metrics.ts +5 -0
- package/src/api/diagnostics.ts +22 -2
- package/src/metrics/connection-metrics.ts +75 -0
- package/src/metrics/metrics-index.ts +1 -0
- package/src/metrics/metrics-interfaces.ts +8 -1
- package/src/modules/loader.ts +16 -2
- package/src/replication/AbstractReplicationJob.ts +17 -1
- package/src/replication/AbstractReplicator.ts +83 -81
- package/src/replication/ReplicationModule.ts +0 -5
- package/src/routes/configure-fastify.ts +7 -1
- package/src/routes/endpoints/admin.ts +27 -20
- package/src/routes/endpoints/socket-route.ts +26 -38
- package/src/routes/endpoints/sync-rules.ts +22 -46
- package/src/routes/endpoints/sync-stream.ts +31 -27
- package/src/routes/hooks.ts +5 -1
- package/src/routes/sync-connection.ts +39 -0
- package/src/storage/BucketStorageFactory.ts +45 -29
- package/src/storage/PersistedSyncConfigContent.ts +2 -2
- package/src/storage/SyncRulesBucketStorage.ts +23 -2
- package/src/storage/storage-metrics.ts +2 -1
- package/src/streams/BroadcastIterable.ts +8 -7
- package/src/streams/LastValueSink.ts +10 -16
- package/src/streams/merge.ts +149 -169
- package/src/sync/BucketChecksumState.ts +17 -5
- package/src/sync/sync.ts +71 -57
- package/src/sync/util.ts +2 -7
- package/src/system/ServiceContext.ts +8 -3
- package/src/system/SyncConfigEngine.ts +247 -0
- package/src/system/system-index.ts +1 -0
- package/src/util/config/types.ts +4 -0
- package/test/src/AbstractReplicator.test.ts +375 -45
- package/test/src/PersistedSyncConfigContent.test.ts +5 -5
- package/test/src/SyncConfigEngine.test.ts +208 -0
- package/test/src/broadcast_iterable.test.ts +59 -31
- package/test/src/config.test.ts +65 -3
- package/test/src/connection-metrics-export.test.ts +76 -0
- package/test/src/connection-metrics.test.ts +184 -0
- package/test/src/diagnostics.test.ts +3 -3
- package/test/src/last_value_sink.test.ts +34 -0
- package/test/src/merge_iterable.test.ts +304 -55
- package/test/src/module-loader.test.ts +14 -1
- package/test/src/recording-metrics.ts +36 -0
- package/test/src/routes/admin.test.ts +2 -2
- package/test/src/routes/concurrency-limit.test.ts +108 -0
- package/test/src/routes/connection-metrics.test.ts +269 -0
- package/test/src/routes/invalid-config.test.ts +184 -0
- package/test/src/routes/mocks.ts +26 -13
- package/test/src/routes/stream-disconnect.integration.test.ts +129 -0
- package/test/src/routes/stream.test.ts +200 -107
- package/test/src/routes/sync-rules.test.ts +19 -1
- package/test/src/source_table_config.test.ts +7 -7
- package/test/src/sync/BucketChecksumState.test.ts +10 -10
- package/test/src/sync/stream_response.test.ts +389 -0
- package/test/src/sync/util.test.ts +14 -3
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { container, logger } from '@powersync/lib-services-framework';
|
|
1
|
+
import { container, logger, ReplicationAbortedError } from '@powersync/lib-services-framework';
|
|
2
2
|
export class AbstractReplicationJob {
|
|
3
3
|
options;
|
|
4
4
|
logger;
|
|
@@ -46,6 +46,22 @@ export class AbstractReplicationJob {
|
|
|
46
46
|
get rateLimiter() {
|
|
47
47
|
return this.options.rateLimiter;
|
|
48
48
|
}
|
|
49
|
+
/** Log expected restarts without reporting them as replication failures. */
|
|
50
|
+
shouldReportReplicationError(error) {
|
|
51
|
+
if (this.isStopped) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (error instanceof ReplicationAbortedError) {
|
|
55
|
+
if (error.cause != null) {
|
|
56
|
+
this.logger.warn('Replication aborted', error);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.logger.info('Replication aborted', error);
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
49
65
|
get isStopped() {
|
|
50
66
|
return this.abortController.signal.aborted;
|
|
51
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractReplicationJob.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicationJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractReplicationJob.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicationJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAY/F,MAAM,OAAgB,sBAAsB;IAKV;IAJtB,MAAM,CAAiB;IACvB,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,oBAAoB,GAAyB,IAAI,CAAC;IAE5D,YAAgC,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAYD;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,EAAE;aACzC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;YACZ,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE;gBACtC,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,CAAC,EAAE;iBACpB;aACF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;aACD,OAAO,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,oBAAoB,CAAC;IAClC,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAc,IAAI;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED,4EAA4E;IAClE,4BAA4B,CAAC,KAAc;QACnD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;YAC7C,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC;CAMF"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { type SyncConfig } from '@powersync/service-sync-rules';
|
|
2
1
|
import winston from 'winston';
|
|
3
2
|
import { MetricsEngine } from '../metrics/MetricsEngine.js';
|
|
4
3
|
import * as storage from '../storage/storage-index.js';
|
|
5
4
|
import { StorageEngine } from '../storage/storage-index.js';
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
5
|
+
import { SyncConfigEngine } from '../system/SyncConfigEngine.js';
|
|
6
|
+
import { ResolvedPowerSyncConfig } from '../util/config/types.js';
|
|
8
7
|
import { AbstractReplicationJob } from './AbstractReplicationJob.js';
|
|
9
8
|
import { ErrorRateLimiter } from './ErrorRateLimiter.js';
|
|
10
9
|
import { ConnectionTestResult } from './ReplicationModule.js';
|
|
@@ -16,11 +15,11 @@ export interface AbstractReplicatorOptions {
|
|
|
16
15
|
id: string;
|
|
17
16
|
storageEngine: StorageEngine;
|
|
18
17
|
metricsEngine: MetricsEngine;
|
|
19
|
-
|
|
18
|
+
configuration: Pick<ResolvedPowerSyncConfig, 'sync_rules' | 'connections'>;
|
|
20
19
|
/**
|
|
21
|
-
*
|
|
20
|
+
* Context-owned admission engine shared with diagnostics; jobs use storage-owned parsed configs.
|
|
22
21
|
*/
|
|
23
|
-
|
|
22
|
+
syncConfigEngine: SyncConfigEngine;
|
|
24
23
|
/**
|
|
25
24
|
* This limits the effect of retries when there is a persistent issue.
|
|
26
25
|
*/
|
|
@@ -57,7 +56,6 @@ export declare abstract class AbstractReplicator<T extends AbstractReplicationJo
|
|
|
57
56
|
private lastPing;
|
|
58
57
|
private readonly heartbeatIntervalNanos;
|
|
59
58
|
private abortController;
|
|
60
|
-
private assertSourceCapabilities;
|
|
61
59
|
protected constructor(options: AbstractReplicatorOptions);
|
|
62
60
|
/**
|
|
63
61
|
* Create the source-specific replication job for a locked storage stream.
|
|
@@ -72,18 +70,9 @@ export declare abstract class AbstractReplicator<T extends AbstractReplicationJo
|
|
|
72
70
|
abstract cleanUp(syncRuleStorage: storage.SyncRulesBucketStorage): Promise<void>;
|
|
73
71
|
get id(): string;
|
|
74
72
|
protected get storage(): storage.BucketStorageFactory;
|
|
75
|
-
protected get syncRuleProvider(): SyncRulesProvider;
|
|
76
|
-
/**
|
|
77
|
-
* Default schema for startup sync config validation. Source modules with a known default should override this.
|
|
78
|
-
*/
|
|
79
|
-
protected get defaultSchema(): string;
|
|
80
73
|
protected get rateLimiter(): ErrorRateLimiter;
|
|
81
74
|
protected get metrics(): MetricsEngine;
|
|
82
75
|
protected get stopped(): boolean | undefined;
|
|
83
|
-
/**
|
|
84
|
-
* Register an assertion that blocks unsupported file-loaded sync configs before replication.
|
|
85
|
-
*/
|
|
86
|
-
registerSourceCapabilitiesAssertion(assertion: (config: SyncConfig) => Promise<void>): void;
|
|
87
76
|
start(): Promise<void>;
|
|
88
77
|
stop(): Promise<void>;
|
|
89
78
|
private runLoop;
|
|
@@ -91,14 +80,15 @@ export declare abstract class AbstractReplicator<T extends AbstractReplicationJo
|
|
|
91
80
|
private logReplicationStreamInfoOnce;
|
|
92
81
|
private clearReplicationStreamInfoLog;
|
|
93
82
|
/**
|
|
94
|
-
* When we load sync config from the
|
|
83
|
+
* When we load sync config from the service configuration (file, Base64, or inline content), we ignore any config loaded by other processes.
|
|
95
84
|
* The idea is that if a different process loads updated config, that process should process it, not this one.
|
|
96
85
|
*
|
|
97
86
|
* This specifically helps for cases with rolling deploys.
|
|
98
87
|
*
|
|
88
|
+
* A rejected configured sync config may still run recovery processing matching the active config.
|
|
99
89
|
* This does not apply when sync config is loaded from the database/API, instead of in the config.
|
|
100
90
|
*/
|
|
101
|
-
|
|
91
|
+
protected shouldHandleReplicationStream(replicationStream: storage.PersistedReplicationStream, loadedSyncRules: string | undefined, loadedVersionLabel: string | undefined, loadedSyncConfigInvalid?: boolean): Promise<boolean>;
|
|
102
92
|
protected createJobId(syncRuleId: number): string;
|
|
103
93
|
protected terminateStoppedReplicationStream(replicationStream: storage.PersistedReplicationStream, syncRuleStorage: storage.SyncRulesBucketStorage): Promise<void>;
|
|
104
94
|
protected terminateSyncRules(syncRuleStorage: storage.SyncRulesBucketStorage): Promise<void>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { container, ErrorCode, logger, ReplicationAbortedError } from '@powersync/lib-services-framework';
|
|
2
|
-
import { DEFAULT_TAG, SqlSyncRules } from '@powersync/service-sync-rules';
|
|
3
2
|
import { ReplicationMetric } from '@powersync/service-types';
|
|
4
3
|
import { hrtime } from 'node:process';
|
|
5
4
|
import { setTimeout as sleep } from 'node:timers/promises';
|
|
6
5
|
import * as storage from '../storage/storage-index.js';
|
|
6
|
+
import { assertAcceptedSyncConfig, SyncConfigResultStatus } from '../system/SyncConfigEngine.js';
|
|
7
7
|
// Default to 1 minute when no source-specific interval is configured.
|
|
8
8
|
const DEFAULT_HEARTBEAT_INTERVAL_SECONDS = 60;
|
|
9
9
|
// In the initial startup period, we use a short refresh interval. This helps to take over replication quickly in the case
|
|
@@ -39,7 +39,6 @@ export class AbstractReplicator {
|
|
|
39
39
|
lastPing = hrtime.bigint();
|
|
40
40
|
heartbeatIntervalNanos;
|
|
41
41
|
abortController;
|
|
42
|
-
assertSourceCapabilities;
|
|
43
42
|
constructor(options) {
|
|
44
43
|
this.options = options;
|
|
45
44
|
this.logger = logger.child({ name: `Replicator:${options.id}` });
|
|
@@ -53,15 +52,6 @@ export class AbstractReplicator {
|
|
|
53
52
|
get storage() {
|
|
54
53
|
return this.options.storageEngine.activeBucketStorage;
|
|
55
54
|
}
|
|
56
|
-
get syncRuleProvider() {
|
|
57
|
-
return this.options.syncRuleProvider;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Default schema for startup sync config validation. Source modules with a known default should override this.
|
|
61
|
-
*/
|
|
62
|
-
get defaultSchema() {
|
|
63
|
-
return 'not_applicable';
|
|
64
|
-
}
|
|
65
55
|
get rateLimiter() {
|
|
66
56
|
return this.options.rateLimiter;
|
|
67
57
|
}
|
|
@@ -71,12 +61,6 @@ export class AbstractReplicator {
|
|
|
71
61
|
get stopped() {
|
|
72
62
|
return this.abortController?.signal.aborted;
|
|
73
63
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Register an assertion that blocks unsupported file-loaded sync configs before replication.
|
|
76
|
-
*/
|
|
77
|
-
registerSourceCapabilitiesAssertion(assertion) {
|
|
78
|
-
this.assertSourceCapabilities = assertion;
|
|
79
|
-
}
|
|
80
64
|
async start() {
|
|
81
65
|
this.abortController = new AbortController();
|
|
82
66
|
this.runLoop().catch((e) => {
|
|
@@ -111,53 +95,43 @@ export class AbstractReplicator {
|
|
|
111
95
|
await Promise.all(promises);
|
|
112
96
|
}
|
|
113
97
|
async runLoop() {
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
Object.fromEntries(this.options.configuration.connections.map((connection) => [
|
|
130
|
-
connection.tag ?? DEFAULT_TAG,
|
|
131
|
-
{ type: connection.type }
|
|
132
|
-
])),
|
|
133
|
-
throwOnError: this.syncRuleProvider.exitOnError
|
|
134
|
-
});
|
|
135
|
-
storage.logSyncConfigErrors(parsed, this.logger);
|
|
136
|
-
try {
|
|
137
|
-
await this.assertSourceCapabilities?.(parsed.config);
|
|
98
|
+
const settings = this.options.configuration.sync_rules;
|
|
99
|
+
const result = await this.options.syncConfigEngine.getConfigured();
|
|
100
|
+
if (result.status === SyncConfigResultStatus.UNAVAILABLE) {
|
|
101
|
+
throw result.error;
|
|
102
|
+
}
|
|
103
|
+
const loadedSyncConfig = result.status === SyncConfigResultStatus.ACCEPTED || result.status === SyncConfigResultStatus.REJECTED
|
|
104
|
+
? result.content
|
|
105
|
+
: undefined;
|
|
106
|
+
const loadedSyncConfigInvalid = result.status === SyncConfigResultStatus.REJECTED;
|
|
107
|
+
let configuredLock;
|
|
108
|
+
if (result.status === SyncConfigResultStatus.ACCEPTED || result.status === SyncConfigResultStatus.REJECTED) {
|
|
109
|
+
storage.logSyncConfigErrors(result.diagnostics, this.logger);
|
|
110
|
+
if (result.status === SyncConfigResultStatus.REJECTED) {
|
|
111
|
+
if (settings.exit_on_error) {
|
|
112
|
+
assertAcceptedSyncConfig(result);
|
|
138
113
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
version_label: versionLabel
|
|
148
|
-
}));
|
|
149
|
-
if (lock) {
|
|
150
|
-
configuredLock = lock;
|
|
114
|
+
// A startup submission supersedes pending work even when its replacement is rejected.
|
|
115
|
+
// Do not repeat this on refresh: a later process startup is a new deployment.
|
|
116
|
+
await this.storage.stopProcessingSyncConfigs();
|
|
117
|
+
// Supersession may also have stopped recovery of an already-errored active config.
|
|
118
|
+
// Reuse the backend recovery path, which rechecks current active/pending work.
|
|
119
|
+
const active = await this.storage.getActiveSyncConfig();
|
|
120
|
+
if (active?.replicationStream.state === storage.SyncRuleState.ERRORED) {
|
|
121
|
+
await this.storage.restartReplication(active.replicationStream.replicationStreamId);
|
|
151
122
|
}
|
|
152
123
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
124
|
+
else {
|
|
125
|
+
const { lock } = await this.storage.configureSyncRules({
|
|
126
|
+
config: result.compiled,
|
|
127
|
+
lock: true,
|
|
128
|
+
version_label: settings.version_label
|
|
129
|
+
});
|
|
130
|
+
configuredLock = lock;
|
|
157
131
|
}
|
|
158
132
|
}
|
|
159
133
|
else {
|
|
160
|
-
this.logger.info('No sync config
|
|
134
|
+
this.logger.info('No sync config loaded - using stored deployments');
|
|
161
135
|
}
|
|
162
136
|
let useFastRefresh = true;
|
|
163
137
|
const fastRefreshDeadline = Date.now() + FAST_REFRESH_TIMEOUT_MS;
|
|
@@ -167,7 +141,8 @@ export class AbstractReplicator {
|
|
|
167
141
|
const refreshResult = await this.refresh({
|
|
168
142
|
configuredLock,
|
|
169
143
|
loadedSyncConfig,
|
|
170
|
-
|
|
144
|
+
loadedSyncConfigInvalid,
|
|
145
|
+
loadedVersionLabel: settings.version_label
|
|
171
146
|
});
|
|
172
147
|
if (refreshResult.replicationJobStarted || Date.now() >= fastRefreshDeadline) {
|
|
173
148
|
useFastRefresh = false;
|
|
@@ -210,7 +185,7 @@ export class AbstractReplicator {
|
|
|
210
185
|
const jobId = replicationStream.replicationJobId;
|
|
211
186
|
const existingJob = existingJobs.get(jobId);
|
|
212
187
|
const syncConfigMismatchMessage = 'Ignoring replication stream for sync config not loaded by this process';
|
|
213
|
-
if (!this.shouldHandleReplicationStream(replicationStream, options?.loadedSyncConfig, options?.loadedVersionLabel)) {
|
|
188
|
+
if (!(await this.shouldHandleReplicationStream(replicationStream, options?.loadedSyncConfig, options?.loadedVersionLabel, options?.loadedSyncConfigInvalid))) {
|
|
214
189
|
this.logReplicationStreamInfoOnce(replicationStream, 'sync-config-mismatch', () => {
|
|
215
190
|
replicationStream.logger.info(syncConfigMismatchMessage);
|
|
216
191
|
});
|
|
@@ -332,20 +307,44 @@ export class AbstractReplicator {
|
|
|
332
307
|
}
|
|
333
308
|
}
|
|
334
309
|
/**
|
|
335
|
-
* When we load sync config from the
|
|
310
|
+
* When we load sync config from the service configuration (file, Base64, or inline content), we ignore any config loaded by other processes.
|
|
336
311
|
* The idea is that if a different process loads updated config, that process should process it, not this one.
|
|
337
312
|
*
|
|
338
313
|
* This specifically helps for cases with rolling deploys.
|
|
339
314
|
*
|
|
315
|
+
* A rejected configured sync config may still run recovery processing matching the active config.
|
|
340
316
|
* This does not apply when sync config is loaded from the database/API, instead of in the config.
|
|
341
317
|
*/
|
|
342
|
-
shouldHandleReplicationStream(replicationStream, loadedSyncRules, loadedVersionLabel) {
|
|
318
|
+
async shouldHandleReplicationStream(replicationStream, loadedSyncRules, loadedVersionLabel, loadedSyncConfigInvalid = false) {
|
|
343
319
|
if (loadedSyncRules == null) {
|
|
320
|
+
// Without loaded content, handle stored deployments regardless of their source.
|
|
344
321
|
return true;
|
|
345
322
|
}
|
|
323
|
+
// A local config was loaded; check pending deployment ownership below.
|
|
346
324
|
const processingConfig = replicationStream.syncConfigContent.find((syncConfig) => syncConfig.syncConfigState == storage.SyncRuleState.PROCESSING);
|
|
347
|
-
|
|
348
|
-
|
|
325
|
+
if (processingConfig == null) {
|
|
326
|
+
// There aren't any processing configs here, there may be active configs, so this deployment can handle the stream.
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
// Preserve ownership of matching deployments already stored by an older service, even
|
|
330
|
+
// if this version rejects their YAML. In incremental storage they may share a stream
|
|
331
|
+
// with the active config. We block new invalid deployments, not existing processing work.
|
|
332
|
+
if (processingConfig.sync_rules_content == loadedSyncRules &&
|
|
333
|
+
processingConfig.version_label == loadedVersionLabel) {
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
if (loadedSyncConfigInvalid) {
|
|
337
|
+
// Recovery and manual reprocessing may rebuild the active config while this process has
|
|
338
|
+
// rejected its configured sync config. Allow that rebuild, but not another instance's unrelated
|
|
339
|
+
// pending deployment. An ERRORED active config still identifies the content being recovered.
|
|
340
|
+
// Manual reprocessing can select a newer storage version, so match config identity only.
|
|
341
|
+
const active = await this.storage.getActiveSyncConfig();
|
|
342
|
+
return (active != null &&
|
|
343
|
+
processingConfig.sync_rules_content == active.content.sync_rules_content &&
|
|
344
|
+
processingConfig.version_label == active.content.version_label);
|
|
345
|
+
}
|
|
346
|
+
// Leave unrelated pending deployments to a worker that loaded them.
|
|
347
|
+
return false;
|
|
349
348
|
}
|
|
350
349
|
createJobId(syncRuleId) {
|
|
351
350
|
return `${this.id}-${syncRuleId}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractReplicator.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AbstractReplicator.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as t from 'ts-codec';
|
|
2
2
|
import { schema } from '@powersync/lib-services-framework';
|
|
3
3
|
import * as types from '@powersync/service-types';
|
|
4
|
-
import * as api from '../api/api-index.js';
|
|
5
4
|
import * as modules from '../modules/modules-index.js';
|
|
6
5
|
/**
|
|
7
6
|
* A replication module describes all the functionality that PowerSync requires to
|
|
@@ -44,11 +43,6 @@ export class ReplicationModule extends modules.AbstractModule {
|
|
|
44
43
|
context.routerEngine.registerAPI(sourceAPI);
|
|
45
44
|
if (context.replicationEngine) {
|
|
46
45
|
const replicator = this.createReplicator(context);
|
|
47
|
-
if (sourceAPI.validateSourceCapabilities != null) {
|
|
48
|
-
// KLUDGE: Reuse the adapter validation for filesystem-loaded configs.
|
|
49
|
-
// A shared validation interface could replace this registration through the route adapter in the future.
|
|
50
|
-
replicator.registerSourceCapabilitiesAssertion((config) => api.assertSourceCapabilities(sourceAPI, config));
|
|
51
|
-
}
|
|
52
46
|
context.replicationEngine.register(replicator);
|
|
53
47
|
}
|
|
54
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReplicationModule.js","sourceRoot":"","sources":["../../src/replication/ReplicationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ReplicationModule.js","sourceRoot":"","sources":["../../src/replication/ReplicationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AA2BvD;;;GAGG;AACH,MAAM,OAAgB,iBACpB,SAAQ,OAAO,CAAC,cAAc;IAGpB,IAAI,CAAS;IACb,YAAY,CAAa;IACzB,aAAa,CAAsB;IAE7C;;;OAGG;IACH,YAAsB,OAAiC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAeD;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,OAA8B;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACvC,gEAAgE;YAChE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/G,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,6CAA6C;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,iCAAiC,IAAI,CAAC,IAAI,2DAA2D,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAY,CAAC;QACxD,yEAAyE;QACzE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/C,2GAA2G;QAC3G,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAES,YAAY,CAAC,MAAe;QACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEO,cAAc,CAAC,MAAe;QACpC,MAAM,SAAS,GAAG,MAAM;aACrB,eAAe;QACd,4DAA4D;QAC5D,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;YACtC,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;SACvC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;QAEf,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,mBAAmB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAES,YAAY,CAAC,cAAsB;QAC3C,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { registerFastifyErrorHandler, registerFastifyNotFoundHandler, registerFastifyRoutes } from './route-register.js';
|
|
2
|
+
import { recordSyncConnection, SyncCloseReason, SyncTransport } from '../metrics/connection-metrics.js';
|
|
2
3
|
import { ADMIN_ROUTES } from './endpoints/admin.js';
|
|
3
4
|
import { CHECKPOINT_ROUTES } from './endpoints/checkpointing.js';
|
|
4
5
|
import { PROBES_ROUTES } from './endpoints/probes.js';
|
|
@@ -64,7 +65,10 @@ export function configureFastifyServer(server, options) {
|
|
|
64
65
|
server.register(async function (childContext) {
|
|
65
66
|
registerFastifyRoutes(childContext, generateContext, routes.sync_stream?.routes ?? DEFAULT_ROUTE_OPTIONS.sync_stream.routes);
|
|
66
67
|
// Limit the active concurrent requests
|
|
67
|
-
childContext.addHook('onRequest', createRequestQueueHook(routes.sync_stream?.queue_options ?? DEFAULT_ROUTE_OPTIONS.sync_stream.queue_options)
|
|
68
|
+
childContext.addHook('onRequest', createRequestQueueHook(routes.sync_stream?.queue_options ?? DEFAULT_ROUTE_OPTIONS.sync_stream.queue_options, () => recordSyncConnection(service_context.metricsEngine, {
|
|
69
|
+
transport: SyncTransport.HttpStream,
|
|
70
|
+
closeReason: SyncCloseReason.ConcurrencyLimit
|
|
71
|
+
})));
|
|
68
72
|
});
|
|
69
73
|
}
|
|
70
74
|
//# sourceMappingURL=configure-fastify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-fastify.js","sourceRoot":"","sources":["../../src/routes/configure-fastify.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"configure-fastify.js","sourceRoot":"","sources":["../../src/routes/configure-fastify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as sqlite from 'node:sqlite';
|
|
2
|
+
import { assertAcceptedSyncConfig, assertConfiguredSyncConfigValid } from '../../system/SyncConfigEngine.js';
|
|
2
3
|
import { ErrorCode, errors, router, schema } from '@powersync/lib-services-framework';
|
|
3
|
-
import { nodeSqlite,
|
|
4
|
+
import { nodeSqlite, parseSyncConfig, StaticSchema } from '@powersync/service-sync-rules';
|
|
4
5
|
import { internal_routes } from '@powersync/service-types';
|
|
5
6
|
import { DEFAULT_HYDRATION_STATE } from '@powersync/service-sync-rules';
|
|
6
7
|
import * as api from '../../api/api-index.js';
|
|
@@ -48,11 +49,13 @@ export const diagnostics = routeDefinition({
|
|
|
48
49
|
}
|
|
49
50
|
};
|
|
50
51
|
const apiHandler = service_context.routerEngine.getAPI();
|
|
52
|
+
const rejectedConfig = api.getInvalidLocalSyncConfigStatus(await service_context.syncConfigEngine.getConfigured(), include_content, service_context.configuration.sync_rules.version_label);
|
|
51
53
|
const status = await apiHandler.getConnectionStatus();
|
|
52
54
|
if (!status) {
|
|
53
55
|
return internal_routes.DiagnosticsResponse.encode({
|
|
54
56
|
...serviceResponse,
|
|
55
|
-
connections: []
|
|
57
|
+
connections: [],
|
|
58
|
+
deploying_sync_rules: rejectedConfig
|
|
56
59
|
});
|
|
57
60
|
}
|
|
58
61
|
const { storageEngine: { activeBucketStorage }, configuration } = service_context;
|
|
@@ -65,14 +68,18 @@ export const diagnostics = routeDefinition({
|
|
|
65
68
|
live_status: true,
|
|
66
69
|
active: true
|
|
67
70
|
}, active?.storage);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
// Prefer validation errors from this instance's configured content: rejected configs are
|
|
72
|
+
// never persisted, so stored pending work may belong to an earlier deployment. Fall back
|
|
73
|
+
// to stored deployment status when there is no rejected config to report.
|
|
74
|
+
const deploying_status = rejectedConfig ??
|
|
75
|
+
(deploying == null
|
|
76
|
+
? undefined
|
|
77
|
+
: await api.getSyncRulesStatus(apiHandler, deploying.content, {
|
|
78
|
+
include_content,
|
|
79
|
+
check_connection: status.connected,
|
|
80
|
+
live_status: true,
|
|
81
|
+
active: false
|
|
82
|
+
}, deploying.storage));
|
|
76
83
|
return internal_routes.DiagnosticsResponse.encode({
|
|
77
84
|
...serviceResponse,
|
|
78
85
|
connections: [
|
|
@@ -115,6 +122,7 @@ export const reprocess = routeDefinition({
|
|
|
115
122
|
description: 'Busy processing sync config - cannot reprocess'
|
|
116
123
|
});
|
|
117
124
|
}
|
|
125
|
+
await assertConfiguredSyncConfigValid(service_context.syncConfigEngine);
|
|
118
126
|
const active = await activeBucketStorage.getActiveSyncConfig();
|
|
119
127
|
if (active == null) {
|
|
120
128
|
throw new errors.ServiceError({
|
|
@@ -127,19 +135,13 @@ export const reprocess = routeDefinition({
|
|
|
127
135
|
// 1. This always re-parses the source YAML. If there are changes to the Sync Streams compiler, that can affect the sync plan.
|
|
128
136
|
// 2. If the source does not set the storage version, this will update it do the current version.
|
|
129
137
|
// We can consider tweaking this behavior in the future.
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
// to a service change, we do want to report the error here.
|
|
135
|
-
throwOnError: true
|
|
136
|
-
});
|
|
137
|
-
storage.logSyncConfigErrors(parsed);
|
|
138
|
-
await api.assertSourceCapabilities(apiHandler, parsed.config);
|
|
139
|
-
const new_rules = await activeBucketStorage.updateSyncRules(storage.updateSyncRulesFromConfig(parsed, {
|
|
138
|
+
const compiled = assertAcceptedSyncConfig(await service_context.syncConfigEngine.validate(active.content.sync_rules_content));
|
|
139
|
+
storage.logSyncConfigErrors(compiled.parsed);
|
|
140
|
+
const new_rules = await activeBucketStorage.updateSyncRules({
|
|
141
|
+
config: compiled,
|
|
140
142
|
version_label: active.content.version_label,
|
|
141
143
|
forceNewReplicationStream: true
|
|
142
|
-
})
|
|
144
|
+
});
|
|
143
145
|
const baseConfig = await apiHandler.getSourceConfig();
|
|
144
146
|
return internal_routes.ReprocessResponse.encode({
|
|
145
147
|
connections: [
|
|
@@ -160,7 +162,7 @@ class FakeSyncRulesContentForValidation extends storage.PersistedSyncConfigConte
|
|
|
160
162
|
this.schema = schema;
|
|
161
163
|
}
|
|
162
164
|
parsed(options) {
|
|
163
|
-
const syncConfig =
|
|
165
|
+
const syncConfig = parseSyncConfig(this.sync_rules_content, {
|
|
164
166
|
...options,
|
|
165
167
|
schema: this.schema
|
|
166
168
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/routes/endpoints/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/routes/endpoints/admin.ts"],"names":[],"mappings":"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"}
|