Problem
A GET request with X-Replicate-From: none should only look in the local node's database. However, blob data is returned even when the blob only exists on another node — indicating the none flag is not preventing remote fetching.
Steps to reproduce
- Set up 3-node cluster
- Write a blob on node 1 with
X-Replicate-To: <node2> (so the blob exists on nodes 1 and 2 but NOT node 3)
- On node 3, GET the blob with
X-Replicate-From: none
Expected: 200 with empty body (blob not present locally on node 3)
Actual: 200 with blob data (data retrieved from nodes 1 or 2 despite none)
Changing to a non-existent ID returns the expected empty result, suggesting the routing logic fires before the none check for blobs that exist elsewhere.
Likely cause
Table.ts:3772 guards ensureLoaded with context?.replicateFrom !== false, but blob fetching may have a separate code path (e.g., in blob.ts or a harper-pro sharding layer) that doesn't propagate this context flag.
🤖 Filed by Claude on behalf of Kris.
Problem
A
GETrequest withX-Replicate-From: noneshould only look in the local node's database. However, blob data is returned even when the blob only exists on another node — indicating thenoneflag is not preventing remote fetching.Steps to reproduce
X-Replicate-To: <node2>(so the blob exists on nodes 1 and 2 but NOT node 3)X-Replicate-From: noneExpected: 200 with empty body (blob not present locally on node 3)
Actual: 200 with blob data (data retrieved from nodes 1 or 2 despite
none)Changing to a non-existent ID returns the expected empty result, suggesting the routing logic fires before the
nonecheck for blobs that exist elsewhere.Likely cause
Table.ts:3772guardsensureLoadedwithcontext?.replicateFrom !== false, but blob fetching may have a separate code path (e.g., inblob.tsor a harper-pro sharding layer) that doesn't propagate this context flag.🤖 Filed by Claude on behalf of Kris.