@powersync/service-core 1.21.0 → 1.23.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/CHANGELOG.md +48 -0
- package/dist/api/RouteAPI.d.ts +2 -2
- package/dist/api/diagnostics.d.ts +12 -1
- package/dist/api/diagnostics.js +34 -22
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/auth/RemoteJWKSCollector.js +3 -2
- package/dist/auth/RemoteJWKSCollector.js.map +1 -1
- package/dist/entry/commands/compact-action.js +1 -1
- package/dist/entry/commands/compact-action.js.map +1 -1
- package/dist/modules/AbstractModule.d.ts +6 -2
- package/dist/modules/AbstractModule.js.map +1 -1
- package/dist/replication/AbstractReplicator.d.ts +2 -2
- package/dist/replication/AbstractReplicator.js +24 -23
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/replication/RelationCache.d.ts +9 -2
- package/dist/replication/RelationCache.js +21 -2
- package/dist/replication/RelationCache.js.map +1 -1
- package/dist/replication/ReplicationModule.d.ts +3 -3
- package/dist/replication/ReplicationModule.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +12 -12
- package/dist/routes/configure-fastify.js +3 -1
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/endpoints/admin.d.ts +24 -24
- package/dist/routes/endpoints/admin.js +49 -35
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/routes/endpoints/checkpointing.js +1 -1
- package/dist/routes/endpoints/checkpointing.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +1 -1
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.js +22 -13
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.js +1 -1
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/route-register.d.ts +2 -0
- package/dist/routes/route-register.js +65 -3
- package/dist/routes/route-register.js.map +1 -1
- package/dist/runner/teardown.js +8 -8
- package/dist/runner/teardown.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +29 -6
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/BucketStorageFactory.d.ts +26 -27
- package/dist/storage/BucketStorageFactory.js +5 -19
- package/dist/storage/BucketStorageFactory.js.map +1 -1
- package/dist/storage/ParsedSyncConfigSet.d.ts +23 -0
- package/dist/storage/ParsedSyncConfigSet.js +2 -0
- package/dist/storage/ParsedSyncConfigSet.js.map +1 -0
- package/dist/storage/PersistedReplicationStream.d.ts +32 -0
- package/dist/storage/PersistedReplicationStream.js +26 -0
- package/dist/storage/PersistedReplicationStream.js.map +1 -0
- package/dist/storage/PersistedSyncConfigContent.d.ts +60 -0
- package/dist/storage/PersistedSyncConfigContent.js +123 -0
- package/dist/storage/PersistedSyncConfigContent.js.map +1 -0
- package/dist/storage/PersistedSyncConfigStatus.d.ts +13 -0
- package/dist/storage/PersistedSyncConfigStatus.js +2 -0
- package/dist/storage/PersistedSyncConfigStatus.js.map +1 -0
- package/dist/storage/SourceEntity.d.ts +8 -1
- package/dist/storage/SourceTable.d.ts +37 -10
- package/dist/storage/SourceTable.js +50 -14
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +80 -24
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/implementation/BucketDefinitionMapping.d.ts +117 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js +277 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js.map +1 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.d.ts +6 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.js +31 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.js.map +1 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.d.ts +17 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js +62 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js.map +1 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.d.ts +15 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.js +20 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.js.map +1 -0
- package/dist/storage/storage-index.d.ts +8 -1
- package/dist/storage/storage-index.js +8 -1
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +4 -4
- package/dist/sync/BucketChecksumState.js +1 -1
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/sync.d.ts +2 -2
- package/dist/sync/sync.js +5 -0
- package/dist/sync/sync.js.map +1 -1
- package/dist/tracing/PerformanceTracer.d.ts +17 -1
- package/dist/tracing/PerformanceTracer.js +3 -0
- package/dist/tracing/PerformanceTracer.js.map +1 -1
- package/dist/util/checkpointing.js +1 -1
- package/dist/util/checkpointing.js.map +1 -1
- package/dist/util/config/types.d.ts +1 -1
- package/dist/util/lsn.d.ts +4 -0
- package/dist/util/lsn.js +10 -0
- package/dist/util/lsn.js.map +1 -1
- package/dist/util/util-index.d.ts +1 -0
- package/dist/util/util-index.js +1 -0
- package/dist/util/util-index.js.map +1 -1
- package/dist/util/utils.d.ts +5 -0
- package/dist/util/utils.js +7 -0
- package/dist/util/utils.js.map +1 -1
- package/package.json +6 -7
- package/src/api/RouteAPI.ts +2 -2
- package/src/api/diagnostics.ts +45 -28
- package/src/auth/RemoteJWKSCollector.ts +3 -1
- package/src/entry/commands/compact-action.ts +1 -1
- package/src/modules/AbstractModule.ts +6 -2
- package/src/replication/AbstractReplicator.ts +27 -26
- package/src/replication/RelationCache.ts +23 -4
- package/src/replication/ReplicationModule.ts +2 -3
- package/src/routes/configure-fastify.ts +8 -1
- package/src/routes/endpoints/admin.ts +75 -49
- package/src/routes/endpoints/checkpointing.ts +1 -1
- package/src/routes/endpoints/socket-route.ts +1 -1
- package/src/routes/endpoints/sync-rules.ts +23 -13
- package/src/routes/endpoints/sync-stream.ts +1 -1
- package/src/routes/route-register.ts +73 -4
- package/src/runner/teardown.ts +8 -8
- package/src/storage/BucketStorageBatch.ts +32 -7
- package/src/storage/BucketStorageFactory.ts +36 -40
- package/src/storage/ParsedSyncConfigSet.ts +25 -0
- package/src/storage/PersistedReplicationStream.ts +55 -0
- package/src/storage/PersistedSyncConfigContent.ts +188 -0
- package/src/storage/PersistedSyncConfigStatus.ts +14 -0
- package/src/storage/SourceEntity.ts +9 -1
- package/src/storage/SourceTable.ts +72 -21
- package/src/storage/SyncRulesBucketStorage.ts +87 -26
- package/src/storage/implementation/BucketDefinitionMapping.ts +436 -0
- package/src/storage/implementation/IncrementalReprocessingCompatibility.ts +41 -0
- package/src/storage/implementation/IncrementalReprocessingSyncConfigLog.ts +109 -0
- package/src/storage/implementation/ReplicationStreamStorageIds.ts +21 -0
- package/src/storage/storage-index.ts +9 -1
- package/src/sync/BucketChecksumState.ts +5 -5
- package/src/sync/sync.ts +8 -3
- package/src/tracing/PerformanceTracer.ts +24 -1
- package/src/util/checkpointing.ts +1 -1
- package/src/util/config/types.ts +1 -1
- package/src/util/lsn.ts +9 -0
- package/src/util/util-index.ts +1 -0
- package/src/util/utils.ts +8 -0
- package/test/src/auth.test.ts +11 -0
- package/test/src/diagnostics.test.ts +64 -33
- package/test/src/module-loader.test.ts +33 -1
- package/test/src/routes/admin.test.ts +180 -18
- package/test/src/routes/error-handler.integration.test.ts +275 -0
- package/test/src/routes/mocks.ts +6 -2
- package/test/src/routes/stream.test.ts +15 -4
- package/test/src/storage/SourceTable.test.ts +89 -0
- package/test/src/sync/BucketChecksumState.test.ts +25 -17
- package/tsconfig.json +1 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/storage/PersistedSyncRulesContent.d.ts +0 -59
- package/dist/storage/PersistedSyncRulesContent.js +0 -100
- package/dist/storage/PersistedSyncRulesContent.js.map +0 -1
- package/src/storage/PersistedSyncRulesContent.ts +0 -174
|
@@ -62,7 +62,7 @@ export const deploySyncRules = routeDefinition({
|
|
|
62
62
|
}
|
|
63
63
|
const sync_rules = await storageEngine.activeBucketStorage.updateSyncRules(updateSyncRulesFromConfig(syncConfig));
|
|
64
64
|
return {
|
|
65
|
-
slot_name: sync_rules.
|
|
65
|
+
slot_name: sync_rules.replicationStreamName
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
});
|
|
@@ -91,29 +91,30 @@ export const currentSyncRules = routeDefinition({
|
|
|
91
91
|
handler: async (payload) => {
|
|
92
92
|
const { service_context } = payload.context;
|
|
93
93
|
const { storageEngine: { activeBucketStorage } } = service_context;
|
|
94
|
-
const
|
|
95
|
-
if (!
|
|
94
|
+
const active = await activeBucketStorage.getActiveSyncConfig();
|
|
95
|
+
if (!active) {
|
|
96
96
|
throw new errors.ServiceError({
|
|
97
97
|
status: 422,
|
|
98
98
|
code: ErrorCode.PSYNC_S4104,
|
|
99
99
|
description: 'No active sync config'
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
|
+
const sync_rules = active.content;
|
|
102
103
|
const apiHandler = service_context.routerEngine.getAPI();
|
|
103
104
|
const info = await debugSyncRules(apiHandler, sync_rules.sync_rules_content);
|
|
104
|
-
const next = await activeBucketStorage.
|
|
105
|
-
const next_info = next ? await debugSyncRules(apiHandler, next.sync_rules_content) : null;
|
|
105
|
+
const next = await activeBucketStorage.getDeployingSyncConfig();
|
|
106
|
+
const next_info = next ? await debugSyncRules(apiHandler, next.content.sync_rules_content) : null;
|
|
106
107
|
const response = {
|
|
107
108
|
current: {
|
|
108
|
-
slot_name: sync_rules.
|
|
109
|
+
slot_name: sync_rules.replicationStreamName,
|
|
109
110
|
content: sync_rules.sync_rules_content,
|
|
110
111
|
...info
|
|
111
112
|
},
|
|
112
113
|
next: next == null
|
|
113
114
|
? null
|
|
114
115
|
: {
|
|
115
|
-
slot_name: next.
|
|
116
|
-
content: next.sync_rules_content,
|
|
116
|
+
slot_name: next.content.replicationStreamName,
|
|
117
|
+
content: next.content.sync_rules_content,
|
|
117
118
|
...next_info
|
|
118
119
|
}
|
|
119
120
|
};
|
|
@@ -128,22 +129,30 @@ export const reprocessSyncRules = routeDefinition({
|
|
|
128
129
|
validator: schema.createTsCodecValidator(ReprocessSyncRulesRequest),
|
|
129
130
|
handler: async (payload) => {
|
|
130
131
|
const { storageEngine: { activeBucketStorage } } = payload.context.service_context;
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
132
|
+
const next = await activeBucketStorage.getDeployingSyncConfig();
|
|
133
|
+
if (next != null) {
|
|
134
|
+
throw new errors.ServiceError({
|
|
135
|
+
status: 409,
|
|
136
|
+
code: ErrorCode.PSYNC_S4106,
|
|
137
|
+
description: 'Busy processing sync config - cannot reprocess'
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const active = await activeBucketStorage.getActiveSyncConfig();
|
|
141
|
+
if (active == null) {
|
|
134
142
|
throw new errors.ServiceError({
|
|
135
143
|
status: 422,
|
|
136
144
|
code: ErrorCode.PSYNC_S4104,
|
|
137
145
|
description: 'No active sync config'
|
|
138
146
|
});
|
|
139
147
|
}
|
|
140
|
-
const
|
|
148
|
+
const sync_rules = active.content;
|
|
149
|
+
const new_rules = await activeBucketStorage.updateSyncRules(updateSyncRulesFromYaml(sync_rules.sync_rules_content, {
|
|
141
150
|
// This sync config already passed validation. But if the rules are not valid anymore due
|
|
142
151
|
// to a service change, we do want to report the error here.
|
|
143
152
|
validate: true
|
|
144
153
|
}));
|
|
145
154
|
return {
|
|
146
|
-
slot_name: new_rules.
|
|
155
|
+
slot_name: new_rules.replicationStreamName
|
|
147
156
|
};
|
|
148
157
|
}
|
|
149
158
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-rules.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-rules.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync-rules.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ export const syncStreamed = routeDefinition({
|
|
|
54
54
|
description: 'Service temporarily unavailable'
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
const bucketStorage = await storageEngine.activeBucketStorage.
|
|
57
|
+
const bucketStorage = (await storageEngine.activeBucketStorage.getActiveSyncConfig())?.storage;
|
|
58
58
|
if (bucketStorage == null) {
|
|
59
59
|
throw new errors.ServiceError({
|
|
60
60
|
status: 500,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,qCAAuB,CAAA;AACzB,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AACjD,MAAM,2BAA2B,GAAG,uCAAuC,CAAC;AAC5E,MAAM,qBAAqB,GAAG,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,UAAU,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAC9F,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACnE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC;QACpF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,8FAA8F;QAC9F,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;YAC5C,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,2BAA2B;YAC5E,CAAC,CAAC,KAAK,CAAC;QAEV,MAAM,CAAC,WAAW,GAAG;YACnB,GAAG,MAAM,CAAC,WAAW;YACrB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,aAAc,CAAC,UAAU;YAClD,IAAI,EAAE,OAAO;SACd,CAAC;QACF,MAAM,OAAO,GAA0E;YACrF,SAAS,EAAE,QAAQ,IAAI,EAAE;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,aAAc,CAAC,YAAY;YACpD,UAAU,EAAE,SAAmB;YAC/B,8DAA8D;YAC9D,OAAO,EAAE,IAAI,IAAI,CAAC,aAAc,CAAC,GAAG,GAAG,IAAI,CAAC;YAC5C,YAAY,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC;SACpC,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;gBAC5B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,WAAW,EAAE,iCAAiC;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,3 +12,5 @@ export declare function registerFastifyRoutes(app: fastify.FastifyInstance, cont
|
|
|
12
12
|
* Registers a custom not-found handler to ensure 404 error responses have the same schema as other service errors.
|
|
13
13
|
*/
|
|
14
14
|
export declare function registerFastifyNotFoundHandler(app: fastify.FastifyInstance): void;
|
|
15
|
+
/** Registers a custom error handler that emits service-error JSON honouring any negotiated `Content-Encoding`. */
|
|
16
|
+
export declare function registerFastifyErrorHandler(app: fastify.FastifyInstance): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as zlib from 'node:zlib';
|
|
1
2
|
import * as uuid from 'uuid';
|
|
2
3
|
import { errors, logger, RouteNotFound, router } from '@powersync/lib-services-framework';
|
|
3
4
|
/**
|
|
@@ -85,17 +86,78 @@ export function registerFastifyNotFoundHandler(app) {
|
|
|
85
86
|
await respond(reply, serviceErrorToResponse(new RouteNotFound(request.originalUrl, request.method)));
|
|
86
87
|
});
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
+
/** Registers a custom error handler that emits service-error JSON honouring any negotiated `Content-Encoding`. */
|
|
90
|
+
export function registerFastifyErrorHandler(app) {
|
|
91
|
+
app.setErrorHandler(async (error, _request, reply) => {
|
|
92
|
+
if (reply.raw.headersSent) {
|
|
93
|
+
// Headers already flushed - reply.code/header would throw ERR_HTTP_HEADERS_SENT.
|
|
94
|
+
reply.raw.destroy(error);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const { status, data } = fastifyErrorToResponse(error);
|
|
98
|
+
if (status >= 500) {
|
|
99
|
+
logger.error('Request failed', error);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
logger.warn(`Request failed: ${error.message}`, {
|
|
103
|
+
status,
|
|
104
|
+
code: data.error.code
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const json = JSON.stringify(data);
|
|
108
|
+
// Fastify's default handler leaves `content-encoding` intact when it rewrites the body.
|
|
109
|
+
const encoding = reply.getHeader('content-encoding');
|
|
110
|
+
let body = json;
|
|
111
|
+
if (encoding === 'gzip') {
|
|
112
|
+
body = zlib.gzipSync(json);
|
|
113
|
+
}
|
|
114
|
+
else if (encoding === 'zstd') {
|
|
115
|
+
body = zlib.zstdCompressSync(json);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
reply.removeHeader('content-encoding');
|
|
119
|
+
}
|
|
120
|
+
reply
|
|
121
|
+
.code(status)
|
|
122
|
+
.header('content-type', 'application/json; charset=utf-8')
|
|
123
|
+
.header('content-length', Buffer.byteLength(body))
|
|
124
|
+
.send(body);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function serviceErrorToResponse(serviceError) {
|
|
89
128
|
return new router.RouterResponse({
|
|
90
|
-
status:
|
|
129
|
+
status: serviceError.errorData.status || 500,
|
|
91
130
|
headers: {
|
|
92
131
|
'Content-Type': 'application/json'
|
|
93
132
|
},
|
|
94
133
|
data: {
|
|
95
|
-
error:
|
|
134
|
+
error: serviceError.errorData
|
|
96
135
|
}
|
|
97
136
|
});
|
|
98
137
|
}
|
|
138
|
+
function fastifyErrorToResponse(error) {
|
|
139
|
+
// Preserve 4xx status from Fastify built-ins (validation, invalid JSON body, etc.) instead of collapsing to 500.
|
|
140
|
+
if (typeof error?.statusCode === 'number' &&
|
|
141
|
+
error.statusCode >= 400 &&
|
|
142
|
+
error.statusCode < 500 &&
|
|
143
|
+
typeof error.code === 'string') {
|
|
144
|
+
return new router.RouterResponse({
|
|
145
|
+
status: error.statusCode,
|
|
146
|
+
headers: {
|
|
147
|
+
'Content-Type': 'application/json'
|
|
148
|
+
},
|
|
149
|
+
data: {
|
|
150
|
+
error: {
|
|
151
|
+
name: error.name,
|
|
152
|
+
code: error.code,
|
|
153
|
+
status: error.statusCode,
|
|
154
|
+
description: error.message
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return serviceErrorToResponse(errors.asServiceError(error));
|
|
160
|
+
}
|
|
99
161
|
async function respond(reply, response) {
|
|
100
162
|
Object.keys(response.headers).forEach((key) => {
|
|
101
163
|
reply.header(key, response.headers[key]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-register.js","sourceRoot":"","sources":["../../src/routes/route-register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,MAAM,EAAc,MAAM,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"route-register.js","sourceRoot":"","sources":["../../src/routes/route-register.ts"],"names":[],"mappings":"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"}
|
package/dist/runner/teardown.js
CHANGED
|
@@ -35,20 +35,20 @@ async function terminateSyncRules(storageFactory, moduleManager) {
|
|
|
35
35
|
const locks = [];
|
|
36
36
|
while (Date.now() - start < 120_000) {
|
|
37
37
|
let retry = false;
|
|
38
|
-
const
|
|
38
|
+
const replicatingStreams = await storageFactory.getReplicatingReplicationStreams();
|
|
39
39
|
// Lock all the replicating replication streams
|
|
40
|
-
for (const
|
|
41
|
-
const lock = await
|
|
40
|
+
for (const replicatingStream of replicatingStreams) {
|
|
41
|
+
const lock = await replicatingStream.lock();
|
|
42
42
|
locks.push(lock);
|
|
43
43
|
}
|
|
44
|
-
const
|
|
45
|
-
const
|
|
44
|
+
const stoppedStreams = await storageFactory.getStoppedReplicationStreams();
|
|
45
|
+
const combinedStreams = [...replicatingStreams, ...stoppedStreams];
|
|
46
46
|
try {
|
|
47
47
|
// Clean up any module specific configuration for the replication stream
|
|
48
|
-
await moduleManager.tearDown({ syncRules:
|
|
48
|
+
await moduleManager.tearDown({ replicationStreams: combinedStreams, syncRules: combinedStreams });
|
|
49
49
|
// Mark the replication stream as terminated
|
|
50
|
-
for (let
|
|
51
|
-
const syncRulesStorage = storageFactory.getInstance(
|
|
50
|
+
for (let replicationStream of combinedStreams) {
|
|
51
|
+
const syncRulesStorage = storageFactory.getInstance(replicationStream);
|
|
52
52
|
// The storage will be dropped at the end of the teardown, so we don't need to clear it here
|
|
53
53
|
await syncRulesStorage.terminate({ clearStorage: false });
|
|
54
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runner/teardown.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,eAAe;AACf,mFAAmF;AACnF,wBAAwB;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,YAAgC;IAC7D,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC;YACxD,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,QAAQ;YAC/C,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC/C,0DAA0D;QAC1D,MAAM,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7C,MAAM,kBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;QAC1F,MAAM,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,cAA4C,EAAE,aAAoC;IAClH,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;QACpC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runner/teardown.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { InternalOpId } from '../util/utils.js';
|
|
|
5
5
|
import { ReplicationEventPayload } from './ReplicationEventPayload.js';
|
|
6
6
|
import { SourceTable, TableSnapshotStatus } from './SourceTable.js';
|
|
7
7
|
import { BatchedCustomWriteCheckpointOptions } from './storage-index.js';
|
|
8
|
+
import { ResolveTablesOptions, ResolveTablesResult } from './SyncRulesBucketStorage.js';
|
|
8
9
|
export declare const DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS: ResolvedBucketBatchCommitOptions;
|
|
9
10
|
export interface BucketStorageBatch extends ObserverClient<BucketBatchStorageListener>, AsyncDisposable {
|
|
10
11
|
/**
|
|
@@ -15,6 +16,10 @@ export interface BucketStorageBatch extends ObserverClient<BucketBatchStorageLis
|
|
|
15
16
|
* Last written op, if any. This may not reflect a consistent checkpoint.
|
|
16
17
|
*/
|
|
17
18
|
last_flushed_op: InternalOpId | null;
|
|
19
|
+
/**
|
|
20
|
+
* True for snapshot batches that should skip rows already present in current_data.
|
|
21
|
+
*/
|
|
22
|
+
readonly skipExistingRows: boolean;
|
|
18
23
|
/**
|
|
19
24
|
* Save an op, and potentially flush.
|
|
20
25
|
*
|
|
@@ -63,10 +68,6 @@ export interface BucketStorageBatch extends ObserverClient<BucketBatchStorageLis
|
|
|
63
68
|
* PostgreSQL logical replication slots.
|
|
64
69
|
*/
|
|
65
70
|
setResumeLsn(lsn: string): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* Get the last checkpoint LSN, from either commit or keepalive.
|
|
68
|
-
*/
|
|
69
|
-
lastCheckpointLsn: string | null;
|
|
70
71
|
/**
|
|
71
72
|
* LSN to resume from.
|
|
72
73
|
*
|
|
@@ -75,8 +76,32 @@ export interface BucketStorageBatch extends ObserverClient<BucketBatchStorageLis
|
|
|
75
76
|
resumeFromLsn: string | null;
|
|
76
77
|
markTableSnapshotDone(tables: SourceTable[], no_checkpoint_before_lsn?: string): Promise<SourceTable[]>;
|
|
77
78
|
markTableSnapshotRequired(table: SourceTable): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Mark the full replication snapshot as done without validating individual source table snapshot state.
|
|
81
|
+
*
|
|
82
|
+
* This is primarily intended for storage tests and setup helpers that manually construct storage state.
|
|
83
|
+
* Replicators should use `markSnapshotDone()` instead, because that validates that all known source tables
|
|
84
|
+
* have completed snapshotting before allowing checkpoints to be unblocked.
|
|
85
|
+
*/
|
|
78
86
|
markAllSnapshotDone(no_checkpoint_before_lsn: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Mark the full replication snapshot as done after validating that all known source tables have completed snapshotting.
|
|
89
|
+
*
|
|
90
|
+
* Replicators should use this method when completing an initial snapshot. The validation prevents races where
|
|
91
|
+
* new source tables are marked as requiring a snapshot while global snapshot finalization is running.
|
|
92
|
+
*
|
|
93
|
+
* If `throwOnConflict` is false, this will instead return early without throwing if there are source tables that still require snapshotting.
|
|
94
|
+
* Use that only in cases where concurrency is expected, and can automatically retry/continue.
|
|
95
|
+
*/
|
|
96
|
+
markSnapshotDone(no_checkpoint_before_lsn: string, options?: {
|
|
97
|
+
throwOnConflict?: boolean;
|
|
98
|
+
}): Promise<void>;
|
|
79
99
|
updateTableProgress(table: SourceTable, progress: Partial<TableSnapshotStatus>): Promise<SourceTable>;
|
|
100
|
+
/**
|
|
101
|
+
* Get the current status for an existing source table without creating or resolving a replacement table.
|
|
102
|
+
*/
|
|
103
|
+
getSourceTableStatus(table: SourceTable): Promise<SourceTable | null>;
|
|
104
|
+
resolveTables(options: ResolveTablesOptions): Promise<ResolveTablesResult>;
|
|
80
105
|
/**
|
|
81
106
|
* Queues the creation of a custom Write Checkpoint. This will be persisted after operations are flushed.
|
|
82
107
|
*/
|
|
@@ -152,8 +177,6 @@ export interface CheckpointResult {
|
|
|
152
177
|
/**
|
|
153
178
|
* True if a checkpoint was actually created by this operation. This can be false even if checkpointBlocked is false,
|
|
154
179
|
* if the checkpoint was empty.
|
|
155
|
-
*
|
|
156
|
-
* This is primarily used for testing.
|
|
157
180
|
*/
|
|
158
181
|
checkpointCreated: boolean;
|
|
159
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketStorageBatch.js","sourceRoot":"","sources":["../../src/storage/BucketStorageBatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BucketStorageBatch.js","sourceRoot":"","sources":["../../src/storage/BucketStorageBatch.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,mCAAmC,GAAqC;IACnF,sBAAsB,EAAE,IAAI;IAC5B,uBAAuB,EAAE,IAAI;CAC9B,CAAC;AAkJF,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BaseObserver } from '@powersync/lib-services-framework';
|
|
2
|
-
import { SerializedCompatibilityContext, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
2
|
+
import { SerializedCompatibilityContext, SerializedSyncPlanV1, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
3
3
|
import { ReplicationError } from '@powersync/service-types';
|
|
4
|
-
import {
|
|
4
|
+
import { PersistedReplicationStream } from './PersistedReplicationStream.js';
|
|
5
|
+
import { PersistedSyncConfigContent } from './PersistedSyncConfigContent.js';
|
|
5
6
|
import { ReplicationEventPayload } from './ReplicationEventPayload.js';
|
|
6
7
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
7
8
|
import { ReportStorage } from './ReportStorage.js';
|
|
@@ -20,17 +21,17 @@ export declare abstract class BucketStorageFactory extends BaseObserver<BucketSt
|
|
|
20
21
|
*/
|
|
21
22
|
configureSyncRules(options: UpdateSyncRulesOptions): Promise<{
|
|
22
23
|
updated: boolean;
|
|
23
|
-
persisted_sync_rules?:
|
|
24
|
+
persisted_sync_rules?: PersistedReplicationStream;
|
|
24
25
|
lock?: ReplicationLock;
|
|
25
26
|
}>;
|
|
26
27
|
/**
|
|
27
28
|
* Get a storage instance to query sync data for specific sync config.
|
|
28
29
|
*/
|
|
29
|
-
abstract getInstance(
|
|
30
|
+
abstract getInstance(replicationStream: PersistedReplicationStream, options?: GetIntanceOptions): SyncRulesBucketStorage;
|
|
30
31
|
/**
|
|
31
32
|
* Deploy new sync config.
|
|
32
33
|
*/
|
|
33
|
-
abstract updateSyncRules(options: UpdateSyncRulesOptions): Promise<
|
|
34
|
+
abstract updateSyncRules(options: UpdateSyncRulesOptions): Promise<PersistedReplicationStream>;
|
|
34
35
|
/**
|
|
35
36
|
* Indicate that a slot was removed, and we should re-sync by creating
|
|
36
37
|
* a new replication stream.
|
|
@@ -41,35 +42,23 @@ export declare abstract class BucketStorageFactory extends BaseObserver<BucketSt
|
|
|
41
42
|
*
|
|
42
43
|
* Replication should be restarted after this.
|
|
43
44
|
*/
|
|
44
|
-
abstract restartReplication(
|
|
45
|
+
abstract restartReplication(replicationStreamId: number): Promise<void>;
|
|
45
46
|
/**
|
|
46
|
-
* Get the sync config used for querying.
|
|
47
|
+
* Get the sync config and storage used for querying.
|
|
47
48
|
*/
|
|
48
|
-
|
|
49
|
+
abstract getActiveSyncConfig(): Promise<ResolvedSyncConfig | null>;
|
|
49
50
|
/**
|
|
50
|
-
* Get the sync config
|
|
51
|
+
* Get the sync config and storage that is still deploying.
|
|
51
52
|
*/
|
|
52
|
-
abstract
|
|
53
|
+
abstract getDeployingSyncConfig(): Promise<ResolvedSyncConfig | null>;
|
|
53
54
|
/**
|
|
54
|
-
* Get
|
|
55
|
+
* Get all replication streams currently replicating.
|
|
55
56
|
*/
|
|
56
|
-
|
|
57
|
+
abstract getReplicatingReplicationStreams(): Promise<PersistedReplicationStream[]>;
|
|
57
58
|
/**
|
|
58
|
-
* Get
|
|
59
|
+
* Get all replication streams stopped but not terminated yet.
|
|
59
60
|
*/
|
|
60
|
-
abstract
|
|
61
|
-
/**
|
|
62
|
-
* Get all sync config currently replicating. Typically this is the "active" and "next" sync config.
|
|
63
|
-
*/
|
|
64
|
-
abstract getReplicatingSyncRules(): Promise<PersistedSyncRulesContent[]>;
|
|
65
|
-
/**
|
|
66
|
-
* Get all sync config stopped but not terminated yet.
|
|
67
|
-
*/
|
|
68
|
-
abstract getStoppedSyncRules(): Promise<PersistedSyncRulesContent[]>;
|
|
69
|
-
/**
|
|
70
|
-
* Get the active storage instance.
|
|
71
|
-
*/
|
|
72
|
-
abstract getActiveStorage(): Promise<SyncRulesBucketStorage | null>;
|
|
61
|
+
abstract getStoppedReplicationStreams(): Promise<PersistedReplicationStream[]>;
|
|
73
62
|
/**
|
|
74
63
|
* Get storage size of active replication stream.
|
|
75
64
|
*/
|
|
@@ -88,6 +77,11 @@ export interface BucketStorageFactoryListener {
|
|
|
88
77
|
syncStorageCreated: (storage: SyncRulesBucketStorage) => void;
|
|
89
78
|
replicationEvent: (event: ReplicationEventPayload) => void;
|
|
90
79
|
}
|
|
80
|
+
export interface ResolvedSyncConfig {
|
|
81
|
+
content: PersistedSyncConfigContent;
|
|
82
|
+
replicationStream: PersistedReplicationStream;
|
|
83
|
+
storage: SyncRulesBucketStorage;
|
|
84
|
+
}
|
|
91
85
|
export interface StorageMetrics {
|
|
92
86
|
/**
|
|
93
87
|
* Size of operations (bucket_data)
|
|
@@ -120,12 +114,16 @@ export interface UpdateSyncRulesOptions {
|
|
|
120
114
|
};
|
|
121
115
|
lock?: boolean;
|
|
122
116
|
storageVersion?: number;
|
|
117
|
+
/**
|
|
118
|
+
* Only relevant if the result is used. This does not affect the persisted config.
|
|
119
|
+
*/
|
|
120
|
+
defaultSchema?: string;
|
|
123
121
|
}
|
|
124
122
|
export interface SerializedSyncPlan {
|
|
125
123
|
/**
|
|
126
124
|
* The serialized plan, from {@link serializeSyncPlan}.
|
|
127
125
|
*/
|
|
128
|
-
plan:
|
|
126
|
+
plan: SerializedSyncPlanV1;
|
|
129
127
|
compatibility: SerializedCompatibilityContext;
|
|
130
128
|
/**
|
|
131
129
|
* Event descriptors are not currently represented in the sync plan because they don't use the sync streams compiler
|
|
@@ -184,4 +182,5 @@ export interface TestStorageConfig {
|
|
|
184
182
|
factory: TestStorageFactory;
|
|
185
183
|
tableIdStrings: boolean;
|
|
186
184
|
storageVersion?: number;
|
|
185
|
+
compressedBucketStorage?: boolean;
|
|
187
186
|
}
|
|
@@ -14,13 +14,13 @@ export class BucketStorageFactory extends BaseObserver {
|
|
|
14
14
|
* Update sync config from configuration, if changed.
|
|
15
15
|
*/
|
|
16
16
|
async configureSyncRules(options) {
|
|
17
|
-
const
|
|
18
|
-
const active = await this.
|
|
19
|
-
if (
|
|
17
|
+
const deploying = await this.getDeployingSyncConfig();
|
|
18
|
+
const active = await this.getActiveSyncConfig();
|
|
19
|
+
if (deploying?.content.sync_rules_content == options.config.yaml) {
|
|
20
20
|
logger.info('Sync config unchanged');
|
|
21
21
|
return { updated: false };
|
|
22
22
|
}
|
|
23
|
-
else if (
|
|
23
|
+
else if (deploying == null && active?.content.sync_rules_content == options.config.yaml) {
|
|
24
24
|
logger.info('Sync config unchanged');
|
|
25
25
|
return { updated: false };
|
|
26
26
|
}
|
|
@@ -30,26 +30,12 @@ export class BucketStorageFactory extends BaseObserver {
|
|
|
30
30
|
return { updated: true, persisted_sync_rules, lock: persisted_sync_rules.current_lock ?? undefined };
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Get the sync config used for querying.
|
|
35
|
-
*/
|
|
36
|
-
async getActiveSyncRules(options) {
|
|
37
|
-
const content = await this.getActiveSyncRulesContent();
|
|
38
|
-
return content?.parsed(options) ?? null;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Get the sync config that will be active next once done with initial replicatino.
|
|
42
|
-
*/
|
|
43
|
-
async getNextSyncRules(options) {
|
|
44
|
-
const content = await this.getNextSyncRulesContent();
|
|
45
|
-
return content?.parsed(options) ?? null;
|
|
46
|
-
}
|
|
47
33
|
}
|
|
48
34
|
export function updateSyncRulesFromYaml(content, options) {
|
|
49
35
|
const config = SqlSyncRules.fromYaml(content, {
|
|
50
36
|
// No schema-based validation at this point
|
|
51
37
|
schema: undefined,
|
|
52
|
-
defaultSchema: 'not_applicable', // Not needed for validation
|
|
38
|
+
defaultSchema: options?.defaultSchema ?? 'not_applicable', // Not needed for validation
|
|
53
39
|
throwOnError: options?.validate ?? false
|
|
54
40
|
});
|
|
55
41
|
return updateSyncRulesFromConfig(config, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/BucketStorageFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,qBAAqB,
|
|
1
|
+
{"version":3,"file":"BucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/BucketStorageFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HydratedSyncConfig, HydrationState, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
2
|
+
/**
|
|
3
|
+
* A parsed sync config set is the identity boundary for parsed sync config state.
|
|
4
|
+
*
|
|
5
|
+
* All values on a single instance - the parsed configs, hydration state and hydrated
|
|
6
|
+
* sync config - are derived from the same parse, and may be associated with each other
|
|
7
|
+
* by object identity. Values from two different instances must never be mixed, even if
|
|
8
|
+
* they were parsed from the same persisted content.
|
|
9
|
+
*/
|
|
10
|
+
export interface ParsedSyncConfigSet {
|
|
11
|
+
readonly replicationStreamId: number;
|
|
12
|
+
readonly replicationStreamName: string;
|
|
13
|
+
readonly syncConfigs: SyncConfigWithErrors[];
|
|
14
|
+
/**
|
|
15
|
+
* For testing only.
|
|
16
|
+
*/
|
|
17
|
+
readonly hydrationState: HydrationState;
|
|
18
|
+
/**
|
|
19
|
+
* The hydrated sync config for this parse. This is a stable property: repeated reads
|
|
20
|
+
* return the same instance.
|
|
21
|
+
*/
|
|
22
|
+
readonly hydratedSyncConfig: HydratedSyncConfig;
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParsedSyncConfigSet.js","sourceRoot":"","sources":["../../src/storage/ParsedSyncConfigSet.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Logger } from 'winston';
|
|
2
|
+
import { SyncRuleState } from './BucketStorage.js';
|
|
3
|
+
import type { ParsedSyncConfigSet } from './ParsedSyncConfigSet.js';
|
|
4
|
+
import type { ParseSyncConfigOptions, PersistedSyncConfigContent } from './PersistedSyncConfigContent.js';
|
|
5
|
+
import { ReplicationLock } from './ReplicationLock.js';
|
|
6
|
+
import { StorageVersionConfig } from './StorageVersionConfig.js';
|
|
7
|
+
export declare abstract class PersistedReplicationStream implements PersistedReplicationStreamData {
|
|
8
|
+
readonly replicationStreamId: number;
|
|
9
|
+
readonly replicationJobId: string;
|
|
10
|
+
readonly replicationStreamName: string;
|
|
11
|
+
readonly state: SyncRuleState;
|
|
12
|
+
readonly storageVersion: number;
|
|
13
|
+
readonly logger: Logger;
|
|
14
|
+
abstract readonly syncConfigContent: readonly PersistedSyncConfigContent[];
|
|
15
|
+
abstract readonly current_lock: ReplicationLock | null;
|
|
16
|
+
constructor(data: PersistedReplicationStreamData);
|
|
17
|
+
getStorageConfig(): StorageVersionConfig;
|
|
18
|
+
abstract lock(): Promise<ReplicationLock>;
|
|
19
|
+
abstract parsed(options: ParseSyncConfigOptions): ParsedSyncConfigSet;
|
|
20
|
+
}
|
|
21
|
+
export interface PersistedReplicationStreamData {
|
|
22
|
+
readonly replicationStreamId: number;
|
|
23
|
+
readonly replicationStreamName: string;
|
|
24
|
+
readonly state: SyncRuleState;
|
|
25
|
+
readonly storageVersion: number;
|
|
26
|
+
/**
|
|
27
|
+
* Uniquely identifies a job, as a combination of replication stream and processing sync configs.
|
|
28
|
+
*
|
|
29
|
+
* Used in-memory only.
|
|
30
|
+
*/
|
|
31
|
+
readonly replicationJobId?: string;
|
|
32
|
+
}
|