chadtmiller.com/pds.js
An atproto PDS in JavaScript, for Cloudflare Workers and Node
0
0
---
'@pdsjs/core': patch
---
A commit's blocks are enough to check it. Sync 1.1 consumers (relays, tap,
jetstream, hydrant) undo a commit's ops on the new tree with only the blocks
it carries, and compare the root they reach with `prevData`. Putting back a
key that a delete removed splits the tree where the key goes, which reads
unchanged nodes beside it, and a commit carried only the nodes it created.
About one delete in five failed that check, and each consumer that failed it
fetched the whole repo with `getRepo`, all at once. On a Durable Object that
held the account for a minute or more, refusing every other request with
"Durable Object is overloaded".
`createCommit` now undoes its own ops (`mstInvert`, new in `@pdsjs/core/mst`)
and carries every existing node that reads, as well as the existing nodes
the ops read on the way. It warns when undoing does not reach `prevData`.