@powersync/service-core 0.0.0-dev-20250507151436 → 0.0.0-dev-20250611110033
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 +47 -7
- package/dist/api/RouteAPI.d.ts +1 -5
- package/dist/api/diagnostics.js +1 -1
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/auth/CachedKeyCollector.js +2 -7
- package/dist/auth/CachedKeyCollector.js.map +1 -1
- package/dist/auth/CompoundKeyCollector.js.map +1 -1
- package/dist/auth/KeyCollector.d.ts +2 -2
- package/dist/auth/KeyStore.js +32 -14
- package/dist/auth/KeyStore.js.map +1 -1
- package/dist/auth/RemoteJWKSCollector.d.ts +1 -0
- package/dist/auth/RemoteJWKSCollector.js +39 -16
- package/dist/auth/RemoteJWKSCollector.js.map +1 -1
- package/dist/auth/auth-index.d.ts +1 -0
- package/dist/auth/auth-index.js +1 -0
- package/dist/auth/auth-index.js.map +1 -1
- package/dist/auth/utils.d.ts +6 -0
- package/dist/auth/utils.js +97 -0
- package/dist/auth/utils.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/metrics/open-telemetry/OpenTelemetryMetricsFactory.d.ts +1 -1
- package/dist/metrics/open-telemetry/OpenTelemetryMetricsFactory.js.map +1 -1
- package/dist/replication/AbstractReplicationJob.d.ts +4 -0
- package/dist/replication/AbstractReplicationJob.js.map +1 -1
- package/dist/replication/AbstractReplicator.d.ts +23 -0
- package/dist/replication/AbstractReplicator.js +45 -0
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/replication/RelationCache.d.ts +9 -0
- package/dist/replication/RelationCache.js +20 -0
- package/dist/replication/RelationCache.js.map +1 -0
- package/dist/replication/replication-index.d.ts +1 -0
- package/dist/replication/replication-index.js +1 -0
- package/dist/replication/replication-index.js.map +1 -1
- package/dist/replication/replication-metrics.js +6 -0
- package/dist/replication/replication-metrics.js.map +1 -1
- package/dist/routes/RouterEngine.js +1 -1
- package/dist/routes/RouterEngine.js.map +1 -1
- package/dist/routes/auth.d.ts +5 -16
- package/dist/routes/auth.js +6 -4
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +3 -21
- package/dist/routes/configure-fastify.js +3 -2
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/configure-rsocket.js +28 -11
- package/dist/routes/configure-rsocket.js.map +1 -1
- package/dist/routes/endpoints/admin.js +2 -0
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/routes/endpoints/checkpointing.d.ts +4 -28
- package/dist/routes/endpoints/socket-route.js +22 -8
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.js +6 -6
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.d.ts +2 -14
- package/dist/routes/endpoints/sync-stream.js +28 -9
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/route-register.js +10 -6
- package/dist/routes/route-register.js.map +1 -1
- package/dist/routes/router.d.ts +7 -3
- package/dist/routes/router.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +17 -1
- package/dist/storage/BucketStorageBatch.js +2 -1
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/PersistedSyncRulesContent.d.ts +5 -0
- package/dist/storage/SourceTable.d.ts +17 -1
- package/dist/storage/SourceTable.js +28 -0
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +11 -2
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/bson.js +4 -1
- package/dist/storage/bson.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +40 -18
- package/dist/sync/BucketChecksumState.js +122 -74
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/RequestTracker.d.ts +22 -1
- package/dist/sync/RequestTracker.js +51 -2
- package/dist/sync/RequestTracker.js.map +1 -1
- package/dist/sync/sync.d.ts +3 -5
- package/dist/sync/sync.js +49 -34
- package/dist/sync/sync.js.map +1 -1
- package/dist/util/config/collectors/config-collector.js +2 -5
- package/dist/util/config/collectors/config-collector.js.map +1 -1
- package/dist/util/protocol-types.d.ts +9 -9
- package/dist/util/protocol-types.js.map +1 -1
- package/dist/util/utils.d.ts +1 -1
- package/package.json +6 -7
- package/src/api/RouteAPI.ts +1 -6
- package/src/api/diagnostics.ts +1 -1
- package/src/auth/CachedKeyCollector.ts +4 -6
- package/src/auth/CompoundKeyCollector.ts +2 -1
- package/src/auth/KeyCollector.ts +2 -2
- package/src/auth/KeyStore.ts +45 -20
- package/src/auth/RemoteJWKSCollector.ts +39 -16
- package/src/auth/auth-index.ts +1 -0
- package/src/auth/utils.ts +102 -0
- package/src/index.ts +2 -0
- package/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts +3 -3
- package/src/replication/AbstractReplicationJob.ts +5 -0
- package/src/replication/AbstractReplicator.ts +47 -0
- package/src/replication/RelationCache.ts +25 -0
- package/src/replication/replication-index.ts +1 -0
- package/src/replication/replication-metrics.ts +7 -0
- package/src/routes/RouterEngine.ts +1 -1
- package/src/routes/auth.ts +7 -6
- package/src/routes/configure-fastify.ts +6 -3
- package/src/routes/configure-rsocket.ts +33 -14
- package/src/routes/endpoints/admin.ts +2 -0
- package/src/routes/endpoints/socket-route.ts +24 -8
- package/src/routes/endpoints/sync-rules.ts +6 -6
- package/src/routes/endpoints/sync-stream.ts +31 -8
- package/src/routes/route-register.ts +10 -7
- package/src/routes/router.ts +9 -3
- package/src/storage/BucketStorageBatch.ts +22 -2
- package/src/storage/PersistedSyncRulesContent.ts +6 -0
- package/src/storage/SourceTable.ts +44 -1
- package/src/storage/SyncRulesBucketStorage.ts +14 -2
- package/src/storage/bson.ts +4 -1
- package/src/sync/BucketChecksumState.ts +162 -77
- package/src/sync/RequestTracker.ts +70 -3
- package/src/sync/sync.ts +72 -49
- package/src/util/config/collectors/config-collector.ts +3 -7
- package/src/util/protocol-types.ts +15 -10
- package/test/src/auth.test.ts +29 -11
- package/test/src/sync/BucketChecksumState.test.ts +32 -18
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ObserverClient } from '@powersync/lib-services-framework';
|
|
1
|
+
import { Logger, ObserverClient } from '@powersync/lib-services-framework';
|
|
2
2
|
import { ParameterLookup, SqlSyncRules, SqliteJsonRow } from '@powersync/service-sync-rules';
|
|
3
3
|
import * as util from '../util/util-index.js';
|
|
4
|
-
import { BucketStorageBatch, FlushedResult } from './BucketStorageBatch.js';
|
|
4
|
+
import { BucketStorageBatch, FlushedResult, SaveUpdate } from './BucketStorageBatch.js';
|
|
5
5
|
import { BucketStorageFactory } from './BucketStorageFactory.js';
|
|
6
6
|
import { ParseSyncRulesOptions } from './PersistedSyncRulesContent.js';
|
|
7
7
|
import { SourceEntityDescriptor } from './SourceEntity.js';
|
|
@@ -95,6 +95,7 @@ export interface SyncRuleStatus {
|
|
|
95
95
|
checkpoint_lsn: string | null;
|
|
96
96
|
active: boolean;
|
|
97
97
|
snapshot_done: boolean;
|
|
98
|
+
snapshot_lsn: string | null;
|
|
98
99
|
}
|
|
99
100
|
export interface ResolveTableOptions {
|
|
100
101
|
group_id: number;
|
|
@@ -125,6 +126,13 @@ export interface StartBatchOptions extends ParseSyncRulesOptions {
|
|
|
125
126
|
* This will avoid creating new operations for rows previously replicated.
|
|
126
127
|
*/
|
|
127
128
|
skipExistingRows?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Callback called if we streamed an update to a record that we don't have yet.
|
|
131
|
+
*
|
|
132
|
+
* This is expected to happen in some initial replication edge cases, only if storeCurrentData = true.
|
|
133
|
+
*/
|
|
134
|
+
markRecordUnavailable?: BucketStorageMarkRecordUnavailable;
|
|
135
|
+
logger?: Logger;
|
|
128
136
|
}
|
|
129
137
|
export interface CompactOptions {
|
|
130
138
|
/**
|
|
@@ -216,3 +224,4 @@ export interface CheckpointChanges {
|
|
|
216
224
|
invalidateParameterBuckets: boolean;
|
|
217
225
|
}
|
|
218
226
|
export declare const CHECKPOINT_INVALIDATE_ALL: CheckpointChanges;
|
|
227
|
+
export type BucketStorageMarkRecordUnavailable = (record: SaveUpdate) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncRulesBucketStorage.js","sourceRoot":"","sources":["../../src/storage/SyncRulesBucketStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SyncRulesBucketStorage.js","sourceRoot":"","sources":["../../src/storage/SyncRulesBucketStorage.ts"],"names":[],"mappings":"AAwRA,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,kBAAkB,EAAE,IAAI,GAAG,EAAU;IACrC,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,IAAI,GAAG,EAAU;IAC1C,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
|
package/dist/storage/bson.js
CHANGED
|
@@ -4,7 +4,10 @@ import * as bson from 'bson';
|
|
|
4
4
|
*/
|
|
5
5
|
export const BSON_DESERIALIZE_INTERNAL_OPTIONS = {
|
|
6
6
|
// use bigint instead of Long
|
|
7
|
-
useBigInt64: true
|
|
7
|
+
useBigInt64: true,
|
|
8
|
+
// We cannot use promoteBuffers: true, since that also converst UUID to Buffer
|
|
9
|
+
// Instead, we need to handle bson.Binary when reading data
|
|
10
|
+
promoteBuffers: false
|
|
8
11
|
};
|
|
9
12
|
/**
|
|
10
13
|
* Use for data from external sources, which could contain arbitrary fields.
|
package/dist/storage/bson.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bson.js","sourceRoot":"","sources":["../../src/storage/bson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAA4B;IACxE,6BAA6B;IAC7B,WAAW,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"bson.js","sourceRoot":"","sources":["../../src/storage/bson.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { BucketDescription, RequestParameters, SqlSyncRules } from '@powersync/service-sync-rules';
|
|
2
2
|
import * as storage from '../storage/storage-index.js';
|
|
3
3
|
import * as util from '../util/util-index.js';
|
|
4
|
-
import {
|
|
4
|
+
import { Logger } from '@powersync/lib-services-framework';
|
|
5
5
|
import { SyncContext } from './SyncContext.js';
|
|
6
6
|
export interface BucketChecksumStateOptions {
|
|
7
7
|
syncContext: SyncContext;
|
|
8
8
|
bucketStorage: BucketChecksumStateStorage;
|
|
9
9
|
syncRules: SqlSyncRules;
|
|
10
10
|
syncParams: RequestParameters;
|
|
11
|
+
logger?: Logger;
|
|
11
12
|
initialBucketPositions?: {
|
|
12
13
|
name: string;
|
|
13
14
|
after: util.InternalOpId;
|
|
14
15
|
}[];
|
|
15
16
|
}
|
|
17
|
+
type BucketSyncState = {
|
|
18
|
+
start_op_id: util.InternalOpId;
|
|
19
|
+
};
|
|
16
20
|
/**
|
|
17
21
|
* Represents the state of the checksums and data for a specific connection.
|
|
18
22
|
*
|
|
@@ -24,8 +28,10 @@ export declare class BucketChecksumState {
|
|
|
24
28
|
/**
|
|
25
29
|
* Bucket state of bucket id -> op_id.
|
|
26
30
|
* This starts with the state from the client. May contain buckets that the user do not have access to (anymore).
|
|
31
|
+
*
|
|
32
|
+
* This is always updated in-place.
|
|
27
33
|
*/
|
|
28
|
-
bucketDataPositions: Map<string, BucketSyncState>;
|
|
34
|
+
readonly bucketDataPositions: Map<string, BucketSyncState>;
|
|
29
35
|
/**
|
|
30
36
|
* Last checksums sent to the client. We keep this to calculate checkpoint diffs.
|
|
31
37
|
*/
|
|
@@ -37,26 +43,20 @@ export declare class BucketChecksumState {
|
|
|
37
43
|
* partial checkpoints are sent.
|
|
38
44
|
*/
|
|
39
45
|
private pendingBucketDownloads;
|
|
46
|
+
private readonly logger;
|
|
40
47
|
constructor(options: BucketChecksumStateOptions);
|
|
41
|
-
buildNextCheckpointLine(next: storage.StorageCheckpointUpdate): Promise<CheckpointLine | null>;
|
|
42
48
|
/**
|
|
43
|
-
*
|
|
49
|
+
* Build a new checkpoint line for an underlying storage checkpoint update if any buckets have changed.
|
|
44
50
|
*
|
|
45
|
-
*
|
|
46
|
-
* @returns
|
|
47
|
-
*/
|
|
48
|
-
getFilteredBucketPositions(bucketsToFetch: BucketDescription[]): Map<string, util.InternalOpId>;
|
|
49
|
-
/**
|
|
50
|
-
* Update the position of bucket data the client has.
|
|
51
|
+
* This call is idempotent - no internal state is updated directly when this is called.
|
|
51
52
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
53
|
+
* When the checkpoint line is sent to the client, call `CheckpointLine.advance()` to update the internal state.
|
|
54
|
+
* A line may be safely discarded (not sent to the client) if `advance()` is not called.
|
|
55
|
+
*
|
|
56
|
+
* @param next The updated checkpoint
|
|
57
|
+
* @returns A {@link CheckpointLine} if any of the buckets watched by this connected was updated, or otherwise `null`.
|
|
54
58
|
*/
|
|
55
|
-
|
|
56
|
-
bucket: string;
|
|
57
|
-
nextAfter: util.InternalOpId;
|
|
58
|
-
hasMore: boolean;
|
|
59
|
-
}): void;
|
|
59
|
+
buildNextCheckpointLine(next: storage.StorageCheckpointUpdate): Promise<CheckpointLine | null>;
|
|
60
60
|
}
|
|
61
61
|
declare const INVALIDATE_ALL_BUCKETS: unique symbol;
|
|
62
62
|
export interface CheckpointUpdate {
|
|
@@ -78,10 +78,11 @@ export declare class BucketParameterState {
|
|
|
78
78
|
readonly syncParams: RequestParameters;
|
|
79
79
|
private readonly querier;
|
|
80
80
|
private readonly staticBuckets;
|
|
81
|
+
private readonly logger;
|
|
81
82
|
private cachedDynamicBuckets;
|
|
82
83
|
private cachedDynamicBucketSet;
|
|
83
84
|
private readonly lookups;
|
|
84
|
-
constructor(context: SyncContext, bucketStorage: BucketChecksumStateStorage, syncRules: SqlSyncRules, syncParams: RequestParameters);
|
|
85
|
+
constructor(context: SyncContext, bucketStorage: BucketChecksumStateStorage, syncRules: SqlSyncRules, syncParams: RequestParameters, logger: Logger);
|
|
85
86
|
getCheckpointUpdate(checkpoint: storage.StorageCheckpointUpdate): Promise<CheckpointUpdate>;
|
|
86
87
|
/**
|
|
87
88
|
* For static buckets, we can keep track of which buckets have been updated.
|
|
@@ -95,6 +96,27 @@ export declare class BucketParameterState {
|
|
|
95
96
|
export interface CheckpointLine {
|
|
96
97
|
checkpointLine: util.StreamingSyncCheckpointDiff | util.StreamingSyncCheckpoint;
|
|
97
98
|
bucketsToFetch: BucketDescription[];
|
|
99
|
+
/**
|
|
100
|
+
* Call when a checkpoint line is being sent to a client, to update the internal state.
|
|
101
|
+
*/
|
|
102
|
+
advance: () => void;
|
|
103
|
+
/**
|
|
104
|
+
* Get bucket positions to sync, given the list of buckets.
|
|
105
|
+
*
|
|
106
|
+
* @param bucketsToFetch List of buckets to fetch - either this.bucketsToFetch, or a subset of it. Defaults to this.bucketsToFetch.
|
|
107
|
+
*/
|
|
108
|
+
getFilteredBucketPositions(bucketsToFetch?: BucketDescription[]): Map<string, util.InternalOpId>;
|
|
109
|
+
/**
|
|
110
|
+
* Update the position of bucket data the client has, after it was sent to the client.
|
|
111
|
+
*
|
|
112
|
+
* @param bucket the bucket name
|
|
113
|
+
* @param nextAfter sync operations >= this value in the next batch
|
|
114
|
+
*/
|
|
115
|
+
updateBucketPosition(options: {
|
|
116
|
+
bucket: string;
|
|
117
|
+
nextAfter: util.InternalOpId;
|
|
118
|
+
hasMore: boolean;
|
|
119
|
+
}): void;
|
|
98
120
|
}
|
|
99
121
|
export type BucketChecksumStateStorage = Pick<storage.SyncRulesBucketStorage, 'getChecksums' | 'getParameterSets'>;
|
|
100
122
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as util from '../util/util-index.js';
|
|
2
|
-
import { ErrorCode,
|
|
2
|
+
import { ErrorCode, ServiceAssertionError, ServiceError, logger as defaultLogger } from '@powersync/lib-services-framework';
|
|
3
3
|
import { JSONBig } from '@powersync/service-jsonbig';
|
|
4
4
|
import { getIntersection, hasIntersection } from './util.js';
|
|
5
5
|
/**
|
|
@@ -13,6 +13,8 @@ export class BucketChecksumState {
|
|
|
13
13
|
/**
|
|
14
14
|
* Bucket state of bucket id -> op_id.
|
|
15
15
|
* This starts with the state from the client. May contain buckets that the user do not have access to (anymore).
|
|
16
|
+
*
|
|
17
|
+
* This is always updated in-place.
|
|
16
18
|
*/
|
|
17
19
|
bucketDataPositions = new Map();
|
|
18
20
|
/**
|
|
@@ -26,34 +28,38 @@ export class BucketChecksumState {
|
|
|
26
28
|
* partial checkpoints are sent.
|
|
27
29
|
*/
|
|
28
30
|
pendingBucketDownloads = new Set();
|
|
31
|
+
logger;
|
|
29
32
|
constructor(options) {
|
|
30
33
|
this.context = options.syncContext;
|
|
31
34
|
this.bucketStorage = options.bucketStorage;
|
|
32
|
-
this.
|
|
35
|
+
this.logger = options.logger ?? defaultLogger;
|
|
36
|
+
this.parameterState = new BucketParameterState(options.syncContext, options.bucketStorage, options.syncRules, options.syncParams, this.logger);
|
|
33
37
|
this.bucketDataPositions = new Map();
|
|
34
38
|
for (let { name, after: start } of options.initialBucketPositions ?? []) {
|
|
35
39
|
this.bucketDataPositions.set(name, { start_op_id: start });
|
|
36
40
|
}
|
|
37
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Build a new checkpoint line for an underlying storage checkpoint update if any buckets have changed.
|
|
44
|
+
*
|
|
45
|
+
* This call is idempotent - no internal state is updated directly when this is called.
|
|
46
|
+
*
|
|
47
|
+
* When the checkpoint line is sent to the client, call `CheckpointLine.advance()` to update the internal state.
|
|
48
|
+
* A line may be safely discarded (not sent to the client) if `advance()` is not called.
|
|
49
|
+
*
|
|
50
|
+
* @param next The updated checkpoint
|
|
51
|
+
* @returns A {@link CheckpointLine} if any of the buckets watched by this connected was updated, or otherwise `null`.
|
|
52
|
+
*/
|
|
38
53
|
async buildNextCheckpointLine(next) {
|
|
39
54
|
const { writeCheckpoint, base } = next;
|
|
40
|
-
const user_id = this.parameterState.syncParams.
|
|
55
|
+
const user_id = this.parameterState.syncParams.userId;
|
|
41
56
|
const storage = this.bucketStorage;
|
|
42
57
|
const update = await this.parameterState.getCheckpointUpdate(next);
|
|
43
|
-
if (update == null && this.lastWriteCheckpoint == writeCheckpoint) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
58
|
const { buckets: allBuckets, updatedBuckets } = update;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
start_op_id: this.bucketDataPositions.get(bucket.bucket)?.start_op_id ?? 0n
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
this.bucketDataPositions = dataBucketsNew;
|
|
55
|
-
if (dataBucketsNew.size > this.context.maxBuckets) {
|
|
56
|
-
throw new ServiceError(ErrorCode.PSYNC_S2305, `Too many buckets: ${dataBucketsNew.size} (limit of ${this.context.maxBuckets})`);
|
|
59
|
+
/** Set of all buckets in this checkpoint. */
|
|
60
|
+
const bucketDescriptionMap = new Map(allBuckets.map((b) => [b.bucket, b]));
|
|
61
|
+
if (bucketDescriptionMap.size > this.context.maxBuckets) {
|
|
62
|
+
throw new ServiceError(ErrorCode.PSYNC_S2305, `Too many buckets: ${bucketDescriptionMap.size} (limit of ${this.context.maxBuckets})`);
|
|
57
63
|
}
|
|
58
64
|
let checksumMap;
|
|
59
65
|
if (updatedBuckets != INVALIDATE_ALL_BUCKETS) {
|
|
@@ -63,7 +69,7 @@ export class BucketChecksumState {
|
|
|
63
69
|
// Re-check updated buckets only
|
|
64
70
|
let checksumLookups = [];
|
|
65
71
|
let newChecksums = new Map();
|
|
66
|
-
for (let bucket of
|
|
72
|
+
for (let bucket of bucketDescriptionMap.keys()) {
|
|
67
73
|
if (!updatedBuckets.has(bucket)) {
|
|
68
74
|
const existing = this.lastChecksums.get(bucket);
|
|
69
75
|
if (existing == null) {
|
|
@@ -87,12 +93,14 @@ export class BucketChecksumState {
|
|
|
87
93
|
}
|
|
88
94
|
else {
|
|
89
95
|
// Re-check all buckets
|
|
90
|
-
const bucketList = [...
|
|
96
|
+
const bucketList = [...bucketDescriptionMap.keys()];
|
|
91
97
|
checksumMap = await storage.getChecksums(base.checkpoint, bucketList);
|
|
92
98
|
}
|
|
93
99
|
// Subset of buckets for which there may be new data in this batch.
|
|
94
100
|
let bucketsToFetch;
|
|
95
101
|
let checkpointLine;
|
|
102
|
+
// Log function that is deferred until the checkpoint line is sent to the client.
|
|
103
|
+
let deferredLog;
|
|
96
104
|
if (this.lastChecksums) {
|
|
97
105
|
// TODO: If updatedBuckets is present, we can use that to more efficiently calculate a diff,
|
|
98
106
|
// and avoid any unnecessary loops through the entire list of buckets.
|
|
@@ -116,26 +124,28 @@ export class BucketChecksumState {
|
|
|
116
124
|
}
|
|
117
125
|
const updatedBucketDescriptions = diff.updatedBuckets.map((e) => ({
|
|
118
126
|
...e,
|
|
119
|
-
priority:
|
|
127
|
+
priority: bucketDescriptionMap.get(e.bucket).priority
|
|
120
128
|
}));
|
|
121
129
|
bucketsToFetch = [...generateBucketsToFetch].map((b) => {
|
|
122
130
|
return {
|
|
123
131
|
bucket: b,
|
|
124
|
-
priority:
|
|
132
|
+
priority: bucketDescriptionMap.get(b).priority
|
|
125
133
|
};
|
|
126
134
|
});
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
deferredLog = () => {
|
|
136
|
+
let message = `Updated checkpoint: ${base.checkpoint} | `;
|
|
137
|
+
message += `write: ${writeCheckpoint} | `;
|
|
138
|
+
message += `buckets: ${allBuckets.length} | `;
|
|
139
|
+
message += `updated: ${limitedBuckets(diff.updatedBuckets, 20)} | `;
|
|
140
|
+
message += `removed: ${limitedBuckets(diff.removedBuckets, 20)}`;
|
|
141
|
+
this.logger.info(message, {
|
|
142
|
+
checkpoint: base.checkpoint,
|
|
143
|
+
user_id: user_id,
|
|
144
|
+
buckets: allBuckets.length,
|
|
145
|
+
updated: diff.updatedBuckets.length,
|
|
146
|
+
removed: diff.removedBuckets.length
|
|
147
|
+
});
|
|
148
|
+
};
|
|
139
149
|
checkpointLine = {
|
|
140
150
|
checkpoint_diff: {
|
|
141
151
|
last_op_id: util.internalToExternalOpId(base.checkpoint),
|
|
@@ -146,9 +156,11 @@ export class BucketChecksumState {
|
|
|
146
156
|
};
|
|
147
157
|
}
|
|
148
158
|
else {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
159
|
+
deferredLog = () => {
|
|
160
|
+
let message = `New checkpoint: ${base.checkpoint} | write: ${writeCheckpoint} | `;
|
|
161
|
+
message += `buckets: ${allBuckets.length} ${limitedBuckets(allBuckets, 20)}`;
|
|
162
|
+
this.logger.info(message, { checkpoint: base.checkpoint, user_id: user_id, buckets: allBuckets.length });
|
|
163
|
+
};
|
|
152
164
|
bucketsToFetch = allBuckets;
|
|
153
165
|
checkpointLine = {
|
|
154
166
|
checkpoint: {
|
|
@@ -156,49 +168,83 @@ export class BucketChecksumState {
|
|
|
156
168
|
write_checkpoint: writeCheckpoint ? String(writeCheckpoint) : undefined,
|
|
157
169
|
buckets: [...checksumMap.values()].map((e) => ({
|
|
158
170
|
...e,
|
|
159
|
-
priority:
|
|
171
|
+
priority: bucketDescriptionMap.get(e.bucket).priority
|
|
160
172
|
}))
|
|
161
173
|
}
|
|
162
174
|
};
|
|
163
175
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
this.pendingBucketDownloads = new Set(bucketsToFetch.map((b) => b.bucket));
|
|
176
|
+
const pendingBucketDownloads = new Set(bucketsToFetch.map((b) => b.bucket));
|
|
177
|
+
let hasAdvanced = false;
|
|
167
178
|
return {
|
|
168
179
|
checkpointLine,
|
|
169
|
-
bucketsToFetch
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
bucketsToFetch,
|
|
181
|
+
advance: () => {
|
|
182
|
+
hasAdvanced = true;
|
|
183
|
+
// bucketDataPositions must be updated in-place - it represents the current state of
|
|
184
|
+
// the connection, not of the checkpoint line.
|
|
185
|
+
// The following could happen:
|
|
186
|
+
// 1. A = buildCheckpointLine()
|
|
187
|
+
// 2. A.advance()
|
|
188
|
+
// 3. B = buildCheckpointLine()
|
|
189
|
+
// 4. A.updateBucketPosition()
|
|
190
|
+
// 5. B.advance()
|
|
191
|
+
// In that case, it is important that the updated bucket position for A takes effect
|
|
192
|
+
// for checkpoint B.
|
|
193
|
+
let bucketsToRemove = [];
|
|
194
|
+
for (let bucket of this.bucketDataPositions.keys()) {
|
|
195
|
+
if (!bucketDescriptionMap.has(bucket)) {
|
|
196
|
+
bucketsToRemove.push(bucket);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
for (let bucket of bucketsToRemove) {
|
|
200
|
+
this.bucketDataPositions.delete(bucket);
|
|
201
|
+
}
|
|
202
|
+
for (let bucket of allBuckets) {
|
|
203
|
+
if (!this.bucketDataPositions.has(bucket.bucket)) {
|
|
204
|
+
// Bucket the client hasn't seen before - initialize with 0.
|
|
205
|
+
this.bucketDataPositions.set(bucket.bucket, { start_op_id: 0n });
|
|
206
|
+
}
|
|
207
|
+
// If the bucket position is already present, we keep the current position.
|
|
208
|
+
}
|
|
209
|
+
this.lastChecksums = checksumMap;
|
|
210
|
+
this.lastWriteCheckpoint = writeCheckpoint;
|
|
211
|
+
this.pendingBucketDownloads = pendingBucketDownloads;
|
|
212
|
+
deferredLog();
|
|
213
|
+
},
|
|
214
|
+
getFilteredBucketPositions: (buckets) => {
|
|
215
|
+
if (!hasAdvanced) {
|
|
216
|
+
throw new ServiceAssertionError('Call line.advance() before getFilteredBucketPositions()');
|
|
217
|
+
}
|
|
218
|
+
buckets ??= bucketsToFetch;
|
|
219
|
+
const filtered = new Map();
|
|
220
|
+
for (let bucket of buckets) {
|
|
221
|
+
const state = this.bucketDataPositions.get(bucket.bucket);
|
|
222
|
+
if (state) {
|
|
223
|
+
filtered.set(bucket.bucket, state.start_op_id);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return filtered;
|
|
227
|
+
},
|
|
228
|
+
updateBucketPosition: (options) => {
|
|
229
|
+
if (!hasAdvanced) {
|
|
230
|
+
throw new ServiceAssertionError('Call line.advance() before updateBucketPosition()');
|
|
231
|
+
}
|
|
232
|
+
const state = this.bucketDataPositions.get(options.bucket);
|
|
233
|
+
if (state) {
|
|
234
|
+
state.start_op_id = options.nextAfter;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// If we hit this, another checkpoint has removed the bucket in the meantime, meaning
|
|
238
|
+
// line.advance() has been called on it. In that case we don't need the bucket state anymore.
|
|
239
|
+
// It is generally not expected to happen, but we still cover the case.
|
|
240
|
+
}
|
|
241
|
+
if (!options.hasMore) {
|
|
242
|
+
// This specifically updates the per-checkpoint line. Completing a download for one line,
|
|
243
|
+
// does not remove it from the next line, since it could have new updates there.
|
|
244
|
+
pendingBucketDownloads.delete(options.bucket);
|
|
245
|
+
}
|
|
184
246
|
}
|
|
185
|
-
}
|
|
186
|
-
return filtered;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Update the position of bucket data the client has.
|
|
190
|
-
*
|
|
191
|
-
* @param bucket the bucket name
|
|
192
|
-
* @param nextAfter sync operations >= this value in the next batch
|
|
193
|
-
*/
|
|
194
|
-
updateBucketPosition(options) {
|
|
195
|
-
const state = this.bucketDataPositions.get(options.bucket);
|
|
196
|
-
if (state) {
|
|
197
|
-
state.start_op_id = options.nextAfter;
|
|
198
|
-
}
|
|
199
|
-
if (!options.hasMore) {
|
|
200
|
-
this.pendingBucketDownloads.delete(options.bucket);
|
|
201
|
-
}
|
|
247
|
+
};
|
|
202
248
|
}
|
|
203
249
|
}
|
|
204
250
|
const INVALIDATE_ALL_BUCKETS = Symbol('INVALIDATE_ALL_BUCKETS');
|
|
@@ -209,14 +255,16 @@ export class BucketParameterState {
|
|
|
209
255
|
syncParams;
|
|
210
256
|
querier;
|
|
211
257
|
staticBuckets;
|
|
258
|
+
logger;
|
|
212
259
|
cachedDynamicBuckets = null;
|
|
213
260
|
cachedDynamicBucketSet = null;
|
|
214
261
|
lookups;
|
|
215
|
-
constructor(context, bucketStorage, syncRules, syncParams) {
|
|
262
|
+
constructor(context, bucketStorage, syncRules, syncParams, logger) {
|
|
216
263
|
this.context = context;
|
|
217
264
|
this.bucketStorage = bucketStorage;
|
|
218
265
|
this.syncRules = syncRules;
|
|
219
266
|
this.syncParams = syncParams;
|
|
267
|
+
this.logger = logger;
|
|
220
268
|
this.querier = syncRules.getBucketParameterQuerier(this.syncParams);
|
|
221
269
|
this.staticBuckets = new Map(this.querier.staticBuckets.map((b) => [b.bucket, b]));
|
|
222
270
|
this.lookups = new Set(this.querier.parameterQueryLookups.map((l) => JSONBig.stringify(l.values)));
|
|
@@ -234,9 +282,9 @@ export class BucketParameterState {
|
|
|
234
282
|
// TODO: Limit number of results even before we get to this point
|
|
235
283
|
// This limit applies _before_ we get the unique set
|
|
236
284
|
const error = new ServiceError(ErrorCode.PSYNC_S2305, `Too many parameter query results: ${update.buckets.length} (limit of ${this.context.maxParameterQueryResults})`);
|
|
237
|
-
logger.error(error.message, {
|
|
285
|
+
this.logger.error(error.message, {
|
|
238
286
|
checkpoint: checkpoint,
|
|
239
|
-
user_id: this.syncParams.
|
|
287
|
+
user_id: this.syncParams.userId,
|
|
240
288
|
buckets: update.buckets.length
|
|
241
289
|
});
|
|
242
290
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketChecksumState.js","sourceRoot":"","sources":["../../src/sync/BucketChecksumState.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BucketChecksumState.js","sourceRoot":"","sources":["../../src/sync/BucketChecksumState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MetricsEngine } from '../metrics/MetricsEngine.js';
|
|
2
|
+
import { SyncBucketData } from '../util/protocol-types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Record sync stats per request stream.
|
|
4
5
|
*/
|
|
@@ -6,7 +7,27 @@ export declare class RequestTracker {
|
|
|
6
7
|
private metrics;
|
|
7
8
|
operationsSynced: number;
|
|
8
9
|
dataSyncedBytes: number;
|
|
10
|
+
operationCounts: OperationCounts;
|
|
11
|
+
largeBuckets: Record<string, number>;
|
|
9
12
|
constructor(metrics: MetricsEngine);
|
|
10
|
-
addOperationsSynced(operations:
|
|
13
|
+
addOperationsSynced(operations: OperationsSentStats): void;
|
|
11
14
|
addDataSynced(bytes: number): void;
|
|
15
|
+
getLogMeta(): {
|
|
16
|
+
operations_synced: number;
|
|
17
|
+
data_synced_bytes: number;
|
|
18
|
+
operation_counts: OperationCounts;
|
|
19
|
+
large_buckets: Record<string, number>;
|
|
20
|
+
};
|
|
12
21
|
}
|
|
22
|
+
export interface OperationCounts {
|
|
23
|
+
put: number;
|
|
24
|
+
remove: number;
|
|
25
|
+
move: number;
|
|
26
|
+
clear: number;
|
|
27
|
+
}
|
|
28
|
+
export interface OperationsSentStats {
|
|
29
|
+
bucket: string;
|
|
30
|
+
operations: OperationCounts;
|
|
31
|
+
total: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function statsForBatch(batch: SyncBucketData): OperationsSentStats;
|
|
@@ -6,17 +6,66 @@ export class RequestTracker {
|
|
|
6
6
|
metrics;
|
|
7
7
|
operationsSynced = 0;
|
|
8
8
|
dataSyncedBytes = 0;
|
|
9
|
+
operationCounts = { put: 0, remove: 0, move: 0, clear: 0 };
|
|
10
|
+
largeBuckets = {};
|
|
9
11
|
constructor(metrics) {
|
|
10
12
|
this.metrics = metrics;
|
|
11
13
|
this.metrics = metrics;
|
|
12
14
|
}
|
|
13
15
|
addOperationsSynced(operations) {
|
|
14
|
-
this.operationsSynced += operations;
|
|
15
|
-
this.
|
|
16
|
+
this.operationsSynced += operations.total;
|
|
17
|
+
this.operationCounts.put += operations.operations.put;
|
|
18
|
+
this.operationCounts.remove += operations.operations.remove;
|
|
19
|
+
this.operationCounts.move += operations.operations.move;
|
|
20
|
+
this.operationCounts.clear += operations.operations.clear;
|
|
21
|
+
if (operations.total > 100 || operations.bucket in this.largeBuckets) {
|
|
22
|
+
this.largeBuckets[operations.bucket] = (this.largeBuckets[operations.bucket] ?? 0) + operations.total;
|
|
23
|
+
}
|
|
24
|
+
this.metrics.getCounter(APIMetric.OPERATIONS_SYNCED).add(operations.total);
|
|
16
25
|
}
|
|
17
26
|
addDataSynced(bytes) {
|
|
18
27
|
this.dataSyncedBytes += bytes;
|
|
19
28
|
this.metrics.getCounter(APIMetric.DATA_SYNCED_BYTES).add(bytes);
|
|
20
29
|
}
|
|
30
|
+
getLogMeta() {
|
|
31
|
+
return {
|
|
32
|
+
operations_synced: this.operationsSynced,
|
|
33
|
+
data_synced_bytes: this.dataSyncedBytes,
|
|
34
|
+
operation_counts: this.operationCounts,
|
|
35
|
+
large_buckets: this.largeBuckets
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function statsForBatch(batch) {
|
|
40
|
+
let put = 0;
|
|
41
|
+
let remove = 0;
|
|
42
|
+
let move = 0;
|
|
43
|
+
let clear = 0;
|
|
44
|
+
for (const entry of batch.data) {
|
|
45
|
+
switch (entry.op) {
|
|
46
|
+
case 'PUT':
|
|
47
|
+
put++;
|
|
48
|
+
break;
|
|
49
|
+
case 'REMOVE':
|
|
50
|
+
remove++;
|
|
51
|
+
break;
|
|
52
|
+
case 'MOVE':
|
|
53
|
+
move++;
|
|
54
|
+
break;
|
|
55
|
+
case 'CLEAR':
|
|
56
|
+
clear++;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
bucket: batch.bucket,
|
|
62
|
+
operations: {
|
|
63
|
+
put,
|
|
64
|
+
remove,
|
|
65
|
+
move,
|
|
66
|
+
clear
|
|
67
|
+
},
|
|
68
|
+
total: put + remove + move + clear
|
|
69
|
+
};
|
|
21
70
|
}
|
|
22
71
|
//# sourceMappingURL=RequestTracker.js.map
|