Skip to content

com.atproto.sync.getLatestCommit returns 501, blocking relay crawl #167

@simnaut

Description

@simnaut

Update (re-scoped): This is a spec-conformance gap, not the cause of repos failing to index. The actual indexing/freezing problem is missing prevData in firehose #commit events — see #169. Details below.

Summary

com.atproto.sync.getLatestCommit is not implemented. Requests fall through the registered routes to the catch-all XRPC proxy (app.all("/xrpc/*", …) in packages/pds/src/index.ts) and return 501 MethodNotImplemented. It's a standard sync endpoint and should return 200.

Reproduction

curl 'https://<pds-host>/xrpc/com.atproto.sync.getLatestCommit?did=<did>'
# → HTTP 501 {"error":"MethodNotImplemented","message":"Method Not Implemented"}

Reproduces on any cirrus deployment (verified on pds.simnaut.io and mk.pds.mk.gg).

Not the indexing blocker

This issue originally suspected getLatestCommit of blocking relay indexing. Further investigation disproved that:

  • The reference relay (indigo) and rsky-relay build repo state from the firehose and do not call getLatestCommit during crawl (indigo only serves it; getRepo 3xx-redirects to the source PDS).
  • relay.feeds.blue — which surfaced this — runs standard indigo (not a custom implementation) and never calls getLatestCommit during crawl. Its repos freeze because of a different bug: cirrus omits the prevData field from #commit events, so strict indigo verification rejects them ("missing prevData field"). That's Firehose #commit omits prevData, breaking inductive verification on strict relays #169, the real federation fix.

So no relay's indexing depends on this endpoint; it's purely conformance.

Notes

All the data the endpoint needs is already available via AccountDurableObject.rpcGetRepoStatus() (returns { did, head, rev }), which getRepoStatus/listRepos already use. The fix is small — see #168.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions