@powersync/service-core 1.7.1 → 1.8.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 +16 -0
- package/dist/routes/RouterEngine.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +3 -3
- package/dist/routes/endpoints/checkpointing.d.ts +6 -6
- package/dist/routes/endpoints/socket-route.js +2 -1
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.js +2 -1
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +2 -1
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/ChecksumCache.d.ts +6 -6
- package/dist/storage/ChecksumCache.js +5 -6
- package/dist/storage/ChecksumCache.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +9 -9
- package/dist/sync/BucketChecksumState.d.ts +8 -4
- package/dist/sync/BucketChecksumState.js +16 -8
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/SyncContext.d.ts +17 -0
- package/dist/sync/SyncContext.js +23 -0
- package/dist/sync/SyncContext.js.map +1 -0
- package/dist/sync/sync-index.d.ts +1 -0
- package/dist/sync/sync-index.js +1 -0
- package/dist/sync/sync-index.js.map +1 -1
- package/dist/sync/sync.d.ts +4 -2
- package/dist/sync/sync.js +16 -24
- package/dist/sync/sync.js.map +1 -1
- package/dist/system/ServiceContext.d.ts +3 -0
- package/dist/system/ServiceContext.js +7 -0
- package/dist/system/ServiceContext.js.map +1 -1
- package/dist/util/config/compound-config-collector.js +13 -1
- package/dist/util/config/compound-config-collector.js.map +1 -1
- package/dist/util/config/defaults.d.ts +5 -0
- package/dist/util/config/defaults.js +6 -0
- package/dist/util/config/defaults.js.map +1 -0
- package/dist/util/config/types.d.ts +7 -2
- package/dist/util/config/types.js.map +1 -1
- package/dist/util/protocol-types.d.ts +10 -10
- package/dist/util/utils.d.ts +12 -2
- package/dist/util/utils.js +5 -1
- package/dist/util/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/routes/RouterEngine.ts +1 -0
- package/src/routes/endpoints/socket-route.ts +2 -1
- package/src/routes/endpoints/sync-stream.ts +2 -1
- package/src/storage/BucketStorageBatch.ts +2 -1
- package/src/storage/ChecksumCache.ts +13 -14
- package/src/storage/SyncRulesBucketStorage.ts +10 -10
- package/src/sync/BucketChecksumState.ts +38 -12
- package/src/sync/SyncContext.ts +36 -0
- package/src/sync/sync-index.ts +1 -0
- package/src/sync/sync.ts +31 -32
- package/src/system/ServiceContext.ts +9 -0
- package/src/util/config/compound-config-collector.ts +24 -1
- package/src/util/config/defaults.ts +5 -0
- package/src/util/config/types.ts +8 -2
- package/src/util/protocol-types.ts +10 -10
- package/src/util/utils.ts +13 -2
- package/test/src/checksum_cache.test.ts +83 -84
- package/test/src/sync/BucketChecksumState.test.ts +62 -41
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-index.js","sourceRoot":"","sources":["../../src/sync/sync-index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"sync-index.js","sourceRoot":"","sources":["../../src/sync/sync-index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
|
package/dist/sync/sync.d.ts
CHANGED
|
@@ -2,9 +2,11 @@ import { BucketDescription, RequestParameters, SqlSyncRules } from '@powersync/s
|
|
|
2
2
|
import * as auth from '../auth/auth-index.js';
|
|
3
3
|
import * as storage from '../storage/storage-index.js';
|
|
4
4
|
import * as util from '../util/util-index.js';
|
|
5
|
-
import { RequestTracker } from './RequestTracker.js';
|
|
6
5
|
import { TokenStreamOptions } from './util.js';
|
|
6
|
+
import { SyncContext } from './SyncContext.js';
|
|
7
|
+
import { RequestTracker } from './RequestTracker.js';
|
|
7
8
|
export interface SyncStreamParameters {
|
|
9
|
+
syncContext: SyncContext;
|
|
8
10
|
bucketStorage: storage.SyncRulesBucketStorage;
|
|
9
11
|
syncRules: SqlSyncRules;
|
|
10
12
|
params: util.StreamingSyncRequest;
|
|
@@ -20,5 +22,5 @@ export interface SyncStreamParameters {
|
|
|
20
22
|
export declare function streamResponse(options: SyncStreamParameters): AsyncIterable<util.StreamingSyncLine | string | null>;
|
|
21
23
|
export type BucketSyncState = {
|
|
22
24
|
description?: BucketDescription;
|
|
23
|
-
start_op_id:
|
|
25
|
+
start_op_id: util.InternalOpId;
|
|
24
26
|
};
|
package/dist/sync/sync.js
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
1
|
import { JSONBig, JsonContainer } from '@powersync/service-jsonbig';
|
|
2
|
-
import { Semaphore, withTimeout } from 'async-mutex';
|
|
3
2
|
import { AbortError } from 'ix/aborterror.js';
|
|
4
3
|
import * as util from '../util/util-index.js';
|
|
5
4
|
import { logger } from '@powersync/lib-services-framework';
|
|
6
5
|
import { BucketChecksumState } from './BucketChecksumState.js';
|
|
7
6
|
import { mergeAsyncIterables } from './merge.js';
|
|
8
7
|
import { acquireSemaphoreAbortable, settledPromise, tokenStream } from './util.js';
|
|
9
|
-
/**
|
|
10
|
-
* Maximum number of connections actively fetching data.
|
|
11
|
-
*/
|
|
12
|
-
const MAX_ACTIVE_CONNECTIONS = 10;
|
|
13
|
-
/**
|
|
14
|
-
* Maximum duration to wait for the mutex to become available.
|
|
15
|
-
*
|
|
16
|
-
* This gives an explicit error if there are mutex issues, rather than just hanging.
|
|
17
|
-
*/
|
|
18
|
-
const MUTEX_ACQUIRE_TIMEOUT = 30_000;
|
|
19
|
-
const syncSemaphore = withTimeout(new Semaphore(MAX_ACTIVE_CONNECTIONS), MUTEX_ACQUIRE_TIMEOUT, new Error(`Timeout while waiting for data`));
|
|
20
8
|
export async function* streamResponse(options) {
|
|
21
|
-
const { bucketStorage, syncRules, params, syncParams, token, tokenStreamOptions, tracker, signal } = options;
|
|
9
|
+
const { syncContext, bucketStorage, syncRules, params, syncParams, token, tokenStreamOptions, tracker, signal } = options;
|
|
22
10
|
// We also need to be able to abort, so we create our own controller.
|
|
23
11
|
const controller = new AbortController();
|
|
24
12
|
if (signal) {
|
|
@@ -30,7 +18,7 @@ export async function* streamResponse(options) {
|
|
|
30
18
|
}
|
|
31
19
|
}
|
|
32
20
|
const ki = tokenStream(token, controller.signal, tokenStreamOptions);
|
|
33
|
-
const stream = streamResponseInner(bucketStorage, syncRules, params, syncParams, tracker, controller.signal);
|
|
21
|
+
const stream = streamResponseInner(syncContext, bucketStorage, syncRules, params, syncParams, tracker, controller.signal);
|
|
34
22
|
// Merge the two streams, and abort as soon as one of the streams end.
|
|
35
23
|
const merged = mergeAsyncIterables([stream, ki], controller.signal);
|
|
36
24
|
try {
|
|
@@ -50,14 +38,18 @@ export async function* streamResponse(options) {
|
|
|
50
38
|
controller.abort();
|
|
51
39
|
}
|
|
52
40
|
}
|
|
53
|
-
async function* streamResponseInner(bucketStorage, syncRules, params, syncParams, tracker, signal) {
|
|
41
|
+
async function* streamResponseInner(syncContext, bucketStorage, syncRules, params, syncParams, tracker, signal) {
|
|
54
42
|
const { raw_data, binary_data } = params;
|
|
55
43
|
const checkpointUserId = util.checkpointUserId(syncParams.token_parameters.user_id, params.client_id);
|
|
56
44
|
const checksumState = new BucketChecksumState({
|
|
45
|
+
syncContext,
|
|
57
46
|
bucketStorage,
|
|
58
47
|
syncRules,
|
|
59
48
|
syncParams,
|
|
60
|
-
initialBucketPositions: params.buckets
|
|
49
|
+
initialBucketPositions: params.buckets?.map((bucket) => ({
|
|
50
|
+
name: bucket.name,
|
|
51
|
+
after: BigInt(bucket.after)
|
|
52
|
+
}))
|
|
61
53
|
});
|
|
62
54
|
const stream = bucketStorage.watchWriteCheckpoint({
|
|
63
55
|
user_id: checkpointUserId,
|
|
@@ -133,6 +125,7 @@ async function* streamResponseInner(bucketStorage, syncRules, params, syncParams
|
|
|
133
125
|
break;
|
|
134
126
|
}
|
|
135
127
|
yield* bucketDataInBatches({
|
|
128
|
+
syncContext: syncContext,
|
|
136
129
|
bucketStorage: bucketStorage,
|
|
137
130
|
checkpoint: next.value.value.base.checkpoint,
|
|
138
131
|
bucketsToFetch: buckets,
|
|
@@ -194,13 +187,12 @@ async function* bucketDataInBatches(request) {
|
|
|
194
187
|
* Extracted as a separate internal function just to avoid memory leaks.
|
|
195
188
|
*/
|
|
196
189
|
async function* bucketDataBatch(request) {
|
|
197
|
-
const { bucketStorage: storage, checkpoint, bucketsToFetch, checksumState, raw_data, binary_data, abort_connection, abort_batch, onRowsSent } = request;
|
|
198
|
-
const checkpointOp = BigInt(checkpoint);
|
|
190
|
+
const { syncContext, bucketStorage: storage, checkpoint, bucketsToFetch, checksumState, raw_data, binary_data, abort_connection, abort_batch, onRowsSent } = request;
|
|
199
191
|
let checkpointInvalidated = false;
|
|
200
|
-
if (syncSemaphore.isLocked()) {
|
|
192
|
+
if (syncContext.syncSemaphore.isLocked()) {
|
|
201
193
|
logger.info('Sync concurrency limit reached, waiting for lock', { user_id: request.user_id });
|
|
202
194
|
}
|
|
203
|
-
const acquired = await acquireSemaphoreAbortable(syncSemaphore, AbortSignal.any([abort_batch]));
|
|
195
|
+
const acquired = await acquireSemaphoreAbortable(syncContext.syncSemaphore, AbortSignal.any([abort_batch]));
|
|
204
196
|
if (acquired === 'aborted') {
|
|
205
197
|
return;
|
|
206
198
|
}
|
|
@@ -227,7 +219,7 @@ async function* bucketDataBatch(request) {
|
|
|
227
219
|
if (r.has_more) {
|
|
228
220
|
has_more = true;
|
|
229
221
|
}
|
|
230
|
-
if (targetOp != null && targetOp >
|
|
222
|
+
if (targetOp != null && targetOp > checkpoint) {
|
|
231
223
|
checkpointInvalidated = true;
|
|
232
224
|
}
|
|
233
225
|
if (r.data.length == 0) {
|
|
@@ -263,7 +255,7 @@ async function* bucketDataBatch(request) {
|
|
|
263
255
|
yield { data: null, done: false };
|
|
264
256
|
}
|
|
265
257
|
onRowsSent(r.data.length);
|
|
266
|
-
checksumState.updateBucketPosition({ bucket: r.bucket, nextAfter: r.next_after, hasMore: r.has_more });
|
|
258
|
+
checksumState.updateBucketPosition({ bucket: r.bucket, nextAfter: BigInt(r.next_after), hasMore: r.has_more });
|
|
267
259
|
// Check if syncing bucket data is supposed to stop before fetching more data
|
|
268
260
|
// from storage.
|
|
269
261
|
if (abort_batch.aborted) {
|
|
@@ -281,7 +273,7 @@ async function* bucketDataBatch(request) {
|
|
|
281
273
|
if (request.forPriority != null) {
|
|
282
274
|
const line = {
|
|
283
275
|
partial_checkpoint_complete: {
|
|
284
|
-
last_op_id: checkpoint,
|
|
276
|
+
last_op_id: util.internalToExternalOpId(checkpoint),
|
|
285
277
|
priority: request.forPriority
|
|
286
278
|
}
|
|
287
279
|
};
|
|
@@ -290,7 +282,7 @@ async function* bucketDataBatch(request) {
|
|
|
290
282
|
else {
|
|
291
283
|
const line = {
|
|
292
284
|
checkpoint_complete: {
|
|
293
|
-
last_op_id: checkpoint
|
|
285
|
+
last_op_id: util.internalToExternalOpId(checkpoint)
|
|
294
286
|
}
|
|
295
287
|
};
|
|
296
288
|
yield { data: line, done: true };
|
package/dist/sync/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import * as replication from '../replication/replication-index.js';
|
|
|
5
5
|
import * as routes from '../routes/routes-index.js';
|
|
6
6
|
import * as storage from '../storage/storage-index.js';
|
|
7
7
|
import * as utils from '../util/util-index.js';
|
|
8
|
+
import { SyncContext } from '../sync/SyncContext.js';
|
|
8
9
|
export interface ServiceContext {
|
|
9
10
|
configuration: utils.ResolvedPowerSyncConfig;
|
|
10
11
|
lifeCycleEngine: LifeCycledSystem;
|
|
@@ -13,6 +14,7 @@ export interface ServiceContext {
|
|
|
13
14
|
routerEngine: routes.RouterEngine | null;
|
|
14
15
|
storageEngine: storage.StorageEngine;
|
|
15
16
|
migrations: PowerSyncMigrationManager;
|
|
17
|
+
syncContext: SyncContext;
|
|
16
18
|
}
|
|
17
19
|
/**
|
|
18
20
|
* Context which allows for registering and getting implementations
|
|
@@ -23,6 +25,7 @@ export declare class ServiceContextContainer implements ServiceContext {
|
|
|
23
25
|
configuration: utils.ResolvedPowerSyncConfig;
|
|
24
26
|
lifeCycleEngine: LifeCycledSystem;
|
|
25
27
|
storageEngine: storage.StorageEngine;
|
|
28
|
+
syncContext: SyncContext;
|
|
26
29
|
constructor(configuration: utils.ResolvedPowerSyncConfig);
|
|
27
30
|
get replicationEngine(): replication.ReplicationEngine | null;
|
|
28
31
|
get routerEngine(): routes.RouterEngine | null;
|
|
@@ -4,6 +4,7 @@ import * as metrics from '../metrics/Metrics.js';
|
|
|
4
4
|
import * as replication from '../replication/replication-index.js';
|
|
5
5
|
import * as routes from '../routes/routes-index.js';
|
|
6
6
|
import * as storage from '../storage/storage-index.js';
|
|
7
|
+
import { SyncContext } from '../sync/SyncContext.js';
|
|
7
8
|
/**
|
|
8
9
|
* Context which allows for registering and getting implementations
|
|
9
10
|
* of various service engines.
|
|
@@ -13,12 +14,18 @@ export class ServiceContextContainer {
|
|
|
13
14
|
configuration;
|
|
14
15
|
lifeCycleEngine;
|
|
15
16
|
storageEngine;
|
|
17
|
+
syncContext;
|
|
16
18
|
constructor(configuration) {
|
|
17
19
|
this.configuration = configuration;
|
|
18
20
|
this.lifeCycleEngine = new LifeCycledSystem();
|
|
19
21
|
this.storageEngine = new storage.StorageEngine({
|
|
20
22
|
configuration
|
|
21
23
|
});
|
|
24
|
+
this.syncContext = new SyncContext({
|
|
25
|
+
maxDataFetchConcurrency: configuration.api_parameters.max_data_fetch_concurrency,
|
|
26
|
+
maxBuckets: configuration.api_parameters.max_buckets_per_connection,
|
|
27
|
+
maxParameterQueryResults: configuration.api_parameters.max_parameter_query_results
|
|
28
|
+
});
|
|
22
29
|
const migrationManager = new MigrationManager();
|
|
23
30
|
container.register(framework.ContainerImplementation.MIGRATION_MANAGER, migrationManager);
|
|
24
31
|
this.lifeCycleEngine.withLifecycle(migrationManager, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAErH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAErH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAEjD,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAarD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAKf;IAJnB,eAAe,CAAmB;IAClC,aAAa,CAAwB;IACrC,WAAW,CAAc;IAEzB,YAAmB,aAA4C;QAA5C,kBAAa,GAAb,aAAa,CAA+B;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;YAC7C,aAAa;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,uBAAuB,EAAE,aAAa,CAAC,cAAc,CAAC,0BAA0B;YAChF,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,0BAA0B;YACnE,wBAAwB,EAAE,aAAa,CAAC,cAAc,CAAC,2BAA2B;SACnF,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAE1F,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACnD,yDAAyD;YACzD,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,KAAK,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAC/C,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAI,UAAgC,EAAE,cAAiB;QAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,UAAgC;QACrC,OAAO,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -6,6 +6,7 @@ import { FileSystemConfigCollector } from './collectors/impl/filesystem-config-c
|
|
|
6
6
|
import { Base64SyncRulesCollector } from './sync-rules/impl/base64-sync-rules-collector.js';
|
|
7
7
|
import { FileSystemSyncRulesCollector } from './sync-rules/impl/filesystem-sync-rules-collector.js';
|
|
8
8
|
import { InlineSyncRulesCollector } from './sync-rules/impl/inline-sync-rules-collector.js';
|
|
9
|
+
import { DEFAULT_MAX_BUCKETS_PER_CONNECTION, DEFAULT_MAX_CONCURRENT_CONNECTIONS, DEFAULT_MAX_DATA_FETCH_CONCURRENCY, DEFAULT_MAX_PARAMETER_QUERY_RESULTS, DEFAULT_MAX_POOL_SIZE } from './defaults.js';
|
|
9
10
|
const POWERSYNC_DEV_KID = 'powersync-dev';
|
|
10
11
|
const DEFAULT_COLLECTOR_OPTIONS = {
|
|
11
12
|
configCollectors: [new Base64ConfigCollector(), new FileSystemConfigCollector(), new FallbackConfigCollector()],
|
|
@@ -80,7 +81,12 @@ export class CompoundConfigCollector {
|
|
|
80
81
|
let config = {
|
|
81
82
|
base_config: baseConfig,
|
|
82
83
|
connections: baseConfig.replication?.connections || [],
|
|
83
|
-
storage:
|
|
84
|
+
storage: {
|
|
85
|
+
...baseConfig.storage,
|
|
86
|
+
parameters: {
|
|
87
|
+
max_pool_size: baseConfig.storage?.parameters?.max_pool_size ?? DEFAULT_MAX_POOL_SIZE
|
|
88
|
+
}
|
|
89
|
+
},
|
|
84
90
|
client_keystore: keyStore,
|
|
85
91
|
// Dev tokens only use the static keys, no external key sources
|
|
86
92
|
// We may restrict this even further to only the powersync-dev key.
|
|
@@ -100,6 +106,12 @@ export class CompoundConfigCollector {
|
|
|
100
106
|
disable_telemetry_sharing: baseConfig.telemetry?.disable_telemetry_sharing ?? false,
|
|
101
107
|
internal_service_endpoint: baseConfig.telemetry?.internal_service_endpoint ?? 'https://pulse.journeyapps.com/v1/metrics'
|
|
102
108
|
},
|
|
109
|
+
api_parameters: {
|
|
110
|
+
max_buckets_per_connection: baseConfig.api?.parameters?.max_buckets_per_connection ?? DEFAULT_MAX_BUCKETS_PER_CONNECTION,
|
|
111
|
+
max_parameter_query_results: baseConfig.api?.parameters?.max_parameter_query_results ?? DEFAULT_MAX_PARAMETER_QUERY_RESULTS,
|
|
112
|
+
max_concurrent_connections: baseConfig.api?.parameters?.max_concurrent_connections ?? DEFAULT_MAX_CONCURRENT_CONNECTIONS,
|
|
113
|
+
max_data_fetch_concurrency: baseConfig.api?.parameters?.max_data_fetch_concurrency ?? DEFAULT_MAX_DATA_FETCH_CONCURRENCY
|
|
114
|
+
},
|
|
103
115
|
// TODO maybe move this out of the connection or something
|
|
104
116
|
// slot_name_prefix: connections[0]?.slot_name_prefix ?? 'powersync_'
|
|
105
117
|
slot_name_prefix: 'powersync_',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC;AACpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const DEFAULT_MAX_POOL_SIZE = 8;
|
|
2
|
+
export declare const DEFAULT_MAX_CONCURRENT_CONNECTIONS = 200;
|
|
3
|
+
export declare const DEFAULT_MAX_DATA_FETCH_CONCURRENCY = 10;
|
|
4
|
+
export declare const DEFAULT_MAX_BUCKETS_PER_CONNECTION = 1000;
|
|
5
|
+
export declare const DEFAULT_MAX_PARAMETER_QUERY_RESULTS = 1000;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const DEFAULT_MAX_POOL_SIZE = 8;
|
|
2
|
+
export const DEFAULT_MAX_CONCURRENT_CONNECTIONS = 200;
|
|
3
|
+
export const DEFAULT_MAX_DATA_FETCH_CONCURRENCY = 10;
|
|
4
|
+
export const DEFAULT_MAX_BUCKETS_PER_CONNECTION = 1000;
|
|
5
|
+
export const DEFAULT_MAX_PARAMETER_QUERY_RESULTS = 1000;
|
|
6
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/util/config/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAG,CAAC;AACtD,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AACrD,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { configFile } from '@powersync/service-types';
|
|
2
|
-
import { PowerSyncConfig } from '@powersync/service-types/src/config/PowerSyncConfig.js';
|
|
3
2
|
import { CompoundKeyCollector } from '../../auth/CompoundKeyCollector.js';
|
|
4
3
|
import { KeySpec } from '../../auth/KeySpec.js';
|
|
5
4
|
import { KeyStore } from '../../auth/KeyStore.js';
|
|
@@ -24,7 +23,7 @@ export type SyncRulesConfig = {
|
|
|
24
23
|
exit_on_error: boolean;
|
|
25
24
|
};
|
|
26
25
|
export type ResolvedPowerSyncConfig = {
|
|
27
|
-
base_config: PowerSyncConfig;
|
|
26
|
+
base_config: configFile.PowerSyncConfig;
|
|
28
27
|
connections?: configFile.GenericDataSourceConfig[];
|
|
29
28
|
storage: configFile.GenericStorageConfig;
|
|
30
29
|
dev: {
|
|
@@ -52,6 +51,12 @@ export type ResolvedPowerSyncConfig = {
|
|
|
52
51
|
disable_telemetry_sharing: boolean;
|
|
53
52
|
internal_service_endpoint: string;
|
|
54
53
|
};
|
|
54
|
+
api_parameters: {
|
|
55
|
+
max_concurrent_connections: number;
|
|
56
|
+
max_data_fetch_concurrency: number;
|
|
57
|
+
max_buckets_per_connection: number;
|
|
58
|
+
max_parameter_query_results: number;
|
|
59
|
+
};
|
|
55
60
|
/** Prefix for postgres replication slot names. May eventually be connection-specific. */
|
|
56
61
|
slot_name_prefix: string;
|
|
57
62
|
parameters: Record<string, number | string | boolean | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/util/config/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/util/config/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACf,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
|
|
@@ -50,8 +50,8 @@ export interface StreamingSyncCheckpoint {
|
|
|
50
50
|
}
|
|
51
51
|
export interface StreamingSyncCheckpointDiff {
|
|
52
52
|
checkpoint_diff: {
|
|
53
|
-
last_op_id:
|
|
54
|
-
write_checkpoint?:
|
|
53
|
+
last_op_id: ProtocolOpId;
|
|
54
|
+
write_checkpoint?: ProtocolOpId;
|
|
55
55
|
updated_buckets: BucketChecksumWithDescription[];
|
|
56
56
|
removed_buckets: string[];
|
|
57
57
|
};
|
|
@@ -61,12 +61,12 @@ export interface StreamingSyncData {
|
|
|
61
61
|
}
|
|
62
62
|
export interface StreamingSyncCheckpointComplete {
|
|
63
63
|
checkpoint_complete: {
|
|
64
|
-
last_op_id:
|
|
64
|
+
last_op_id: ProtocolOpId;
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
export interface StreamingSyncCheckpointPartiallyComplete {
|
|
68
68
|
partial_checkpoint_complete: {
|
|
69
|
-
last_op_id:
|
|
69
|
+
last_op_id: ProtocolOpId;
|
|
70
70
|
priority: BucketPriority;
|
|
71
71
|
};
|
|
72
72
|
}
|
|
@@ -77,10 +77,10 @@ export type StreamingSyncLine = StreamingSyncData | StreamingSyncCheckpoint | St
|
|
|
77
77
|
/**
|
|
78
78
|
* 64-bit unsigned number, as a base-10 string.
|
|
79
79
|
*/
|
|
80
|
-
export type
|
|
80
|
+
export type ProtocolOpId = string;
|
|
81
81
|
export interface Checkpoint {
|
|
82
|
-
last_op_id:
|
|
83
|
-
write_checkpoint?:
|
|
82
|
+
last_op_id: ProtocolOpId;
|
|
83
|
+
write_checkpoint?: ProtocolOpId;
|
|
84
84
|
buckets: BucketChecksumWithDescription[];
|
|
85
85
|
}
|
|
86
86
|
export interface BucketState {
|
|
@@ -100,14 +100,14 @@ export interface SyncBucketData {
|
|
|
100
100
|
/**
|
|
101
101
|
* The `after` specified in the request.
|
|
102
102
|
*/
|
|
103
|
-
after:
|
|
103
|
+
after: ProtocolOpId;
|
|
104
104
|
/**
|
|
105
105
|
* Use this for the next request.
|
|
106
106
|
*/
|
|
107
|
-
next_after:
|
|
107
|
+
next_after: ProtocolOpId;
|
|
108
108
|
}
|
|
109
109
|
export interface OplogEntry {
|
|
110
|
-
op_id:
|
|
110
|
+
op_id: ProtocolOpId;
|
|
111
111
|
op: 'PUT' | 'REMOVE' | 'MOVE' | 'CLEAR';
|
|
112
112
|
object_type?: string;
|
|
113
113
|
object_id?: string;
|
package/dist/util/utils.d.ts
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import * as sync_rules from '@powersync/service-sync-rules';
|
|
2
2
|
import * as bson from 'bson';
|
|
3
|
-
import { BucketChecksum,
|
|
3
|
+
import { BucketChecksum, ProtocolOpId, OplogEntry } from './protocol-types.js';
|
|
4
4
|
import * as storage from '../storage/storage-index.js';
|
|
5
5
|
import { PartialChecksum } from '../storage/ChecksumCache.js';
|
|
6
6
|
export type ChecksumMap = Map<string, BucketChecksum>;
|
|
7
|
+
/**
|
|
8
|
+
* op_id as used internally, for individual operations and checkpoints.
|
|
9
|
+
*
|
|
10
|
+
* This is just a type alias, but serves to document that we're working with an op_id.
|
|
11
|
+
*/
|
|
12
|
+
export type InternalOpId = bigint;
|
|
7
13
|
export declare const ID_NAMESPACE = "a396dd91-09fc-4017-a28d-3df722f651e9";
|
|
8
14
|
export declare function escapeIdentifier(identifier: string): string;
|
|
9
15
|
export declare function hashData(type: string, id: string, data: string): number;
|
|
10
16
|
export declare function hashDelete(sourceKey: string): number;
|
|
11
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Internally we always use bigint for op_ids. Externally (in JSON) we use strings.
|
|
19
|
+
* This converts between the two.
|
|
20
|
+
*/
|
|
21
|
+
export declare function internalToExternalOpId(ts: InternalOpId): ProtocolOpId;
|
|
12
22
|
export declare function checksumsDiff(previous: ChecksumMap, current: ChecksumMap): {
|
|
13
23
|
updatedBuckets: BucketChecksum[];
|
|
14
24
|
removedBuckets: string[];
|
package/dist/util/utils.js
CHANGED
|
@@ -18,7 +18,11 @@ export function hashDelete(sourceKey) {
|
|
|
18
18
|
const buffer = hash.digest();
|
|
19
19
|
return buffer.readUInt32LE(0);
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Internally we always use bigint for op_ids. Externally (in JSON) we use strings.
|
|
23
|
+
* This converts between the two.
|
|
24
|
+
*/
|
|
25
|
+
export function internalToExternalOpId(ts) {
|
|
22
26
|
// Dynamic values are passed in in some cases, so we make extra sure that the
|
|
23
27
|
// number is a bigint and not number or Long.
|
|
24
28
|
if (typeof ts != 'bigint') {
|
package/dist/util/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/util/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAM7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/util/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "1.
|
|
8
|
+
"version": "1.8.0",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"license": "FSL-1.1-Apache-2.0",
|
|
11
11
|
"type": "module",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"@powersync/lib-services-framework": "0.5.3",
|
|
36
36
|
"@powersync/service-jsonbig": "0.17.10",
|
|
37
37
|
"@powersync/service-rsocket-router": "0.0.20",
|
|
38
|
-
"@powersync/service-sync-rules": "0.24.
|
|
39
|
-
"@powersync/service-types": "0.
|
|
38
|
+
"@powersync/service-sync-rules": "0.24.1",
|
|
39
|
+
"@powersync/service-types": "0.9.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/async": "^3.2.24",
|
|
@@ -10,6 +10,7 @@ import { SYNC_RULES_ROUTES } from './endpoints/sync-rules.js';
|
|
|
10
10
|
import { SYNC_STREAM_ROUTES } from './endpoints/sync-stream.js';
|
|
11
11
|
import { SocketRouteGenerator } from './router-socket.js';
|
|
12
12
|
import { RouteDefinition } from './router.js';
|
|
13
|
+
import { SyncContext } from '../sync/SyncContext.js';
|
|
13
14
|
|
|
14
15
|
export type RouterSetupResponse = {
|
|
15
16
|
onShutdown: () => Promise<void>;
|
|
@@ -13,7 +13,7 @@ export const syncStreamReactive: SocketRouteGenerator = (router) =>
|
|
|
13
13
|
validator: schema.createTsCodecValidator(util.StreamingSyncRequest, { allowAdditional: true }),
|
|
14
14
|
handler: async ({ context, params, responder, observer, initialN, signal: upstreamSignal }) => {
|
|
15
15
|
const { service_context } = context;
|
|
16
|
-
const { routerEngine } = service_context;
|
|
16
|
+
const { routerEngine, syncContext } = service_context;
|
|
17
17
|
|
|
18
18
|
// Create our own controller that we can abort directly
|
|
19
19
|
const controller = new AbortController();
|
|
@@ -73,6 +73,7 @@ export const syncStreamReactive: SocketRouteGenerator = (router) =>
|
|
|
73
73
|
const tracker = new sync.RequestTracker();
|
|
74
74
|
try {
|
|
75
75
|
for await (const data of sync.streamResponse({
|
|
76
|
+
syncContext: syncContext,
|
|
76
77
|
bucketStorage: bucketStorage,
|
|
77
78
|
syncRules: syncRules,
|
|
78
79
|
params: {
|
|
@@ -20,7 +20,7 @@ export const syncStreamed = routeDefinition({
|
|
|
20
20
|
validator: schema.createTsCodecValidator(util.StreamingSyncRequest, { allowAdditional: true }),
|
|
21
21
|
handler: async (payload) => {
|
|
22
22
|
const { service_context } = payload.context;
|
|
23
|
-
const { routerEngine, storageEngine } = service_context;
|
|
23
|
+
const { routerEngine, storageEngine, syncContext } = service_context;
|
|
24
24
|
const headers = payload.request.headers;
|
|
25
25
|
const userAgent = headers['x-user-agent'] ?? headers['user-agent'];
|
|
26
26
|
const clientId = payload.params.client_id;
|
|
@@ -56,6 +56,7 @@ export const syncStreamed = routeDefinition({
|
|
|
56
56
|
sync.transformToBytesTracked(
|
|
57
57
|
sync.ndjson(
|
|
58
58
|
sync.streamResponse({
|
|
59
|
+
syncContext: syncContext,
|
|
59
60
|
bucketStorage,
|
|
60
61
|
syncRules: syncRules,
|
|
61
62
|
params,
|
|
@@ -4,6 +4,7 @@ import { BSON } from 'bson';
|
|
|
4
4
|
import { ReplicationEventPayload } from './ReplicationEventPayload.js';
|
|
5
5
|
import { SourceTable } from './SourceTable.js';
|
|
6
6
|
import { BatchedCustomWriteCheckpointOptions } from './storage-index.js';
|
|
7
|
+
import { InternalOpId } from '../util/utils.js';
|
|
7
8
|
|
|
8
9
|
export const DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS: ResolvedBucketBatchCommitOptions = {
|
|
9
10
|
createEmptyCheckpoints: true
|
|
@@ -144,7 +145,7 @@ export interface BucketBatchStorageListener {
|
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
export interface FlushedResult {
|
|
147
|
-
flushed_op:
|
|
148
|
+
flushed_op: InternalOpId;
|
|
148
149
|
}
|
|
149
150
|
|
|
150
151
|
export interface BucketBatchCommitOptions {
|