@fireproof/core-test 0.23.7-dev-preview2 → 0.23.7
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/README.md
CHANGED
|
@@ -202,7 +202,7 @@ pnpm run test -t 'test name pattern' path/to/test/file
|
|
|
202
202
|
For example, to run a specific test for the CRDT module, in just one project:
|
|
203
203
|
|
|
204
204
|
```bash
|
|
205
|
-
FP_DEBUG=Loader pnpm run test --project file -t 'codec implict iv' crdt
|
|
205
|
+
FP_DEBUG='Loader,CRDTClock' pnpm run test --project file -t 'codec implict iv' crdt
|
|
206
206
|
```
|
|
207
207
|
|
|
208
208
|
For testing React components, you can use:
|
|
@@ -2,7 +2,7 @@ import { AppContext, BuildURI } from "@adviser/cement";
|
|
|
2
2
|
import { fireproof, PARAM } from "@fireproof/core";
|
|
3
3
|
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
4
4
|
import { ensureSuperThis, sleep } from "@fireproof/core-runtime";
|
|
5
|
-
const ROWS =
|
|
5
|
+
const ROWS = 2;
|
|
6
6
|
class AJoinable {
|
|
7
7
|
name;
|
|
8
8
|
db;
|
|
@@ -85,9 +85,8 @@ async function readDb(name, base) {
|
|
|
85
85
|
return rows.rows.sort((a, b) => a.key.localeCompare(b.key));
|
|
86
86
|
}
|
|
87
87
|
async function writeRow(pdb, style) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
.map(async (_, i) => {
|
|
88
|
+
const keys = [];
|
|
89
|
+
for (let i = 0; i < ROWS; i++) {
|
|
91
90
|
const key = `${pdb.dbId}-${pdb.db.name}-${style}-${i}`;
|
|
92
91
|
await pdb.db.put({
|
|
93
92
|
_id: key,
|
|
@@ -95,8 +94,9 @@ async function writeRow(pdb, style) {
|
|
|
95
94
|
type: "test-document",
|
|
96
95
|
description: `Test document for ${style}`,
|
|
97
96
|
});
|
|
98
|
-
|
|
99
|
-
}
|
|
97
|
+
keys.push(key);
|
|
98
|
+
}
|
|
99
|
+
return keys;
|
|
100
100
|
}
|
|
101
101
|
describe("Remote Sync Subscription Tests", () => {
|
|
102
102
|
const sthis = ensureSuperThis();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachable-subscription.test.js","sourceRoot":"","sources":["../../jsr/fireproof/attachable-subscription.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attachable-subscription.test.js","sourceRoot":"","sources":["../../jsr/fireproof/attachable-subscription.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
# ApplyHead Call Path Challenge - Remote Sync Subscription Bug
|
|
2
|
+
|
|
3
|
+
## The Core Problem
|
|
4
|
+
|
|
5
|
+
React components using `useLiveQuery` don't update when remote changes sync via `toCloud()`. The subscription system works for local writes but fails for remote sync operations.
|
|
6
|
+
|
|
7
|
+
## Key Insight: Two ApplyHead Call Paths
|
|
8
|
+
|
|
9
|
+
The `applyHead()` method in `crdt-clock.ts` is called from **two different paths** in `crdt.ts`:
|
|
10
|
+
|
|
11
|
+
### Path 1: Local Writes (WORKING ✅)
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
User calls db.put()
|
|
15
|
+
→ writeQueue.push()
|
|
16
|
+
→ crdt.bulk()
|
|
17
|
+
→ clock.applyHead(newHead, prevHead, localUpdates=TRUE)
|
|
18
|
+
→ notifyWatchers()
|
|
19
|
+
→ subscriptions fire
|
|
20
|
+
→ React components update
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Path 2: Remote Sync (BROKEN ❌)
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Remote data arrives
|
|
27
|
+
→ applyMeta()
|
|
28
|
+
→ clock.applyHead(newHead, prevHead, localUpdates=FALSE)
|
|
29
|
+
→ ??? (subscriptions don't fire)
|
|
30
|
+
→ React components don't update
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## The Hypothesis
|
|
34
|
+
|
|
35
|
+
**The subscription system is only working for the `bulk()` path, not the `applyMeta()` path.**
|
|
36
|
+
|
|
37
|
+
This would explain:
|
|
38
|
+
|
|
39
|
+
- ✅ Local writes trigger subscriptions (via `bulk()`)
|
|
40
|
+
- ❌ Remote sync data doesn't trigger subscriptions (via `applyMeta()`)
|
|
41
|
+
- ❌ React components using `useLiveQuery` don't update on remote changes
|
|
42
|
+
|
|
43
|
+
## Current Subscription Fix Attempt
|
|
44
|
+
|
|
45
|
+
We've added manual subscription triggering in `crdt-clock.ts`:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
// In int_applyHead()
|
|
49
|
+
const needsManualNotification = !localUpdates && (this.watchers.size > 0 || this.noPayloadWatchers.size > 0);
|
|
50
|
+
|
|
51
|
+
if (needsManualNotification) {
|
|
52
|
+
const changes = await clockChangesSince<DocTypes>(this.blockstore, advancedHead, prevHead, {}, this.logger);
|
|
53
|
+
if (changes.result.length > 0) {
|
|
54
|
+
this.notifyWatchers(changes.result);
|
|
55
|
+
} else {
|
|
56
|
+
this.noPayloadWatchers.forEach((fn) => fn());
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
However, this fix assumes that:
|
|
62
|
+
|
|
63
|
+
1. The `applyMeta()` path is reaching `int_applyHead()`
|
|
64
|
+
2. The `localUpdates=FALSE` parameter is being set correctly
|
|
65
|
+
3. The manual notification logic is executing
|
|
66
|
+
|
|
67
|
+
## Investigation Needed
|
|
68
|
+
|
|
69
|
+
We need to add logging to trace the execution flow:
|
|
70
|
+
|
|
71
|
+
### 1. Log Both Call Sites in `crdt.ts`
|
|
72
|
+
|
|
73
|
+
**In `bulk()` method:**
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
console.log("🔵 BULK: Calling applyHead for LOCAL write", {
|
|
77
|
+
localUpdates: true,
|
|
78
|
+
newHead: newHead.map((h) => h.toString()),
|
|
79
|
+
subscribers: this.clock.watchers.size + this.clock.noPayloadWatchers.size,
|
|
80
|
+
});
|
|
81
|
+
await this.clock.applyHead(newHead, prevHead, updates);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**In `applyMeta()` method:**
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
console.log("🔴 APPLY_META: Calling applyHead for REMOTE sync", {
|
|
88
|
+
localUpdates: false,
|
|
89
|
+
newHead: newHead.map((h) => h.toString()),
|
|
90
|
+
subscribers: this.clock.watchers.size + this.clock.noPayloadWatchers.size,
|
|
91
|
+
});
|
|
92
|
+
await this.clock.applyHead(newHead, prevHead, false);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 2. Log Entry Point in `crdt-clock.ts`
|
|
96
|
+
|
|
97
|
+
**In `int_applyHead()` method:**
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
console.log("⚡ INT_APPLY_HEAD: Entry point", {
|
|
101
|
+
localUpdates,
|
|
102
|
+
watchersCount: this.watchers.size,
|
|
103
|
+
noPayloadWatchersCount: this.noPayloadWatchers.size,
|
|
104
|
+
needsManualNotification: !localUpdates && (this.watchers.size > 0 || this.noPayloadWatchers.size > 0),
|
|
105
|
+
});
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 3. Log Notification Calls
|
|
109
|
+
|
|
110
|
+
**In `notifyWatchers()` method:**
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
console.log("🔔 NOTIFY_WATCHERS: Triggering subscriptions", {
|
|
114
|
+
updatesCount: updates.length,
|
|
115
|
+
watchersCount: this.watchers.size,
|
|
116
|
+
noPayloadWatchersCount: this.noPayloadWatchers.size,
|
|
117
|
+
filteredUpdates: updates.map((u) => ({ id: u.id, value: u.value })),
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**In manual notification path:**
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
if (needsManualNotification) {
|
|
125
|
+
console.log("🛠️ MANUAL_NOTIFICATION: Checking for changes", { changes: changes.result.length });
|
|
126
|
+
if (changes.result.length > 0) {
|
|
127
|
+
console.log("🛠️ MANUAL_NOTIFICATION: Calling notifyWatchers with changes");
|
|
128
|
+
this.notifyWatchers(changes.result);
|
|
129
|
+
} else {
|
|
130
|
+
console.log("🛠️ MANUAL_NOTIFICATION: Calling noPayloadWatchers directly");
|
|
131
|
+
this.noPayloadWatchers.forEach((fn) => fn());
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Expected Log Output Analysis
|
|
137
|
+
|
|
138
|
+
### For Local Writes (Working Case)
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
🔵 BULK: Calling applyHead for LOCAL write { localUpdates: true, newHead: [...], subscribers: 1 }
|
|
142
|
+
⚡ INT_APPLY_HEAD: Entry point { localUpdates: true, watchersCount: 1, noPayloadWatchersCount: 0, needsManualNotification: false }
|
|
143
|
+
🔔 NOTIFY_WATCHERS: Triggering subscriptions { updatesCount: 1, watchersCount: 1, noPayloadWatchersCount: 0, ... }
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### For Remote Sync (Broken Case - What We Should See)
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
🔴 APPLY_META: Calling applyHead for REMOTE sync { localUpdates: false, newHead: [...], subscribers: 1 }
|
|
150
|
+
⚡ INT_APPLY_HEAD: Entry point { localUpdates: false, watchersCount: 1, noPayloadWatchersCount: 0, needsManualNotification: true }
|
|
151
|
+
🛠️ MANUAL_NOTIFICATION: Checking for changes { changes: 1 }
|
|
152
|
+
🛠️ MANUAL_NOTIFICATION: Calling notifyWatchers with changes
|
|
153
|
+
🔔 NOTIFY_WATCHERS: Triggering subscriptions { updatesCount: 1, watchersCount: 1, noPayloadWatchersCount: 0, ... }
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### For Remote Sync (If Broken - What We Might Actually See)
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
🔴 APPLY_META: Calling applyHead for REMOTE sync { localUpdates: false, newHead: [...], subscribers: 1 }
|
|
160
|
+
⚡ INT_APPLY_HEAD: Entry point { localUpdates: false, watchersCount: 1, noPayloadWatchersCount: 0, needsManualNotification: true }
|
|
161
|
+
🛠️ MANUAL_NOTIFICATION: Checking for changes { changes: 0 }
|
|
162
|
+
🛠️ MANUAL_NOTIFICATION: Calling noPayloadWatchers directly
|
|
163
|
+
// No NOTIFY_WATCHERS log = bug found!
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**OR even worse:**
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
🔴 APPLY_META: Calling applyHead for REMOTE sync { localUpdates: false, newHead: [...], subscribers: 0 }
|
|
170
|
+
⚡ INT_APPLY_HEAD: Entry point { localUpdates: false, watchersCount: 0, noPayloadWatchersCount: 0, needsManualNotification: false }
|
|
171
|
+
// No manual notification = subscriptions not set up yet when applyMeta is called!
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Potential Root Causes to Investigate
|
|
175
|
+
|
|
176
|
+
### 1. Timing Issue
|
|
177
|
+
|
|
178
|
+
- `applyMeta()` might be called before subscriptions are set up
|
|
179
|
+
- Remote sync happens during database initialization
|
|
180
|
+
- Subscribers not registered yet when remote data arrives
|
|
181
|
+
|
|
182
|
+
### 2. Code Path Not Executing
|
|
183
|
+
|
|
184
|
+
- `applyMeta()` path might not reach `int_applyHead()` at all
|
|
185
|
+
- Different parameter passing between bulk and applyMeta
|
|
186
|
+
- Early returns preventing execution
|
|
187
|
+
|
|
188
|
+
### 3. Manual Notification Logic Bug
|
|
189
|
+
|
|
190
|
+
- Our fix logic might have conditions that don't match real scenarios
|
|
191
|
+
- `clockChangesSince()` might return different results for remote sync
|
|
192
|
+
- EmptyWatchers vs watchers distinction not working as expected
|
|
193
|
+
|
|
194
|
+
### 4. Subscription Setup Mismatch
|
|
195
|
+
|
|
196
|
+
- `use-fireproof` might be using different subscription patterns
|
|
197
|
+
- React hooks setup timing vs remote sync timing
|
|
198
|
+
- Database ready state vs subscription ready state
|
|
199
|
+
|
|
200
|
+
## Test Strategy
|
|
201
|
+
|
|
202
|
+
1. **Run the failing subscription test with logging**
|
|
203
|
+
2. **Compare logs between local write test (working) and remote sync test (broken)**
|
|
204
|
+
3. **Identify exactly where the execution path diverges**
|
|
205
|
+
4. **Fix the root cause based on evidence**
|
|
206
|
+
|
|
207
|
+
## Success Criteria
|
|
208
|
+
|
|
209
|
+
The fix is successful when:
|
|
210
|
+
|
|
211
|
+
1. ✅ Both local writes AND remote sync operations produce similar log patterns
|
|
212
|
+
2. ✅ `🔔 NOTIFY_WATCHERS` logs appear for both paths
|
|
213
|
+
3. ✅ Subscription tests pass for both `updates: true` and `updates: false` modes
|
|
214
|
+
4. ✅ React components using `useLiveQuery` update on remote sync
|
|
215
|
+
|
|
216
|
+
## File Locations for Investigation
|
|
217
|
+
|
|
218
|
+
- **Call sites**: `/Users/jchris/code/fp/fireproof/core/base/crdt.ts`
|
|
219
|
+
- **Clock implementation**: `/Users/jchris/code/fp/fireproof/core/base/crdt-clock.ts`
|
|
220
|
+
- **Test file**: `/Users/jchris/code/fp/fireproof/core/tests/fireproof/attachable-subscription.test.ts`
|
|
221
|
+
- **use-fireproof**: `/Users/jchris/code/fp/fireproof/core/tests/node_modules/use-fireproof/react/use-live-query.ts`
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Running Targeted Tests
|
|
226
|
+
|
|
227
|
+
### Existing Tests to Run
|
|
228
|
+
|
|
229
|
+
**1. Run the comprehensive subscription tests:**
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
pnpm test fireproof/attachable-subscription.test.ts --reporter=verbose
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**2. Run a specific failing test with logs:**
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
pnpm test fireproof/attachable-subscription.test.ts -t "should trigger subscriptions on inbound syncing" --reporter=verbose
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**3. Run database tests that exercise both paths:**
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
pnpm test fireproof/database.test.ts -t "basic Ledger with subscription" --reporter=verbose
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### New Simple Tests to Write
|
|
248
|
+
|
|
249
|
+
Create these minimal tests in `/Users/jchris/code/fp/fireproof/core/tests/fireproof/apply-head-logging.test.ts`:
|
|
250
|
+
|
|
251
|
+
#### Test 1: Local Write Path Logging
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
import { fireproof } from "@fireproof/core";
|
|
255
|
+
import { describe, expect, it } from "vitest";
|
|
256
|
+
|
|
257
|
+
describe("ApplyHead Path Logging", () => {
|
|
258
|
+
it("should log BULK path for local writes", async () => {
|
|
259
|
+
const db = fireproof("test-bulk-path");
|
|
260
|
+
|
|
261
|
+
// Setup subscription to ensure watchers exist
|
|
262
|
+
let notified = false;
|
|
263
|
+
const unsubscribe = db.subscribe(() => {
|
|
264
|
+
notified = true;
|
|
265
|
+
}, true);
|
|
266
|
+
|
|
267
|
+
// Perform local write - should trigger BULK path
|
|
268
|
+
console.log("🧪 TEST: Starting local write");
|
|
269
|
+
await db.put({ _id: "test-local", value: "local-data" });
|
|
270
|
+
|
|
271
|
+
// Wait for async operations
|
|
272
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
273
|
+
|
|
274
|
+
expect(notified).toBe(true);
|
|
275
|
+
unsubscribe();
|
|
276
|
+
await db.close();
|
|
277
|
+
|
|
278
|
+
console.log("🧪 TEST: Local write completed");
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
#### Test 2: Remote Sync Path Logging
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
it("should log APPLY_META path for remote sync", async () => {
|
|
287
|
+
const set = "test-remote-path";
|
|
288
|
+
|
|
289
|
+
// Create source database with data
|
|
290
|
+
const sourceDb = fireproof(`source-${set}`, {
|
|
291
|
+
storeUrls: { base: `memory://source-${set}` },
|
|
292
|
+
});
|
|
293
|
+
await sourceDb.put({ _id: "test-remote", value: "remote-data" });
|
|
294
|
+
|
|
295
|
+
// Create target database
|
|
296
|
+
const targetDb = fireproof(`target-${set}`, {
|
|
297
|
+
storeUrls: { base: `memory://target-${set}` },
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// Setup subscription to ensure watchers exist
|
|
301
|
+
let notified = false;
|
|
302
|
+
const unsubscribe = targetDb.subscribe(() => {
|
|
303
|
+
notified = true;
|
|
304
|
+
}, true);
|
|
305
|
+
|
|
306
|
+
console.log("🧪 TEST: Starting remote sync");
|
|
307
|
+
|
|
308
|
+
// Trigger remote sync - should trigger APPLY_META path
|
|
309
|
+
// (This needs to be implemented based on the actual sync mechanism)
|
|
310
|
+
// await targetDb.attach(someAttachable);
|
|
311
|
+
|
|
312
|
+
// Wait for async operations
|
|
313
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
314
|
+
|
|
315
|
+
console.log("🧪 TEST: Remote sync completed, notified:", notified);
|
|
316
|
+
|
|
317
|
+
unsubscribe();
|
|
318
|
+
await sourceDb.close();
|
|
319
|
+
await targetDb.close();
|
|
320
|
+
});
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
#### Test 3: Side-by-Side Comparison
|
|
324
|
+
|
|
325
|
+
```typescript
|
|
326
|
+
it("should show log differences between local and remote paths", async () => {
|
|
327
|
+
console.log("\n=== COMPARISON TEST START ===");
|
|
328
|
+
|
|
329
|
+
const db = fireproof("test-comparison");
|
|
330
|
+
|
|
331
|
+
let localNotified = false;
|
|
332
|
+
let remoteNotified = false;
|
|
333
|
+
|
|
334
|
+
const unsubscribe = db.subscribe(() => {
|
|
335
|
+
console.log("📬 SUBSCRIPTION: Notification received");
|
|
336
|
+
localNotified = true; // We'll use this for both for now
|
|
337
|
+
}, true);
|
|
338
|
+
|
|
339
|
+
// Phase 1: Local write
|
|
340
|
+
console.log("\n--- PHASE 1: LOCAL WRITE ---");
|
|
341
|
+
await db.put({ _id: "local-test", value: "local" });
|
|
342
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
343
|
+
|
|
344
|
+
// Phase 2: Simulate remote sync scenario
|
|
345
|
+
console.log("\n--- PHASE 2: REMOTE SYNC SIMULATION ---");
|
|
346
|
+
// TODO: Implement actual remote sync trigger
|
|
347
|
+
// For now, just show the logging setup is working
|
|
348
|
+
console.log("🔄 REMOTE: Would trigger applyMeta path here");
|
|
349
|
+
|
|
350
|
+
console.log("\n--- RESULTS ---");
|
|
351
|
+
console.log("Local write notified:", localNotified);
|
|
352
|
+
console.log("Remote sync notified:", remoteNotified);
|
|
353
|
+
|
|
354
|
+
unsubscribe();
|
|
355
|
+
await db.close();
|
|
356
|
+
|
|
357
|
+
console.log("=== COMPARISON TEST END ===\n");
|
|
358
|
+
});
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Running the New Tests
|
|
362
|
+
|
|
363
|
+
**Run the new logging tests:**
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
pnpm test fireproof/apply-head-logging.test.ts --reporter=verbose
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
**Run with debug output:**
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
FP_DEBUG=1 pnpm test fireproof/apply-head-logging.test.ts --reporter=verbose
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Expected Log Analysis
|
|
376
|
+
|
|
377
|
+
When running these tests, look for:
|
|
378
|
+
|
|
379
|
+
**✅ Successful Local Write Logs:**
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
🧪 TEST: Starting local write
|
|
383
|
+
🔵 BULK: Calling applyHead for LOCAL write { localUpdates: true, ... }
|
|
384
|
+
⚡ INT_APPLY_HEAD: Entry point { localUpdates: true, needsManualNotification: false }
|
|
385
|
+
🔔 NOTIFY_WATCHERS: Triggering subscriptions { updatesCount: 1, ... }
|
|
386
|
+
📬 SUBSCRIPTION: Notification received
|
|
387
|
+
🧪 TEST: Local write completed
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
**❌ Missing Remote Sync Logs:**
|
|
391
|
+
|
|
392
|
+
```
|
|
393
|
+
🧪 TEST: Starting remote sync
|
|
394
|
+
🔄 REMOTE: Would trigger applyMeta path here
|
|
395
|
+
// MISSING: 🔴 APPLY_META logs
|
|
396
|
+
// MISSING: ⚡ INT_APPLY_HEAD logs
|
|
397
|
+
// MISSING: 🔔 NOTIFY_WATCHERS logs
|
|
398
|
+
🧪 TEST: Remote sync completed, notified: false
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
This pattern will immediately reveal whether the `applyMeta()` path is:
|
|
402
|
+
|
|
403
|
+
1. **Not being called at all** (no 🔴 logs)
|
|
404
|
+
2. **Not reaching int_applyHead** (🔴 logs but no ⚡ logs)
|
|
405
|
+
3. **Not triggering notifications** (🔴 and ⚡ logs but no 🔔 logs)
|
|
406
|
+
|
|
407
|
+
### Iterative Testing Strategy
|
|
408
|
+
|
|
409
|
+
1. **Start with existing tests** - Add logging and run attachable-subscription.test.ts
|
|
410
|
+
2. **Create minimal reproduction** - Use the simple tests above
|
|
411
|
+
3. **Identify the break point** - Follow the missing logs
|
|
412
|
+
4. **Fix incrementally** - Address each missing log in sequence
|
|
413
|
+
5. **Validate with original tests** - Ensure comprehensive tests pass
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
_This investigation will definitively identify whether the `applyMeta()` → `applyHead()` → `notifyWatchers()` chain is broken and exactly where the execution path diverges from the working `bulk()` case._
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fireproof/core-test",
|
|
3
|
-
"version": "0.23.7
|
|
3
|
+
"version": "0.23.7",
|
|
4
4
|
"description": "Live ledger for the web.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -35,32 +35,32 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@adviser/cement": "^0.4.25",
|
|
38
|
-
"@fireproof/core": "0.23.7
|
|
39
|
-
"@fireproof/core-base": "0.23.7
|
|
40
|
-
"@fireproof/core-blockstore": "0.23.7
|
|
41
|
-
"@fireproof/core-gateways-base": "0.23.7
|
|
42
|
-
"@fireproof/core-gateways-file": "0.23.7
|
|
43
|
-
"@fireproof/core-gateways-indexeddb": "0.23.7
|
|
44
|
-
"@fireproof/core-gateways-memory": "0.23.7
|
|
45
|
-
"@fireproof/core-keybag": "0.23.7
|
|
46
|
-
"@fireproof/core-protocols-cloud": "0.23.7
|
|
47
|
-
"@fireproof/core-runtime": "0.23.7
|
|
48
|
-
"@fireproof/core-types-base": "0.23.7
|
|
49
|
-
"@fireproof/core-types-blockstore": "0.23.7
|
|
50
|
-
"@fireproof/core-types-protocols-cloud": "0.23.7
|
|
51
|
-
"@fireproof/core-types-runtime": "0.23.7
|
|
52
|
-
"@fireproof/vendor": "0.23.7
|
|
38
|
+
"@fireproof/core": "0.23.7",
|
|
39
|
+
"@fireproof/core-base": "0.23.7",
|
|
40
|
+
"@fireproof/core-blockstore": "0.23.7",
|
|
41
|
+
"@fireproof/core-gateways-base": "0.23.7",
|
|
42
|
+
"@fireproof/core-gateways-file": "0.23.7",
|
|
43
|
+
"@fireproof/core-gateways-indexeddb": "0.23.7",
|
|
44
|
+
"@fireproof/core-gateways-memory": "0.23.7",
|
|
45
|
+
"@fireproof/core-keybag": "0.23.7",
|
|
46
|
+
"@fireproof/core-protocols-cloud": "0.23.7",
|
|
47
|
+
"@fireproof/core-runtime": "0.23.7",
|
|
48
|
+
"@fireproof/core-types-base": "0.23.7",
|
|
49
|
+
"@fireproof/core-types-blockstore": "0.23.7",
|
|
50
|
+
"@fireproof/core-types-protocols-cloud": "0.23.7",
|
|
51
|
+
"@fireproof/core-types-runtime": "0.23.7",
|
|
52
|
+
"@fireproof/vendor": "0.23.7",
|
|
53
53
|
"@ipld/car": "^5.4.2",
|
|
54
54
|
"@ipld/dag-cbor": "^9.2.4",
|
|
55
55
|
"@ipld/dag-json": "^10.2.5",
|
|
56
56
|
"@types/node": "^24.3.0",
|
|
57
57
|
"cborg": "^4.2.12",
|
|
58
58
|
"charwise": "^3.0.1",
|
|
59
|
-
"use-fireproof": "0.23.7
|
|
59
|
+
"use-fireproof": "0.23.7",
|
|
60
60
|
"uuidv7": "^1.0.2"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@fireproof/core-cli": "0.23.7
|
|
63
|
+
"@fireproof/core-cli": "0.23.7",
|
|
64
64
|
"@vitest/browser": "^3.2.4",
|
|
65
65
|
"playwright": "^1.54.1",
|
|
66
66
|
"playwright-chromium": "^1.54.1",
|