very fast at protocol indexer with flexible filtering, xrpc queries, cursor-backed event stream, and more, built on fjall
rust fjall at-protocol atproto indexer

[db] count from the row a txn already read instead of reading it again master

put_repo read and decoded the row it replaces on every write, so apply_commit paid a second point read and msgpack decode per live commit for a row the shard had read under the same lock moments before, only to find its active and pds unchanged. Txn::read_repo now takes the repo lock, reads and decodes the row and keeps the pds it counts for, and a later put_repo of it in the same txn moves the count from that without a read. the shard's commit load, the relay's indexer branches, the crawler's reconcile and the backfill's inactive path read through it. put_repo also compares the pds as stored first, so the usual write that keeps it parses no url.


+108 -53
6 changed files