@livestore/common 0.0.0-snapshot-abe9ae4963ab9d3948906a6642c39bc33295e9f6 → 0.0.0-snapshot-1e670bae5105bde781e82aa2a8ee4f2dfc2446f0
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/dist/.tsbuildinfo +1 -1
- package/dist/adapter-types.d.ts +5 -4
- package/dist/adapter-types.d.ts.map +1 -1
- package/dist/adapter-types.js.map +1 -1
- package/dist/devtools/devtools-messages-client-session.d.ts +21 -21
- package/dist/devtools/devtools-messages-common.d.ts +6 -6
- package/dist/devtools/devtools-messages-leader.d.ts +28 -28
- package/dist/devtools/index.d.ts +17 -0
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +20 -0
- package/dist/devtools/index.js.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts +3 -1
- package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
- package/dist/leader-thread/LeaderSyncProcessor.js +124 -43
- package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
- package/dist/leader-thread/apply-mutation.d.ts.map +1 -1
- package/dist/leader-thread/apply-mutation.js +8 -2
- package/dist/leader-thread/apply-mutation.js.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
- package/dist/leader-thread/make-leader-thread-layer.js +1 -0
- package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
- package/dist/leader-thread/pull-queue-set.d.ts +3 -3
- package/dist/leader-thread/pull-queue-set.d.ts.map +1 -1
- package/dist/leader-thread/pull-queue-set.js +9 -0
- package/dist/leader-thread/pull-queue-set.js.map +1 -1
- package/dist/leader-thread/shutdown-channel.d.ts +2 -5
- package/dist/leader-thread/shutdown-channel.d.ts.map +1 -1
- package/dist/leader-thread/shutdown-channel.js +2 -4
- package/dist/leader-thread/shutdown-channel.js.map +1 -1
- package/dist/leader-thread/types.d.ts +7 -2
- package/dist/leader-thread/types.d.ts.map +1 -1
- package/dist/schema/EventId.d.ts +8 -0
- package/dist/schema/EventId.d.ts.map +1 -1
- package/dist/schema/EventId.js +14 -0
- package/dist/schema/EventId.js.map +1 -1
- package/dist/schema/MutationEvent.js +1 -1
- package/dist/schema/MutationEvent.js.map +1 -1
- package/dist/schema/db-schema/dsl/field-defs.d.ts.map +1 -1
- package/dist/schema/db-schema/dsl/field-defs.js.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts +11 -1
- package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
- package/dist/sync/ClientSessionSyncProcessor.js +48 -14
- package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
- package/dist/sync/sync.d.ts +14 -9
- package/dist/sync/sync.d.ts.map +1 -1
- package/dist/sync/sync.js +7 -3
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/syncstate.d.ts +132 -21
- package/dist/sync/syncstate.d.ts.map +1 -1
- package/dist/sync/syncstate.js +129 -41
- package/dist/sync/syncstate.js.map +1 -1
- package/dist/sync/syncstate.test.js +19 -7
- package/dist/sync/syncstate.test.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/src/adapter-types.ts +5 -4
- package/src/devtools/index.ts +27 -0
- package/src/leader-thread/LeaderSyncProcessor.ts +164 -54
- package/src/leader-thread/apply-mutation.ts +17 -2
- package/src/leader-thread/make-leader-thread-layer.ts +1 -0
- package/src/leader-thread/pull-queue-set.ts +10 -1
- package/src/leader-thread/shutdown-channel.ts +2 -4
- package/src/leader-thread/types.ts +8 -2
- package/src/schema/EventId.ts +16 -0
- package/src/schema/MutationEvent.ts +1 -1
- package/src/schema/db-schema/dsl/field-defs.ts +1 -2
- package/src/sync/ClientSessionSyncProcessor.ts +78 -13
- package/src/sync/sync.ts +7 -4
- package/src/sync/syncstate.test.ts +32 -14
- package/src/sync/syncstate.ts +145 -60
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncstate.test.js","sourceRoot":"","sources":["../../src/sync/syncstate.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncstate.test.js","sourceRoot":"","sources":["../../src/sync/syncstate.test.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const liveStoreVersion: "0.3.0-dev.
|
|
1
|
+
export declare const liveStoreVersion: "0.3.0-dev.16";
|
|
2
2
|
/**
|
|
3
3
|
* This version number is incremented whenever the internal storage format changes in a breaking way.
|
|
4
4
|
* Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
|
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// TODO bring back when Expo and Playwright supports `with` imports
|
|
2
2
|
// import packageJson from '../package.json' with { type: 'json' }
|
|
3
3
|
// export const liveStoreVersion = packageJson.version
|
|
4
|
-
export const liveStoreVersion = '0.3.0-dev.
|
|
4
|
+
export const liveStoreVersion = '0.3.0-dev.16';
|
|
5
5
|
/**
|
|
6
6
|
* This version number is incremented whenever the internal storage format changes in a breaking way.
|
|
7
7
|
* Whenever this version changes, LiveStore will start with fresh database files. Old database files are not deleted.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/common",
|
|
3
|
-
"version": "0.0.0-snapshot-
|
|
3
|
+
"version": "0.0.0-snapshot-1e670bae5105bde781e82aa2a8ee4f2dfc2446f0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"graphology": "0.26.0-alpha1",
|
|
55
55
|
"graphology-dag": "0.4.1",
|
|
56
56
|
"graphology-types": "0.24.8",
|
|
57
|
-
"@livestore/utils": "0.0.0-snapshot-
|
|
57
|
+
"@livestore/utils": "0.0.0-snapshot-1e670bae5105bde781e82aa2a8ee4f2dfc2446f0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"vitest": "^2.1.4"
|
package/src/adapter-types.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Effect, Schema, Stream } from '@livestore/utils/effect'
|
|
|
3
3
|
|
|
4
4
|
import type * as Devtools from './devtools/index.js'
|
|
5
5
|
import type { EventId, LiveStoreSchema, MutationEvent } from './schema/mod.js'
|
|
6
|
-
import type {
|
|
6
|
+
import type { LeaderAheadError } from './sync/sync.js'
|
|
7
7
|
import type { PayloadUpstream, SyncState } from './sync/syncstate.js'
|
|
8
8
|
import type { PreparedBindValues } from './util.js'
|
|
9
9
|
|
|
@@ -33,7 +33,7 @@ export interface ClientSession {
|
|
|
33
33
|
sessionId: string
|
|
34
34
|
/** Status info whether current session is leader or not */
|
|
35
35
|
lockStatus: SubscriptionRef.SubscriptionRef<LockStatus>
|
|
36
|
-
shutdown: (cause: Cause.Cause<UnexpectedError | IntentionalShutdownCause>) =>
|
|
36
|
+
shutdown: (cause: Cause.Cause<UnexpectedError | IntentionalShutdownCause>) => void
|
|
37
37
|
/** A proxy API to communicate with the leader thread */
|
|
38
38
|
leaderThread: ClientSessionLeaderThreadProxy
|
|
39
39
|
}
|
|
@@ -41,7 +41,8 @@ export interface ClientSession {
|
|
|
41
41
|
export interface ClientSessionLeaderThreadProxy {
|
|
42
42
|
mutations: {
|
|
43
43
|
pull: Stream.Stream<{ payload: PayloadUpstream; remaining: number }, UnexpectedError>
|
|
44
|
-
|
|
44
|
+
/** It's important that a client session doesn't call `push` concurrently. */
|
|
45
|
+
push(batch: ReadonlyArray<MutationEvent.AnyEncoded>): Effect.Effect<void, UnexpectedError | LeaderAheadError>
|
|
45
46
|
}
|
|
46
47
|
/** The initial state after the leader thread has booted */
|
|
47
48
|
readonly initialState: {
|
|
@@ -230,7 +231,7 @@ export type Adapter = (opts: {
|
|
|
230
231
|
devtoolsEnabled: boolean
|
|
231
232
|
debugInstanceId: string
|
|
232
233
|
bootStatusQueue: Queue.Queue<BootStatus>
|
|
233
|
-
shutdown: (cause: Cause.Cause<any>) =>
|
|
234
|
+
shutdown: (cause: Cause.Cause<any>) => void
|
|
234
235
|
connectDevtoolsToStore: ConnectDevtoolsToStore
|
|
235
236
|
}) => Effect.Effect<ClientSession, UnexpectedError, Scope.Scope>
|
|
236
237
|
|
package/src/devtools/index.ts
CHANGED
|
@@ -46,3 +46,30 @@ export namespace WebBridge {
|
|
|
46
46
|
schema: All,
|
|
47
47
|
})
|
|
48
48
|
}
|
|
49
|
+
|
|
50
|
+
export const DevtoolsMode = Schema.Union(
|
|
51
|
+
Schema.TaggedStruct('from-search-params', {}),
|
|
52
|
+
// TODO add storeId, clientId and sessionId for Expo
|
|
53
|
+
Schema.TaggedStruct('expo', {
|
|
54
|
+
storeId: Schema.String,
|
|
55
|
+
}),
|
|
56
|
+
// TODO add storeId, clientId and sessionId for Node
|
|
57
|
+
Schema.TaggedStruct('node', {
|
|
58
|
+
storeId: Schema.String,
|
|
59
|
+
clientId: Schema.String,
|
|
60
|
+
sessionId: Schema.String,
|
|
61
|
+
url: Schema.String,
|
|
62
|
+
}),
|
|
63
|
+
Schema.TaggedStruct('web', {
|
|
64
|
+
storeId: Schema.String,
|
|
65
|
+
clientId: Schema.String,
|
|
66
|
+
sessionId: Schema.String,
|
|
67
|
+
}),
|
|
68
|
+
Schema.TaggedStruct('browser-extension', {
|
|
69
|
+
storeId: Schema.String,
|
|
70
|
+
clientId: Schema.String,
|
|
71
|
+
sessionId: Schema.String,
|
|
72
|
+
}),
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
export type DevtoolsMode = typeof DevtoolsMode.Type
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNotUndefined, LS_DEV, shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils'
|
|
1
|
+
import { casesHandled, isNotUndefined, LS_DEV, shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils'
|
|
2
2
|
import type { HttpClient, Scope, Tracer } from '@livestore/utils/effect'
|
|
3
3
|
import {
|
|
4
4
|
BucketQueue,
|
|
@@ -18,6 +18,7 @@ import type * as otel from '@opentelemetry/api'
|
|
|
18
18
|
|
|
19
19
|
import type { SqliteDb } from '../adapter-types.js'
|
|
20
20
|
import { UnexpectedError } from '../adapter-types.js'
|
|
21
|
+
import { clientId } from '../devtools/devtools-messages-common.js'
|
|
21
22
|
import type { LiveStoreSchema, SessionChangesetMetaRow } from '../schema/mod.js'
|
|
22
23
|
import {
|
|
23
24
|
EventId,
|
|
@@ -27,7 +28,7 @@ import {
|
|
|
27
28
|
SESSION_CHANGESET_META_TABLE,
|
|
28
29
|
} from '../schema/mod.js'
|
|
29
30
|
import { updateRows } from '../sql-queries/index.js'
|
|
30
|
-
import { InvalidPushError } from '../sync/sync.js'
|
|
31
|
+
import { InvalidPushError, LeaderAheadError } from '../sync/sync.js'
|
|
31
32
|
import * as SyncState from '../sync/syncstate.js'
|
|
32
33
|
import { sql } from '../util.js'
|
|
33
34
|
import { makeApplyMutation } from './apply-mutation.js'
|
|
@@ -36,9 +37,12 @@ import { getBackendHeadFromDb, getClientHeadFromDb, getMutationEventsSince, upda
|
|
|
36
37
|
import type { InitialBlockingSyncContext, InitialSyncInfo, LeaderSyncProcessor } from './types.js'
|
|
37
38
|
import { LeaderThreadCtx } from './types.js'
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
export const BACKEND_PUSH_BATCH_SIZE = 50
|
|
41
|
+
|
|
42
|
+
type LocalPushQueueItem = [
|
|
40
43
|
mutationEvent: MutationEvent.EncodedWithMeta,
|
|
41
|
-
deferred: Deferred.Deferred<void,
|
|
44
|
+
deferred: Deferred.Deferred<void, LeaderAheadError> | undefined,
|
|
45
|
+
generation: number,
|
|
42
46
|
]
|
|
43
47
|
|
|
44
48
|
/**
|
|
@@ -68,12 +72,14 @@ export const makeLeaderSyncProcessor = ({
|
|
|
68
72
|
schema,
|
|
69
73
|
dbMissing,
|
|
70
74
|
dbMutationLog,
|
|
75
|
+
clientId,
|
|
71
76
|
initialBlockingSyncContext,
|
|
72
77
|
}: {
|
|
73
78
|
schema: LiveStoreSchema
|
|
74
79
|
/** Only used to know whether we can safely query dbMutationLog during setup execution */
|
|
75
80
|
dbMissing: boolean
|
|
76
81
|
dbMutationLog: SqliteDb
|
|
82
|
+
clientId: string
|
|
77
83
|
initialBlockingSyncContext: InitialBlockingSyncContext
|
|
78
84
|
}): Effect.Effect<LeaderSyncProcessor, UnexpectedError, Scope.Scope> =>
|
|
79
85
|
Effect.gen(function* () {
|
|
@@ -86,6 +92,13 @@ export const makeLeaderSyncProcessor = ({
|
|
|
86
92
|
return mutationDef.options.clientOnly
|
|
87
93
|
}
|
|
88
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Tracks generations of queued local push events.
|
|
97
|
+
* If a batch is rejected, all subsequent push queue items with the same generation are also rejected,
|
|
98
|
+
* even if they would be valid on their own.
|
|
99
|
+
*/
|
|
100
|
+
const currentLocalPushGenerationRef = { current: 0 }
|
|
101
|
+
|
|
89
102
|
// This context depends on data from `boot`, we should find a better implementation to avoid this ref indirection.
|
|
90
103
|
const ctxRef = {
|
|
91
104
|
current: undefined as
|
|
@@ -97,7 +110,7 @@ export const makeLeaderSyncProcessor = ({
|
|
|
97
110
|
},
|
|
98
111
|
}
|
|
99
112
|
|
|
100
|
-
const localPushesQueue = yield* BucketQueue.make<
|
|
113
|
+
const localPushesQueue = yield* BucketQueue.make<LocalPushQueueItem>()
|
|
101
114
|
const localPushesLatch = yield* Effect.makeLatch(true)
|
|
102
115
|
const pullLatch = yield* Effect.makeLatch(true)
|
|
103
116
|
|
|
@@ -106,20 +119,36 @@ export const makeLeaderSyncProcessor = ({
|
|
|
106
119
|
// TODO validate batch
|
|
107
120
|
if (newEvents.length === 0) return
|
|
108
121
|
|
|
122
|
+
// if (options.generation < currentLocalPushGenerationRef.current) {
|
|
123
|
+
// debugger
|
|
124
|
+
// // We can safely drop this batch as it's from a previous push generation
|
|
125
|
+
// return
|
|
126
|
+
// }
|
|
127
|
+
|
|
128
|
+
if (clientId === 'client-b') {
|
|
129
|
+
// console.log(
|
|
130
|
+
// 'push from client session',
|
|
131
|
+
// newEvents.map((item) => item.toJSON()),
|
|
132
|
+
// )
|
|
133
|
+
}
|
|
134
|
+
|
|
109
135
|
const waitForProcessing = options?.waitForProcessing ?? false
|
|
136
|
+
const generation = currentLocalPushGenerationRef.current
|
|
110
137
|
|
|
111
138
|
if (waitForProcessing) {
|
|
112
|
-
const deferreds = yield* Effect.forEach(newEvents, () => Deferred.make<void,
|
|
139
|
+
const deferreds = yield* Effect.forEach(newEvents, () => Deferred.make<void, LeaderAheadError>())
|
|
113
140
|
|
|
114
141
|
const items = newEvents.map(
|
|
115
|
-
(mutationEventEncoded, i) => [mutationEventEncoded, deferreds[i]] as
|
|
142
|
+
(mutationEventEncoded, i) => [mutationEventEncoded, deferreds[i], generation] as LocalPushQueueItem,
|
|
116
143
|
)
|
|
117
144
|
|
|
118
145
|
yield* BucketQueue.offerAll(localPushesQueue, items)
|
|
119
146
|
|
|
120
147
|
yield* Effect.all(deferreds)
|
|
121
148
|
} else {
|
|
122
|
-
const items = newEvents.map(
|
|
149
|
+
const items = newEvents.map(
|
|
150
|
+
(mutationEventEncoded) => [mutationEventEncoded, undefined, generation] as LocalPushQueueItem,
|
|
151
|
+
)
|
|
123
152
|
yield* BucketQueue.offerAll(localPushesQueue, items)
|
|
124
153
|
}
|
|
125
154
|
}).pipe(
|
|
@@ -153,14 +182,14 @@ export const makeLeaderSyncProcessor = ({
|
|
|
153
182
|
})
|
|
154
183
|
|
|
155
184
|
yield* push([mutationEventEncoded])
|
|
156
|
-
}).pipe(Effect.catchTag('
|
|
185
|
+
}).pipe(Effect.catchTag('LeaderAheadError', Effect.orDie))
|
|
157
186
|
|
|
158
187
|
// Starts various background loops
|
|
159
188
|
const boot: LeaderSyncProcessor['boot'] = ({ dbReady }) =>
|
|
160
189
|
Effect.gen(function* () {
|
|
161
190
|
const span = yield* Effect.currentSpan.pipe(Effect.orDie)
|
|
162
191
|
const otelSpan = yield* OtelTracer.currentOtelSpan.pipe(Effect.catchAll(() => Effect.succeed(undefined)))
|
|
163
|
-
const { devtools } = yield* LeaderThreadCtx
|
|
192
|
+
const { devtools, shutdownChannel } = yield* LeaderThreadCtx
|
|
164
193
|
|
|
165
194
|
ctxRef.current = {
|
|
166
195
|
otelSpan,
|
|
@@ -205,6 +234,12 @@ export const makeLeaderSyncProcessor = ({
|
|
|
205
234
|
yield* BucketQueue.offerAll(syncBackendQueue, filteredBatch)
|
|
206
235
|
}
|
|
207
236
|
|
|
237
|
+
const shutdownOnError = (cause: unknown) =>
|
|
238
|
+
Effect.gen(function* () {
|
|
239
|
+
yield* shutdownChannel.send(UnexpectedError.make({ cause }))
|
|
240
|
+
yield* Effect.die(cause)
|
|
241
|
+
})
|
|
242
|
+
|
|
208
243
|
yield* backgroundApplyLocalPushes({
|
|
209
244
|
localPushesLatch,
|
|
210
245
|
localPushesQueue,
|
|
@@ -214,7 +249,8 @@ export const makeLeaderSyncProcessor = ({
|
|
|
214
249
|
schema,
|
|
215
250
|
isLocalEvent,
|
|
216
251
|
otelSpan,
|
|
217
|
-
|
|
252
|
+
currentLocalPushGenerationRef,
|
|
253
|
+
}).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(shutdownOnError), Effect.forkScoped)
|
|
218
254
|
|
|
219
255
|
const backendPushingFiberHandle = yield* FiberHandle.make()
|
|
220
256
|
|
|
@@ -225,7 +261,7 @@ export const makeLeaderSyncProcessor = ({
|
|
|
225
261
|
syncBackendQueue,
|
|
226
262
|
otelSpan,
|
|
227
263
|
devtoolsLatch: ctxRef.current?.devtoolsLatch,
|
|
228
|
-
}).pipe(Effect.tapCauseLogPretty),
|
|
264
|
+
}).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(shutdownOnError)),
|
|
229
265
|
)
|
|
230
266
|
|
|
231
267
|
yield* backgroundBackendPulling({
|
|
@@ -249,7 +285,7 @@ export const makeLeaderSyncProcessor = ({
|
|
|
249
285
|
syncBackendQueue,
|
|
250
286
|
otelSpan,
|
|
251
287
|
devtoolsLatch: ctxRef.current?.devtoolsLatch,
|
|
252
|
-
}).pipe(Effect.tapCauseLogPretty),
|
|
288
|
+
}).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(shutdownOnError)),
|
|
253
289
|
)
|
|
254
290
|
}),
|
|
255
291
|
syncStateSref,
|
|
@@ -258,7 +294,7 @@ export const makeLeaderSyncProcessor = ({
|
|
|
258
294
|
otelSpan,
|
|
259
295
|
initialBlockingSyncContext,
|
|
260
296
|
devtoolsLatch: ctxRef.current?.devtoolsLatch,
|
|
261
|
-
}).pipe(Effect.tapCauseLogPretty, Effect.forkScoped)
|
|
297
|
+
}).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(shutdownOnError), Effect.forkScoped)
|
|
262
298
|
|
|
263
299
|
return { initialLeaderHead: initialLocalHead }
|
|
264
300
|
}).pipe(Effect.withSpanScoped('@livestore/common:leader-thread:syncing'))
|
|
@@ -287,32 +323,48 @@ const backgroundApplyLocalPushes = ({
|
|
|
287
323
|
schema,
|
|
288
324
|
isLocalEvent,
|
|
289
325
|
otelSpan,
|
|
326
|
+
currentLocalPushGenerationRef,
|
|
290
327
|
}: {
|
|
291
328
|
pullLatch: Effect.Latch
|
|
292
329
|
localPushesLatch: Effect.Latch
|
|
293
|
-
localPushesQueue: BucketQueue.BucketQueue<
|
|
330
|
+
localPushesQueue: BucketQueue.BucketQueue<LocalPushQueueItem>
|
|
294
331
|
syncStateSref: SubscriptionRef.SubscriptionRef<SyncState.SyncState | undefined>
|
|
295
332
|
syncBackendQueue: BucketQueue.BucketQueue<MutationEvent.EncodedWithMeta>
|
|
296
333
|
schema: LiveStoreSchema
|
|
297
334
|
isLocalEvent: (mutationEventEncoded: MutationEvent.EncodedWithMeta) => boolean
|
|
298
335
|
otelSpan: otel.Span | undefined
|
|
336
|
+
currentLocalPushGenerationRef: { current: number }
|
|
299
337
|
}) =>
|
|
300
338
|
Effect.gen(function* () {
|
|
301
|
-
const { connectedClientSessionPullQueues } = yield* LeaderThreadCtx
|
|
339
|
+
const { connectedClientSessionPullQueues, clientId } = yield* LeaderThreadCtx
|
|
302
340
|
|
|
303
341
|
const applyMutationItems = yield* makeApplyMutationItems
|
|
304
342
|
|
|
305
343
|
while (true) {
|
|
306
344
|
// TODO make batch size configurable
|
|
307
345
|
const batchItems = yield* BucketQueue.takeBetween(localPushesQueue, 1, 10)
|
|
308
|
-
const [newEvents, deferreds] = ReadonlyArray.unzip(batchItems)
|
|
309
346
|
|
|
310
347
|
// Wait for the backend pulling to finish
|
|
311
348
|
yield* localPushesLatch.await
|
|
312
349
|
|
|
313
|
-
// Prevent
|
|
350
|
+
// Prevent backend pull processing until this local push is finished
|
|
314
351
|
yield* pullLatch.close
|
|
315
352
|
|
|
353
|
+
// Since the generation might have changed since enqueuing, we need to filter out items with older generation
|
|
354
|
+
// It's important that we filter after we got localPushesLatch, otherwise we might filter with the old generation
|
|
355
|
+
const filteredBatchItems = batchItems
|
|
356
|
+
.filter(([_1, _2, generation]) => generation === currentLocalPushGenerationRef.current)
|
|
357
|
+
.map(([mutationEventEncoded, deferred]) => [mutationEventEncoded, deferred] as const)
|
|
358
|
+
|
|
359
|
+
if (filteredBatchItems.length === 0) {
|
|
360
|
+
// console.log('dropping old-gen batch', currentLocalPushGenerationRef.current)
|
|
361
|
+
// Allow the backend pulling to start
|
|
362
|
+
yield* pullLatch.open
|
|
363
|
+
continue
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
const [newEvents, deferreds] = ReadonlyArray.unzip(filteredBatchItems)
|
|
367
|
+
|
|
316
368
|
const syncState = yield* syncStateSref
|
|
317
369
|
if (syncState === undefined) return shouldNeverHappen('Not initialized')
|
|
318
370
|
|
|
@@ -323,42 +375,82 @@ const backgroundApplyLocalPushes = ({
|
|
|
323
375
|
isEqualEvent: MutationEvent.isEqualEncoded,
|
|
324
376
|
})
|
|
325
377
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
378
|
+
switch (updateResult._tag) {
|
|
379
|
+
case 'unexpected-error': {
|
|
380
|
+
otelSpan?.addEvent('local-push:unexpected-error', {
|
|
381
|
+
batchSize: newEvents.length,
|
|
382
|
+
newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
|
|
383
|
+
})
|
|
384
|
+
return yield* Effect.fail(updateResult.cause)
|
|
385
|
+
}
|
|
386
|
+
case 'rebase': {
|
|
387
|
+
return shouldNeverHappen('The leader thread should never have to rebase due to a local push')
|
|
388
|
+
}
|
|
389
|
+
case 'reject': {
|
|
390
|
+
otelSpan?.addEvent('local-push:reject', {
|
|
391
|
+
batchSize: newEvents.length,
|
|
392
|
+
updateResult: TRACE_VERBOSE ? JSON.stringify(updateResult) : undefined,
|
|
393
|
+
})
|
|
394
|
+
|
|
395
|
+
/*
|
|
396
|
+
|
|
397
|
+
TODO: how to test this?
|
|
398
|
+
*/
|
|
399
|
+
currentLocalPushGenerationRef.current++
|
|
400
|
+
|
|
401
|
+
const nextGeneration = currentLocalPushGenerationRef.current
|
|
333
402
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
403
|
+
const providedId = newEvents.at(0)!.id
|
|
404
|
+
// All subsequent pushes with same generation should be rejected as well
|
|
405
|
+
// We're also handling the case where the localPushQueue already contains events
|
|
406
|
+
// from the next generation which we preserve in the queue
|
|
407
|
+
const remainingEventsMatchingGeneration = yield* BucketQueue.takeSplitWhere(
|
|
408
|
+
localPushesQueue,
|
|
409
|
+
(item) => item[2] >= nextGeneration,
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
if ((yield* BucketQueue.size(localPushesQueue)) > 0) {
|
|
413
|
+
console.log('localPushesQueue is not empty', yield* BucketQueue.size(localPushesQueue))
|
|
414
|
+
debugger
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
const allDeferredsToReject = [
|
|
418
|
+
...deferreds,
|
|
419
|
+
...remainingEventsMatchingGeneration.map(([_, deferred]) => deferred),
|
|
420
|
+
].filter(isNotUndefined)
|
|
421
|
+
|
|
422
|
+
yield* Effect.forEach(allDeferredsToReject, (deferred) =>
|
|
423
|
+
Deferred.fail(
|
|
424
|
+
deferred,
|
|
425
|
+
LeaderAheadError.make({
|
|
345
426
|
minimumExpectedId: updateResult.expectedMinimumId,
|
|
346
427
|
providedId,
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
428
|
+
// nextGeneration,
|
|
429
|
+
}),
|
|
430
|
+
),
|
|
431
|
+
)
|
|
351
432
|
|
|
352
|
-
|
|
353
|
-
|
|
433
|
+
// Allow the backend pulling to start
|
|
434
|
+
yield* pullLatch.open
|
|
354
435
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
436
|
+
// In this case we're skipping state update and down/upstream processing
|
|
437
|
+
// We've cleared the local push queue and are now waiting for new local pushes / backend pulls
|
|
438
|
+
continue
|
|
439
|
+
}
|
|
440
|
+
case 'advance': {
|
|
441
|
+
break
|
|
442
|
+
}
|
|
443
|
+
default: {
|
|
444
|
+
casesHandled(updateResult)
|
|
445
|
+
}
|
|
358
446
|
}
|
|
359
447
|
|
|
360
448
|
yield* SubscriptionRef.set(syncStateSref, updateResult.newSyncState)
|
|
361
449
|
|
|
450
|
+
if (clientId === 'client-b') {
|
|
451
|
+
// yield* Effect.log('offer upstream-advance due to local-push')
|
|
452
|
+
// debugger
|
|
453
|
+
}
|
|
362
454
|
yield* connectedClientSessionPullQueues.offer({
|
|
363
455
|
payload: { _tag: 'upstream-advance', newEvents: updateResult.newEvents },
|
|
364
456
|
remaining: 0,
|
|
@@ -387,7 +479,7 @@ const backgroundApplyLocalPushes = ({
|
|
|
387
479
|
type ApplyMutationItems = (_: {
|
|
388
480
|
batchItems: ReadonlyArray<MutationEvent.EncodedWithMeta>
|
|
389
481
|
/** Indexes are aligned with `batchItems` */
|
|
390
|
-
deferreds: ReadonlyArray<Deferred.Deferred<void,
|
|
482
|
+
deferreds: ReadonlyArray<Deferred.Deferred<void, LeaderAheadError> | undefined> | undefined
|
|
391
483
|
}) => Effect.Effect<void, UnexpectedError>
|
|
392
484
|
|
|
393
485
|
// TODO how to handle errors gracefully
|
|
@@ -466,6 +558,7 @@ const backgroundBackendPulling = ({
|
|
|
466
558
|
dbMutationLog,
|
|
467
559
|
connectedClientSessionPullQueues,
|
|
468
560
|
schema,
|
|
561
|
+
clientId,
|
|
469
562
|
} = yield* LeaderThreadCtx
|
|
470
563
|
|
|
471
564
|
if (syncBackend === undefined) return
|
|
@@ -503,6 +596,12 @@ const backgroundBackendPulling = ({
|
|
|
503
596
|
|
|
504
597
|
if (updateResult._tag === 'reject') {
|
|
505
598
|
return shouldNeverHappen('The leader thread should never reject upstream advances')
|
|
599
|
+
} else if (updateResult._tag === 'unexpected-error') {
|
|
600
|
+
otelSpan?.addEvent('backend-pull:unexpected-error', {
|
|
601
|
+
newEventsCount: newEvents.length,
|
|
602
|
+
newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
|
|
603
|
+
})
|
|
604
|
+
return yield* Effect.fail(updateResult.cause)
|
|
506
605
|
}
|
|
507
606
|
|
|
508
607
|
const newBackendHead = newEvents.at(-1)!.id
|
|
@@ -542,6 +641,9 @@ const backgroundBackendPulling = ({
|
|
|
542
641
|
updateResult: TRACE_VERBOSE ? JSON.stringify(updateResult) : undefined,
|
|
543
642
|
})
|
|
544
643
|
|
|
644
|
+
if (clientId === 'client-b') {
|
|
645
|
+
// yield* Effect.log('offer upstream-advance due to pull')
|
|
646
|
+
}
|
|
545
647
|
yield* connectedClientSessionPullQueues.offer({
|
|
546
648
|
payload: { _tag: 'upstream-advance', newEvents: updateResult.newEvents, trimRollbackUntil },
|
|
547
649
|
remaining,
|
|
@@ -617,15 +719,23 @@ const rollback = ({
|
|
|
617
719
|
}
|
|
618
720
|
}
|
|
619
721
|
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
sql`DELETE FROM ${SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`).join(', ')})`,
|
|
722
|
+
const eventIdPairChunks = ReadonlyArray.chunksOf(100)(
|
|
723
|
+
eventIdsToRollback.map((id) => `(${id.global}, ${id.client})`),
|
|
623
724
|
)
|
|
624
725
|
|
|
726
|
+
// Delete the changeset rows
|
|
727
|
+
for (const eventIdPairChunk of eventIdPairChunks) {
|
|
728
|
+
db.execute(
|
|
729
|
+
sql`DELETE FROM ${SESSION_CHANGESET_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`,
|
|
730
|
+
)
|
|
731
|
+
}
|
|
732
|
+
|
|
625
733
|
// Delete the mutation log rows
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
734
|
+
for (const eventIdPairChunk of eventIdPairChunks) {
|
|
735
|
+
dbMutationLog.execute(
|
|
736
|
+
sql`DELETE FROM ${MUTATION_LOG_META_TABLE} WHERE (idGlobal, idClient) IN (${eventIdPairChunk.join(', ')})`,
|
|
737
|
+
)
|
|
738
|
+
}
|
|
629
739
|
}).pipe(
|
|
630
740
|
Effect.withSpan('@livestore/common:leader-thread:syncing:rollback', {
|
|
631
741
|
attributes: { count: eventIdsToRollback.length },
|
|
@@ -675,7 +785,7 @@ const backgroundBackendPushing = ({
|
|
|
675
785
|
yield* SubscriptionRef.waitUntil(syncBackend.isConnected, (isConnected) => isConnected === true)
|
|
676
786
|
|
|
677
787
|
// TODO make batch size configurable
|
|
678
|
-
const queueItems = yield* BucketQueue.takeBetween(syncBackendQueue, 1,
|
|
788
|
+
const queueItems = yield* BucketQueue.takeBetween(syncBackendQueue, 1, BACKEND_PUSH_BATCH_SIZE)
|
|
679
789
|
|
|
680
790
|
yield* SubscriptionRef.waitUntil(syncBackend.isConnected, (isConnected) => isConnected === true)
|
|
681
791
|
|
|
@@ -693,7 +803,7 @@ const backgroundBackendPushing = ({
|
|
|
693
803
|
|
|
694
804
|
if (pushResult._tag === 'Left') {
|
|
695
805
|
if (LS_DEV) {
|
|
696
|
-
yield* Effect.logDebug('backend-push-error', { error: pushResult.left.toString() })
|
|
806
|
+
yield* Effect.logDebug('handled backend-push-error', { error: pushResult.left.toString() })
|
|
697
807
|
}
|
|
698
808
|
otelSpan?.addEvent('backend-push-error', { error: pushResult.left.toString() })
|
|
699
809
|
// wait for interrupt caused by background pulling which will then restart pushing
|