@powersync/service-core 0.0.0-dev-20240725112650 → 0.0.0-dev-20240918092408
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 +80 -2
- package/dist/api/RouteAPI.d.ts +68 -0
- package/dist/api/RouteAPI.js +2 -0
- package/dist/api/RouteAPI.js.map +1 -0
- package/dist/api/api-index.d.ts +1 -0
- package/dist/api/api-index.js +1 -0
- package/dist/api/api-index.js.map +1 -1
- package/dist/api/diagnostics.d.ts +4 -4
- package/dist/api/diagnostics.js +11 -65
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/api/schema.d.ts +3 -5
- package/dist/api/schema.js +9 -79
- package/dist/api/schema.js.map +1 -1
- package/dist/auth/KeyStore.d.ts +7 -4
- package/dist/auth/KeyStore.js +1 -1
- package/dist/auth/KeyStore.js.map +1 -1
- package/dist/auth/auth-index.d.ts +0 -1
- package/dist/auth/auth-index.js +0 -1
- package/dist/auth/auth-index.js.map +1 -1
- package/dist/entry/cli-entry.js +3 -2
- package/dist/entry/cli-entry.js.map +1 -1
- package/dist/entry/commands/compact-action.js +12 -8
- package/dist/entry/commands/compact-action.js.map +1 -1
- package/dist/entry/commands/migrate-action.js +4 -5
- package/dist/entry/commands/migrate-action.js.map +1 -1
- package/dist/entry/commands/teardown-action.js +2 -2
- package/dist/entry/commands/teardown-action.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/metrics/Metrics.d.ts +2 -2
- package/dist/metrics/Metrics.js +5 -13
- package/dist/metrics/Metrics.js.map +1 -1
- package/dist/migrations/db/migrations/1684951997326-init.d.ts +2 -2
- package/dist/migrations/db/migrations/1684951997326-init.js +4 -2
- package/dist/migrations/db/migrations/1684951997326-init.js.map +1 -1
- package/dist/migrations/db/migrations/1702295701188-sync-rule-state.d.ts +2 -2
- package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js +4 -2
- package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js.map +1 -1
- package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.d.ts +2 -2
- package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js +4 -2
- package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js.map +1 -1
- package/dist/migrations/migrations.d.ts +8 -0
- package/dist/migrations/migrations.js +19 -7
- package/dist/migrations/migrations.js.map +1 -1
- package/dist/modules/AbstractModule.d.ts +26 -0
- package/dist/modules/AbstractModule.js +11 -0
- package/dist/modules/AbstractModule.js.map +1 -0
- package/dist/modules/ModuleManager.d.ts +11 -0
- package/dist/modules/ModuleManager.js +32 -0
- package/dist/modules/ModuleManager.js.map +1 -0
- package/dist/modules/modules-index.d.ts +2 -0
- package/dist/modules/modules-index.js +3 -0
- package/dist/modules/modules-index.js.map +1 -0
- package/dist/replication/AbstractReplicationJob.d.ts +38 -0
- package/dist/replication/AbstractReplicationJob.js +51 -0
- package/dist/replication/AbstractReplicationJob.js.map +1 -0
- package/dist/replication/AbstractReplicator.d.ts +53 -0
- package/dist/replication/AbstractReplicator.js +187 -0
- package/dist/replication/AbstractReplicator.js.map +1 -0
- package/dist/replication/ErrorRateLimiter.d.ts +0 -9
- package/dist/replication/ErrorRateLimiter.js +1 -42
- package/dist/replication/ErrorRateLimiter.js.map +1 -1
- package/dist/replication/ReplicationEngine.d.ts +18 -0
- package/dist/replication/ReplicationEngine.js +41 -0
- package/dist/replication/ReplicationEngine.js.map +1 -0
- package/dist/replication/ReplicationModule.d.ts +39 -0
- package/dist/replication/ReplicationModule.js +65 -0
- package/dist/replication/ReplicationModule.js.map +1 -0
- package/dist/replication/replication-index.d.ts +4 -6
- package/dist/replication/replication-index.js +4 -6
- package/dist/replication/replication-index.js.map +1 -1
- package/dist/routes/RouterEngine.d.ts +42 -0
- package/dist/routes/RouterEngine.js +80 -0
- package/dist/routes/RouterEngine.js.map +1 -0
- package/dist/routes/auth.d.ts +2 -2
- package/dist/routes/auth.js +11 -11
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +30 -176
- package/dist/routes/configure-fastify.js +10 -11
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/configure-rsocket.d.ts +3 -3
- package/dist/routes/configure-rsocket.js +6 -5
- package/dist/routes/configure-rsocket.js.map +1 -1
- package/dist/routes/endpoints/admin.d.ts +0 -34
- package/dist/routes/endpoints/admin.js +48 -89
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/routes/endpoints/checkpointing.d.ts +56 -16
- package/dist/routes/endpoints/checkpointing.js +33 -12
- package/dist/routes/endpoints/checkpointing.js.map +1 -1
- package/dist/routes/endpoints/route-endpoints-index.d.ts +0 -1
- package/dist/routes/endpoints/route-endpoints-index.js +0 -1
- package/dist/routes/endpoints/route-endpoints-index.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +40 -25
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.d.ts +1 -1
- package/dist/routes/endpoints/sync-rules.js +32 -23
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.d.ts +10 -0
- package/dist/routes/endpoints/sync-stream.js +13 -8
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/router-socket.d.ts +1 -0
- package/dist/routes/router-socket.js +2 -1
- package/dist/routes/router-socket.js.map +1 -1
- package/dist/routes/router.d.ts +6 -2
- package/dist/routes/router.js.map +1 -1
- package/dist/routes/routes-index.d.ts +1 -0
- package/dist/routes/routes-index.js +1 -0
- package/dist/routes/routes-index.js.map +1 -1
- package/dist/runner/teardown.js +47 -76
- package/dist/runner/teardown.js.map +1 -1
- package/dist/storage/BucketStorage.d.ts +30 -19
- package/dist/storage/BucketStorage.js +0 -10
- package/dist/storage/BucketStorage.js.map +1 -1
- package/dist/storage/MongoBucketStorage.d.ts +4 -4
- package/dist/storage/MongoBucketStorage.js +19 -24
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/SourceEntity.d.ts +20 -0
- package/dist/storage/SourceEntity.js +2 -0
- package/dist/storage/SourceEntity.js.map +1 -0
- package/dist/storage/SourceTable.d.ts +4 -5
- package/dist/storage/SourceTable.js +3 -4
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/StorageEngine.d.ts +24 -0
- package/dist/storage/StorageEngine.js +43 -0
- package/dist/storage/StorageEngine.js.map +1 -0
- package/dist/storage/StorageProvider.d.ts +21 -0
- package/dist/storage/StorageProvider.js +2 -0
- package/dist/storage/StorageProvider.js.map +1 -0
- package/dist/storage/mongo/MongoBucketBatch.d.ts +1 -1
- package/dist/storage/mongo/MongoBucketBatch.js +6 -7
- package/dist/storage/mongo/MongoBucketBatch.js.map +1 -1
- package/dist/storage/mongo/MongoCompactor.js +2 -1
- package/dist/storage/mongo/MongoCompactor.js.map +1 -1
- package/dist/storage/mongo/MongoPersistedSyncRulesContent.d.ts +2 -2
- package/dist/storage/mongo/MongoPersistedSyncRulesContent.js +2 -2
- package/dist/storage/mongo/MongoPersistedSyncRulesContent.js.map +1 -1
- package/dist/storage/mongo/MongoStorageProvider.d.ts +5 -0
- package/dist/storage/mongo/MongoStorageProvider.js +26 -0
- package/dist/storage/mongo/MongoStorageProvider.js.map +1 -0
- package/dist/storage/mongo/MongoSyncBucketStorage.d.ts +7 -6
- package/dist/storage/mongo/MongoSyncBucketStorage.js +24 -15
- package/dist/storage/mongo/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/mongo/MongoSyncRulesLock.js +1 -1
- package/dist/storage/mongo/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/mongo/OperationBatch.d.ts +7 -3
- package/dist/storage/mongo/OperationBatch.js +16 -7
- package/dist/storage/mongo/OperationBatch.js.map +1 -1
- package/dist/storage/mongo/PersistedBatch.d.ts +3 -3
- package/dist/storage/mongo/PersistedBatch.js +2 -2
- package/dist/storage/mongo/PersistedBatch.js.map +1 -1
- package/dist/storage/mongo/models.d.ts +13 -4
- package/dist/storage/mongo/models.js.map +1 -1
- package/dist/storage/mongo/util.d.ts +12 -1
- package/dist/storage/mongo/util.js +50 -2
- package/dist/storage/mongo/util.js.map +1 -1
- package/dist/storage/storage-index.d.ts +5 -2
- package/dist/storage/storage-index.js +5 -2
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/sync/sync.d.ts +2 -1
- package/dist/sync/sync.js +36 -10
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/util.js.map +1 -1
- package/dist/system/ServiceContext.d.ts +37 -0
- package/dist/system/ServiceContext.js +48 -0
- package/dist/system/ServiceContext.js.map +1 -0
- package/dist/system/system-index.d.ts +1 -1
- package/dist/system/system-index.js +1 -1
- package/dist/system/system-index.js.map +1 -1
- package/dist/util/config/compound-config-collector.d.ts +9 -2
- package/dist/util/config/compound-config-collector.js +14 -23
- package/dist/util/config/compound-config-collector.js.map +1 -1
- package/dist/util/config/sync-rules/sync-rules-provider.d.ts +9 -0
- package/dist/util/config/sync-rules/sync-rules-provider.js +15 -0
- package/dist/util/config/sync-rules/sync-rules-provider.js.map +1 -0
- package/dist/util/config/types.d.ts +6 -4
- package/dist/util/config/types.js.map +1 -1
- package/dist/util/config.d.ts +3 -4
- package/dist/util/config.js +5 -20
- package/dist/util/config.js.map +1 -1
- package/dist/util/protocol-types.d.ts +4 -0
- package/dist/util/protocol-types.js +5 -1
- package/dist/util/protocol-types.js.map +1 -1
- package/dist/util/util-index.d.ts +3 -6
- package/dist/util/util-index.js +3 -6
- package/dist/util/util-index.js.map +1 -1
- package/dist/util/utils.d.ts +10 -6
- package/dist/util/utils.js +45 -25
- package/dist/util/utils.js.map +1 -1
- package/package.json +5 -7
- package/src/api/RouteAPI.ts +78 -0
- package/src/api/api-index.ts +1 -0
- package/src/api/diagnostics.ts +16 -71
- package/src/api/schema.ts +13 -89
- package/src/auth/KeyStore.ts +9 -6
- package/src/auth/auth-index.ts +0 -1
- package/src/entry/cli-entry.ts +3 -2
- package/src/entry/commands/compact-action.ts +12 -9
- package/src/entry/commands/migrate-action.ts +5 -8
- package/src/entry/commands/teardown-action.ts +2 -2
- package/src/index.ts +5 -2
- package/src/metrics/Metrics.ts +6 -16
- package/src/migrations/db/migrations/1684951997326-init.ts +9 -4
- package/src/migrations/db/migrations/1702295701188-sync-rule-state.ts +7 -4
- package/src/migrations/db/migrations/1711543888062-write-checkpoint-index.ts +6 -4
- package/src/migrations/migrations.ts +24 -8
- package/src/modules/AbstractModule.ts +37 -0
- package/src/modules/ModuleManager.ts +34 -0
- package/src/modules/modules-index.ts +2 -0
- package/src/replication/AbstractReplicationJob.ts +79 -0
- package/src/replication/AbstractReplicator.ts +227 -0
- package/src/replication/ErrorRateLimiter.ts +0 -44
- package/src/replication/ReplicationEngine.ts +43 -0
- package/src/replication/ReplicationModule.ts +101 -0
- package/src/replication/replication-index.ts +4 -6
- package/src/routes/RouterEngine.ts +120 -0
- package/src/routes/auth.ts +21 -12
- package/src/routes/configure-fastify.ts +13 -14
- package/src/routes/configure-rsocket.ts +9 -8
- package/src/routes/endpoints/admin.ts +74 -100
- package/src/routes/endpoints/checkpointing.ts +46 -12
- package/src/routes/endpoints/route-endpoints-index.ts +0 -1
- package/src/routes/endpoints/socket-route.ts +44 -27
- package/src/routes/endpoints/sync-rules.ts +41 -25
- package/src/routes/endpoints/sync-stream.ts +13 -8
- package/src/routes/router-socket.ts +2 -1
- package/src/routes/router.ts +6 -3
- package/src/routes/routes-index.ts +1 -0
- package/src/runner/teardown.ts +50 -88
- package/src/storage/BucketStorage.ts +38 -25
- package/src/storage/MongoBucketStorage.ts +23 -26
- package/src/storage/SourceEntity.ts +22 -0
- package/src/storage/SourceTable.ts +4 -6
- package/src/storage/StorageEngine.ts +55 -0
- package/src/storage/StorageProvider.ts +27 -0
- package/src/storage/mongo/MongoBucketBatch.ts +8 -8
- package/src/storage/mongo/MongoCompactor.ts +2 -1
- package/src/storage/mongo/MongoPersistedSyncRulesContent.ts +3 -3
- package/src/storage/mongo/MongoStorageProvider.ts +31 -0
- package/src/storage/mongo/MongoSyncBucketStorage.ts +39 -20
- package/src/storage/mongo/MongoSyncRulesLock.ts +1 -1
- package/src/storage/mongo/OperationBatch.ts +18 -11
- package/src/storage/mongo/PersistedBatch.ts +6 -5
- package/src/storage/mongo/models.ts +13 -4
- package/src/storage/mongo/util.ts +49 -4
- package/src/storage/storage-index.ts +5 -2
- package/src/sync/sync.ts +46 -11
- package/src/sync/util.ts +0 -1
- package/src/system/ServiceContext.ts +68 -0
- package/src/system/system-index.ts +1 -1
- package/src/util/config/compound-config-collector.ts +30 -31
- package/src/util/config/sync-rules/sync-rules-provider.ts +18 -0
- package/src/util/config/types.ts +6 -5
- package/src/util/config.ts +6 -23
- package/src/util/protocol-types.ts +6 -1
- package/src/util/util-index.ts +3 -6
- package/src/util/utils.ts +55 -39
- package/test/src/__snapshots__/sync.test.ts.snap +7 -7
- package/test/src/auth.test.ts +7 -7
- package/test/src/broadcast_iterable.test.ts +1 -1
- package/test/src/checksum_cache.test.ts +3 -3
- package/test/src/compacting.test.ts +26 -17
- package/test/src/data_storage.test.ts +258 -146
- package/test/src/env.ts +1 -3
- package/test/src/merge_iterable.test.ts +1 -6
- package/test/src/setup.ts +1 -1
- package/test/src/stream_utils.ts +42 -0
- package/test/src/sync.test.ts +52 -31
- package/test/src/util.ts +48 -51
- package/test/tsconfig.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/auth/SupabaseKeyCollector.d.ts +0 -22
- package/dist/auth/SupabaseKeyCollector.js +0 -61
- package/dist/auth/SupabaseKeyCollector.js.map +0 -1
- package/dist/replication/PgRelation.d.ts +0 -16
- package/dist/replication/PgRelation.js +0 -26
- package/dist/replication/PgRelation.js.map +0 -1
- package/dist/replication/WalConnection.d.ts +0 -34
- package/dist/replication/WalConnection.js +0 -190
- package/dist/replication/WalConnection.js.map +0 -1
- package/dist/replication/WalStream.d.ts +0 -57
- package/dist/replication/WalStream.js +0 -515
- package/dist/replication/WalStream.js.map +0 -1
- package/dist/replication/WalStreamManager.d.ts +0 -30
- package/dist/replication/WalStreamManager.js +0 -198
- package/dist/replication/WalStreamManager.js.map +0 -1
- package/dist/replication/WalStreamRunner.d.ts +0 -38
- package/dist/replication/WalStreamRunner.js +0 -155
- package/dist/replication/WalStreamRunner.js.map +0 -1
- package/dist/replication/util.d.ts +0 -9
- package/dist/replication/util.js +0 -62
- package/dist/replication/util.js.map +0 -1
- package/dist/routes/endpoints/dev.d.ts +0 -312
- package/dist/routes/endpoints/dev.js +0 -172
- package/dist/routes/endpoints/dev.js.map +0 -1
- package/dist/system/CorePowerSyncSystem.d.ts +0 -23
- package/dist/system/CorePowerSyncSystem.js +0 -52
- package/dist/system/CorePowerSyncSystem.js.map +0 -1
- package/dist/util/PgManager.d.ts +0 -24
- package/dist/util/PgManager.js +0 -55
- package/dist/util/PgManager.js.map +0 -1
- package/dist/util/migration_lib.d.ts +0 -11
- package/dist/util/migration_lib.js +0 -64
- package/dist/util/migration_lib.js.map +0 -1
- package/dist/util/pgwire_utils.d.ts +0 -24
- package/dist/util/pgwire_utils.js +0 -117
- package/dist/util/pgwire_utils.js.map +0 -1
- package/dist/util/populate_test_data.d.ts +0 -8
- package/dist/util/populate_test_data.js +0 -65
- package/dist/util/populate_test_data.js.map +0 -1
- package/src/auth/SupabaseKeyCollector.ts +0 -67
- package/src/replication/PgRelation.ts +0 -42
- package/src/replication/WalConnection.ts +0 -227
- package/src/replication/WalStream.ts +0 -624
- package/src/replication/WalStreamManager.ts +0 -213
- package/src/replication/WalStreamRunner.ts +0 -180
- package/src/replication/util.ts +0 -76
- package/src/routes/endpoints/dev.ts +0 -199
- package/src/system/CorePowerSyncSystem.ts +0 -64
- package/src/util/PgManager.ts +0 -64
- package/src/util/migration_lib.ts +0 -79
- package/src/util/pgwire_utils.ts +0 -139
- package/src/util/populate_test_data.ts +0 -78
- package/test/src/__snapshots__/pg_test.test.ts.snap +0 -256
- package/test/src/large_batch.test.ts +0 -194
- package/test/src/pg_test.test.ts +0 -450
- package/test/src/schema_changes.test.ts +0 -545
- package/test/src/slow_tests.test.ts +0 -338
- package/test/src/validation.test.ts +0 -63
- package/test/src/wal_stream.test.ts +0 -319
- package/test/src/wal_stream_utils.ts +0 -156
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FastifyPluginAsync } from 'fastify';
|
|
2
1
|
import { router, schema } from '@powersync/lib-services-framework';
|
|
2
|
+
import type { FastifyPluginAsync } from 'fastify';
|
|
3
3
|
export declare const yamlPlugin: FastifyPluginAsync;
|
|
4
4
|
export declare const deploySyncRules: router.Endpoint<{
|
|
5
5
|
content: string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as t from 'ts-codec';
|
|
2
1
|
import { errors, router, schema } from '@powersync/lib-services-framework';
|
|
3
2
|
import { SqlSyncRules, SyncRulesErrors } from '@powersync/service-sync-rules';
|
|
4
|
-
import * as
|
|
3
|
+
import * as t from 'ts-codec';
|
|
5
4
|
import { authApi } from '../auth.js';
|
|
6
5
|
import { routeDefinition } from '../router.js';
|
|
7
6
|
const DeploySyncRulesRequest = t.object({
|
|
@@ -31,7 +30,9 @@ export const deploySyncRules = routeDefinition({
|
|
|
31
30
|
plugins: [yamlPlugin],
|
|
32
31
|
validator: schema.createTsCodecValidator(DeploySyncRulesRequest, { allowAdditional: true }),
|
|
33
32
|
handler: async (payload) => {
|
|
34
|
-
|
|
33
|
+
const { service_context } = payload.context;
|
|
34
|
+
const { storageEngine } = service_context;
|
|
35
|
+
if (service_context.configuration.sync_rules.present) {
|
|
35
36
|
// If sync rules are configured via the config, disable deploy via the API.
|
|
36
37
|
throw new errors.JourneyError({
|
|
37
38
|
status: 422,
|
|
@@ -42,7 +43,12 @@ export const deploySyncRules = routeDefinition({
|
|
|
42
43
|
}
|
|
43
44
|
const content = payload.params.content;
|
|
44
45
|
try {
|
|
45
|
-
|
|
46
|
+
const apiHandler = service_context.routerEngine.getAPI();
|
|
47
|
+
SqlSyncRules.fromYaml(payload.params.content, {
|
|
48
|
+
...apiHandler.getParseSyncRulesOptions(),
|
|
49
|
+
// We don't do any schema-level validation at this point
|
|
50
|
+
schema: undefined
|
|
51
|
+
});
|
|
46
52
|
}
|
|
47
53
|
catch (e) {
|
|
48
54
|
throw new errors.JourneyError({
|
|
@@ -52,7 +58,7 @@ export const deploySyncRules = routeDefinition({
|
|
|
52
58
|
details: e.message
|
|
53
59
|
});
|
|
54
60
|
}
|
|
55
|
-
const sync_rules = await
|
|
61
|
+
const sync_rules = await storageEngine.activeBucketStorage.updateSyncRules({
|
|
56
62
|
content: content
|
|
57
63
|
});
|
|
58
64
|
return {
|
|
@@ -72,7 +78,9 @@ export const validateSyncRules = routeDefinition({
|
|
|
72
78
|
validator: schema.createTsCodecValidator(ValidateSyncRulesRequest, { allowAdditional: true }),
|
|
73
79
|
handler: async (payload) => {
|
|
74
80
|
const content = payload.params.content;
|
|
75
|
-
const
|
|
81
|
+
const { service_context } = payload.context;
|
|
82
|
+
const apiHandler = service_context.routerEngine.getAPI();
|
|
83
|
+
const info = await debugSyncRules(apiHandler, content);
|
|
76
84
|
return replyPrettyJson(info);
|
|
77
85
|
}
|
|
78
86
|
});
|
|
@@ -81,8 +89,9 @@ export const currentSyncRules = routeDefinition({
|
|
|
81
89
|
method: router.HTTPMethod.GET,
|
|
82
90
|
authorize: authApi,
|
|
83
91
|
handler: async (payload) => {
|
|
84
|
-
const
|
|
85
|
-
const
|
|
92
|
+
const { service_context } = payload.context;
|
|
93
|
+
const { storageEngine: { activeBucketStorage } } = service_context;
|
|
94
|
+
const sync_rules = await activeBucketStorage.getActiveSyncRulesContent();
|
|
86
95
|
if (!sync_rules) {
|
|
87
96
|
throw new errors.JourneyError({
|
|
88
97
|
status: 422,
|
|
@@ -90,11 +99,10 @@ export const currentSyncRules = routeDefinition({
|
|
|
90
99
|
description: 'No active sync rules'
|
|
91
100
|
});
|
|
92
101
|
}
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
: null;
|
|
102
|
+
const apiHandler = service_context.routerEngine.getAPI();
|
|
103
|
+
const info = await debugSyncRules(apiHandler, sync_rules.sync_rules_content);
|
|
104
|
+
const next = await activeBucketStorage.getNextSyncRulesContent();
|
|
105
|
+
const next_info = next ? await debugSyncRules(apiHandler, next.sync_rules_content) : null;
|
|
98
106
|
const response = {
|
|
99
107
|
current: {
|
|
100
108
|
slot_name: sync_rules.slot_name,
|
|
@@ -119,8 +127,9 @@ export const reprocessSyncRules = routeDefinition({
|
|
|
119
127
|
authorize: authApi,
|
|
120
128
|
validator: schema.createTsCodecValidator(ReprocessSyncRulesRequest),
|
|
121
129
|
handler: async (payload) => {
|
|
122
|
-
const
|
|
123
|
-
const
|
|
130
|
+
const { storageEngine: { activeBucketStorage } } = payload.context.service_context;
|
|
131
|
+
const apiHandler = payload.context.service_context.routerEngine.getAPI();
|
|
132
|
+
const sync_rules = await activeBucketStorage.getActiveSyncRules(apiHandler.getParseSyncRulesOptions());
|
|
124
133
|
if (sync_rules == null) {
|
|
125
134
|
throw new errors.JourneyError({
|
|
126
135
|
status: 422,
|
|
@@ -128,7 +137,7 @@ export const reprocessSyncRules = routeDefinition({
|
|
|
128
137
|
description: 'No active sync rules'
|
|
129
138
|
});
|
|
130
139
|
}
|
|
131
|
-
const new_rules = await
|
|
140
|
+
const new_rules = await activeBucketStorage.updateSyncRules({
|
|
132
141
|
content: sync_rules.sync_rules.content
|
|
133
142
|
});
|
|
134
143
|
return {
|
|
@@ -144,15 +153,15 @@ function replyPrettyJson(payload) {
|
|
|
144
153
|
headers: { 'Content-Type': 'application/json' }
|
|
145
154
|
});
|
|
146
155
|
}
|
|
147
|
-
async function debugSyncRules(
|
|
156
|
+
async function debugSyncRules(apiHandler, sync_rules) {
|
|
148
157
|
try {
|
|
149
|
-
const rules = SqlSyncRules.fromYaml(sync_rules
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
sync_rules: rules
|
|
158
|
+
const rules = SqlSyncRules.fromYaml(sync_rules, {
|
|
159
|
+
...apiHandler.getParseSyncRulesOptions(),
|
|
160
|
+
// No schema-based validation at this point
|
|
161
|
+
schema: undefined
|
|
154
162
|
});
|
|
155
|
-
const
|
|
163
|
+
const source_table_patterns = rules.getSourceTables();
|
|
164
|
+
const resolved_tables = await apiHandler.getDebugTablesInfo(source_table_patterns, rules);
|
|
156
165
|
return {
|
|
157
166
|
valid: true,
|
|
158
167
|
bucket_definitions: rules.bucket_descriptors.map((d) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-rules.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-rules.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sync-rules.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export declare const syncStreamed: router.Endpoint<{
|
|
|
14
14
|
include_checksum?: boolean | undefined;
|
|
15
15
|
raw_data?: boolean | undefined;
|
|
16
16
|
binary_data?: boolean | undefined;
|
|
17
|
+
client_id?: string | undefined;
|
|
17
18
|
}, router.RouterResponse<Readable> | undefined, import("../router.js").Context, import("../router.js").RequestEndpointHandlerPayload<{
|
|
18
19
|
parameters?: Record<string, any> | undefined;
|
|
19
20
|
buckets?: {
|
|
@@ -24,6 +25,7 @@ export declare const syncStreamed: router.Endpoint<{
|
|
|
24
25
|
include_checksum?: boolean | undefined;
|
|
25
26
|
raw_data?: boolean | undefined;
|
|
26
27
|
binary_data?: boolean | undefined;
|
|
28
|
+
client_id?: string | undefined;
|
|
27
29
|
}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, router.EndpointHandler<import("../router.js").RequestEndpointHandlerPayload<{
|
|
28
30
|
parameters?: Record<string, any> | undefined;
|
|
29
31
|
buckets?: {
|
|
@@ -34,6 +36,7 @@ export declare const syncStreamed: router.Endpoint<{
|
|
|
34
36
|
include_checksum?: boolean | undefined;
|
|
35
37
|
raw_data?: boolean | undefined;
|
|
36
38
|
binary_data?: boolean | undefined;
|
|
39
|
+
client_id?: string | undefined;
|
|
37
40
|
}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, router.RouterResponse<Readable> | undefined>> & {
|
|
38
41
|
path: SyncRoutes;
|
|
39
42
|
method: router.HTTPMethod.POST;
|
|
@@ -54,6 +57,7 @@ export declare const syncStreamed: router.Endpoint<{
|
|
|
54
57
|
include_checksum?: boolean | undefined;
|
|
55
58
|
raw_data?: boolean | undefined;
|
|
56
59
|
binary_data?: boolean | undefined;
|
|
60
|
+
client_id?: string | undefined;
|
|
57
61
|
}, string[]>;
|
|
58
62
|
handler: (payload: import("../router.js").RequestEndpointHandlerPayload<{
|
|
59
63
|
parameters?: Record<string, any> | undefined;
|
|
@@ -65,6 +69,7 @@ export declare const syncStreamed: router.Endpoint<{
|
|
|
65
69
|
include_checksum?: boolean | undefined;
|
|
66
70
|
raw_data?: boolean | undefined;
|
|
67
71
|
binary_data?: boolean | undefined;
|
|
72
|
+
client_id?: string | undefined;
|
|
68
73
|
}, import("../router.js").Context, import("../router.js").BasicRouterRequest>) => Promise<router.RouterResponse<Readable> | undefined>;
|
|
69
74
|
};
|
|
70
75
|
export declare const SYNC_STREAM_ROUTES: (router.Endpoint<{
|
|
@@ -77,6 +82,7 @@ export declare const SYNC_STREAM_ROUTES: (router.Endpoint<{
|
|
|
77
82
|
include_checksum?: boolean | undefined;
|
|
78
83
|
raw_data?: boolean | undefined;
|
|
79
84
|
binary_data?: boolean | undefined;
|
|
85
|
+
client_id?: string | undefined;
|
|
80
86
|
}, router.RouterResponse<Readable> | undefined, import("../router.js").Context, import("../router.js").RequestEndpointHandlerPayload<{
|
|
81
87
|
parameters?: Record<string, any> | undefined;
|
|
82
88
|
buckets?: {
|
|
@@ -87,6 +93,7 @@ export declare const SYNC_STREAM_ROUTES: (router.Endpoint<{
|
|
|
87
93
|
include_checksum?: boolean | undefined;
|
|
88
94
|
raw_data?: boolean | undefined;
|
|
89
95
|
binary_data?: boolean | undefined;
|
|
96
|
+
client_id?: string | undefined;
|
|
90
97
|
}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, router.EndpointHandler<import("../router.js").RequestEndpointHandlerPayload<{
|
|
91
98
|
parameters?: Record<string, any> | undefined;
|
|
92
99
|
buckets?: {
|
|
@@ -97,6 +104,7 @@ export declare const SYNC_STREAM_ROUTES: (router.Endpoint<{
|
|
|
97
104
|
include_checksum?: boolean | undefined;
|
|
98
105
|
raw_data?: boolean | undefined;
|
|
99
106
|
binary_data?: boolean | undefined;
|
|
107
|
+
client_id?: string | undefined;
|
|
100
108
|
}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, router.RouterResponse<Readable> | undefined>> & {
|
|
101
109
|
path: SyncRoutes;
|
|
102
110
|
method: router.HTTPMethod.POST;
|
|
@@ -117,6 +125,7 @@ export declare const SYNC_STREAM_ROUTES: (router.Endpoint<{
|
|
|
117
125
|
include_checksum?: boolean | undefined;
|
|
118
126
|
raw_data?: boolean | undefined;
|
|
119
127
|
binary_data?: boolean | undefined;
|
|
128
|
+
client_id?: string | undefined;
|
|
120
129
|
}, string[]>;
|
|
121
130
|
handler: (payload: import("../router.js").RequestEndpointHandlerPayload<{
|
|
122
131
|
parameters?: Record<string, any> | undefined;
|
|
@@ -128,5 +137,6 @@ export declare const SYNC_STREAM_ROUTES: (router.Endpoint<{
|
|
|
128
137
|
include_checksum?: boolean | undefined;
|
|
129
138
|
raw_data?: boolean | undefined;
|
|
130
139
|
binary_data?: boolean | undefined;
|
|
140
|
+
client_id?: string | undefined;
|
|
131
141
|
}, import("../router.js").Context, import("../router.js").BasicRouterRequest>) => Promise<router.RouterResponse<Readable> | undefined>;
|
|
132
142
|
})[];
|
|
@@ -6,7 +6,6 @@ import * as util from '../../util/util-index.js';
|
|
|
6
6
|
import { Metrics } from '../../metrics/Metrics.js';
|
|
7
7
|
import { authUser } from '../auth.js';
|
|
8
8
|
import { routeDefinition } from '../router.js';
|
|
9
|
-
import { RequestTracker } from '../../sync/RequestTracker.js';
|
|
10
9
|
export var SyncRoutes;
|
|
11
10
|
(function (SyncRoutes) {
|
|
12
11
|
SyncRoutes["STREAM"] = "/sync/stream";
|
|
@@ -17,8 +16,12 @@ export const syncStreamed = routeDefinition({
|
|
|
17
16
|
authorize: authUser,
|
|
18
17
|
validator: schema.createTsCodecValidator(util.StreamingSyncRequest, { allowAdditional: true }),
|
|
19
18
|
handler: async (payload) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
19
|
+
const { service_context } = payload.context;
|
|
20
|
+
const { routerEngine, storageEngine } = service_context;
|
|
21
|
+
const headers = payload.request.headers;
|
|
22
|
+
const userAgent = headers['x-user-agent'] ?? headers['user-agent'];
|
|
23
|
+
const clientId = payload.params.client_id;
|
|
24
|
+
if (routerEngine.closed) {
|
|
22
25
|
throw new errors.JourneyError({
|
|
23
26
|
status: 503,
|
|
24
27
|
code: 'SERVICE_UNAVAILABLE',
|
|
@@ -27,9 +30,8 @@ export const syncStreamed = routeDefinition({
|
|
|
27
30
|
}
|
|
28
31
|
const params = payload.params;
|
|
29
32
|
const syncParams = new RequestParameters(payload.context.token_payload, payload.params.parameters ?? {});
|
|
30
|
-
const storage = system.storage;
|
|
31
33
|
// Sanity check before we start the stream
|
|
32
|
-
const cp = await
|
|
34
|
+
const cp = await storageEngine.activeBucketStorage.getActiveCheckpoint();
|
|
33
35
|
if (!cp.hasSyncRules()) {
|
|
34
36
|
throw new errors.JourneyError({
|
|
35
37
|
status: 500,
|
|
@@ -38,18 +40,19 @@ export const syncStreamed = routeDefinition({
|
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
const controller = new AbortController();
|
|
41
|
-
const tracker = new RequestTracker();
|
|
43
|
+
const tracker = new sync.RequestTracker();
|
|
42
44
|
try {
|
|
43
45
|
Metrics.getInstance().concurrent_connections.add(1);
|
|
44
46
|
const stream = Readable.from(sync.transformToBytesTracked(sync.ndjson(sync.streamResponse({
|
|
45
|
-
storage,
|
|
47
|
+
storage: storageEngine.activeBucketStorage,
|
|
48
|
+
parseOptions: routerEngine.getAPI().getParseSyncRulesOptions(),
|
|
46
49
|
params,
|
|
47
50
|
syncParams,
|
|
48
51
|
token: payload.context.token_payload,
|
|
49
52
|
tracker,
|
|
50
53
|
signal: controller.signal
|
|
51
54
|
})), tracker), { objectMode: false, highWaterMark: 16 * 1024 });
|
|
52
|
-
const deregister =
|
|
55
|
+
const deregister = routerEngine.addStopHandler(() => {
|
|
53
56
|
// This error is not currently propagated to the client
|
|
54
57
|
controller.abort();
|
|
55
58
|
stream.destroy(new Error('Shutting down system'));
|
|
@@ -75,6 +78,8 @@ export const syncStreamed = routeDefinition({
|
|
|
75
78
|
Metrics.getInstance().concurrent_connections.add(-1);
|
|
76
79
|
logger.info(`Sync stream complete`, {
|
|
77
80
|
user_id: syncParams.user_id,
|
|
81
|
+
client_id: clientId,
|
|
82
|
+
user_agent: userAgent,
|
|
78
83
|
operations_synced: tracker.operationsSynced,
|
|
79
84
|
data_synced_bytes: tracker.dataSyncedBytes
|
|
80
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,4 +7,5 @@ import { Context } from './router.js';
|
|
|
7
7
|
export type SocketRouteGenerator = (router: ReactiveSocketRouter<Context>) => IReactiveStream;
|
|
8
8
|
export declare const RSocketContextMeta: t.ObjectCodec<{
|
|
9
9
|
token: t.IdentityCodec<t.CodecType.String>;
|
|
10
|
+
user_agent: t.OptionalCodec<t.Codec<string, string, string, t.CodecProps>>;
|
|
10
11
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-socket.js","sourceRoot":"","sources":["../../src/routes/router-socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAS9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"router-socket.js","sourceRoot":"","sources":["../../src/routes/router-socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAS9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}
|
package/dist/routes/router.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { router } from '@powersync/lib-services-framework';
|
|
2
2
|
import * as auth from '../auth/auth-index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { ServiceContext } from '../system/ServiceContext.js';
|
|
4
4
|
/**
|
|
5
5
|
* Common context for routes
|
|
6
6
|
*/
|
|
7
7
|
export type Context = {
|
|
8
8
|
user_id?: string;
|
|
9
|
-
|
|
9
|
+
service_context: ServiceContext;
|
|
10
10
|
token_payload?: auth.JwtPayload;
|
|
11
11
|
token_errors?: string[];
|
|
12
|
+
/**
|
|
13
|
+
* Only on websocket endpoints.
|
|
14
|
+
*/
|
|
15
|
+
user_agent?: string;
|
|
12
16
|
};
|
|
13
17
|
export type BasicRouterRequest = {
|
|
14
18
|
headers: Record<string, string | string[] | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/routes/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/routes/router.ts"],"names":[],"mappings":"AA2CA;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA4C;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes-index.js","sourceRoot":"","sources":["../../src/routes/routes-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,sCAAsC,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"routes-index.js","sourceRoot":"","sources":["../../src/routes/routes-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,SAAS,MAAM,sCAAsC,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC"}
|
package/dist/runner/teardown.js
CHANGED
|
@@ -1,60 +1,59 @@
|
|
|
1
1
|
// Script to tear down the data when deleting an instance.
|
|
2
|
-
// This
|
|
3
|
-
// 1.
|
|
4
|
-
// 2.
|
|
5
|
-
import
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
2
|
+
// This should:
|
|
3
|
+
// 1. Attempt to clean up any remote configuration of data sources that was set up.
|
|
4
|
+
// 2. Delete the storage
|
|
5
|
+
import { container, logger } from '@powersync/lib-services-framework';
|
|
6
|
+
import * as modules from '../modules/modules-index.js';
|
|
7
|
+
import * as system from '../system/system-index.js';
|
|
8
8
|
import * as utils from '../util/util-index.js';
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Attempt to terminate a single sync rules instance.
|
|
13
|
-
*
|
|
14
|
-
* This may fail with a lock error.
|
|
15
|
-
*/
|
|
16
|
-
async function terminateReplicator(storageFactory, connection, syncRules) {
|
|
17
|
-
// The lock may still be active if the current replication instance
|
|
18
|
-
// hasn't stopped yet.
|
|
19
|
-
const lock = await syncRules.lock();
|
|
9
|
+
import timers from 'timers/promises';
|
|
10
|
+
export async function teardown(runnerConfig) {
|
|
20
11
|
try {
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
12
|
+
logger.info(`Tearing down PowerSync instance...`);
|
|
13
|
+
const config = await utils.loadConfig(runnerConfig);
|
|
14
|
+
const serviceContext = new system.ServiceContextContainer(config);
|
|
15
|
+
const moduleManager = container.getImplementation(modules.ModuleManager);
|
|
16
|
+
await moduleManager.initialize(serviceContext);
|
|
17
|
+
// This is mostly done to ensure that the storage is ready
|
|
18
|
+
await serviceContext.lifeCycleEngine.start();
|
|
19
|
+
await terminateSyncRules(serviceContext.storageEngine.activeBucketStorage, moduleManager);
|
|
20
|
+
await serviceContext.storageEngine.activeStorage.tearDown();
|
|
21
|
+
logger.info(`Teardown complete.`);
|
|
22
|
+
process.exit(0);
|
|
32
23
|
}
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
catch (e) {
|
|
25
|
+
logger.error(`Teardown failure`, e);
|
|
26
|
+
process.exit(1);
|
|
35
27
|
}
|
|
36
28
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
*
|
|
40
|
-
* Retries lock and other errors for up to two minutes.
|
|
41
|
-
*
|
|
42
|
-
* This is a best-effot attempt. In some cases it may not be possible to delete the replication
|
|
43
|
-
* slot, such as when the postgres instance is unreachable.
|
|
44
|
-
*/
|
|
45
|
-
async function terminateReplicators(storageFactory, connection) {
|
|
29
|
+
async function terminateSyncRules(storageFactory, moduleManager) {
|
|
30
|
+
logger.info(`Terminating sync rules...`);
|
|
46
31
|
const start = Date.now();
|
|
47
|
-
|
|
32
|
+
const locks = [];
|
|
33
|
+
while (Date.now() - start < 120000) {
|
|
48
34
|
let retry = false;
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
35
|
+
const replicatingSyncRules = await storageFactory.getReplicatingSyncRules();
|
|
36
|
+
// Lock all the replicating sync rules
|
|
37
|
+
for (const replicatingSyncRule of replicatingSyncRules) {
|
|
38
|
+
const lock = await replicatingSyncRule.lock();
|
|
39
|
+
locks.push(lock);
|
|
40
|
+
}
|
|
41
|
+
const stoppedSyncRules = await storageFactory.getStoppedSyncRules();
|
|
42
|
+
const combinedSyncRules = [...replicatingSyncRules, ...stoppedSyncRules];
|
|
43
|
+
try {
|
|
44
|
+
// Clean up any module specific configuration for the sync rules
|
|
45
|
+
await moduleManager.tearDown({ syncRules: combinedSyncRules });
|
|
46
|
+
// Mark the sync rules as terminated
|
|
47
|
+
for (let syncRules of combinedSyncRules) {
|
|
48
|
+
const syncRulesStorage = storageFactory.getInstance(syncRules);
|
|
49
|
+
// The storage will be dropped at the end of the teardown, so we don't need to clear it here
|
|
50
|
+
await syncRulesStorage.terminate({ clearStorage: false });
|
|
53
51
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
retry = true;
|
|
55
|
+
for (const lock of locks) {
|
|
56
|
+
await lock.release();
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
if (!retry) {
|
|
@@ -63,32 +62,4 @@ async function terminateReplicators(storageFactory, connection) {
|
|
|
63
62
|
await timers.setTimeout(5000);
|
|
64
63
|
}
|
|
65
64
|
}
|
|
66
|
-
export async function teardown(runnerConfig) {
|
|
67
|
-
const config = await utils.loadConfig(runnerConfig);
|
|
68
|
-
const mongoDB = storage.createPowerSyncMongo(config.storage);
|
|
69
|
-
try {
|
|
70
|
-
logger.info(`Waiting for auth`);
|
|
71
|
-
await db.mongo.waitForAuth(mongoDB.db);
|
|
72
|
-
const bucketStorage = new storage.MongoBucketStorage(mongoDB, { slot_name_prefix: config.slot_name_prefix });
|
|
73
|
-
const connection = config.connection;
|
|
74
|
-
logger.info(`Terminating replication slots`);
|
|
75
|
-
if (connection) {
|
|
76
|
-
await terminateReplicators(bucketStorage, connection);
|
|
77
|
-
}
|
|
78
|
-
const database = mongoDB.db;
|
|
79
|
-
logger.info(`Dropping database ${database.namespace}`);
|
|
80
|
-
await database.dropDatabase();
|
|
81
|
-
logger.info(`Done`);
|
|
82
|
-
await mongoDB.client.close();
|
|
83
|
-
// If there was an error connecting to postgress, the process may stay open indefinitely.
|
|
84
|
-
// This forces an exit.
|
|
85
|
-
// We do not consider those errors a teardown failure.
|
|
86
|
-
process.exit(0);
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
logger.error(`Teardown failure`, e);
|
|
90
|
-
await mongoDB.client.close();
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
65
|
//# sourceMappingURL=teardown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runner/teardown.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runner/teardown.ts"],"names":[],"mappings":"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"}
|