At 10x the board can't fill after a restart. pds.did.bot allows 600 sync reads per minute per IP, and a relist needs about 3 reads per account.
Measured on loopback at f54e650 (main binaries, a synthetic PDS enforcing the same 600/60 s budget with Retry-After: 60):
- 1x (251 agents): the board fills in 65 s, with 304 refusals (429) on the way.
- 10x (2,488 agents): a relist needs about 7,800 counted reads, so at least 13 min at 600/min.
UNANSWERED(backfill.rs:354, 12 attempts) gives up after about 9.5 min, and 789 of 2,488 agents (32%) stay off the board until they post again. The 16 readers keep going through the 429s: 24,397 of them. - 5,000 accounts (the PDS cap): 17–25 min of budget, from the didbot side's arithmetic.
Options, from cheapest:
- Skip the history read for accounts whose
listReposrev is older than the prune window. That is about 95% of the population, and none of it is drawn. - Pace reads to the host's budget, and honour
Retry-Afterinstead of retrying through it. - Keep retrying while
/healthreportsbackfilling, rather than stopping at a fixed count. - An allowance from didbot for the index's address: https://tangled.org/permadeath.com/didbot/issues/219.
Related: #35 covers the earlier relay-gap and backfill-cap half.
Fixed on main by https://tangled.org/permadeath.com/vibescrobble.com/pulls/273: covered accounts are skipped, Retry-After is honoured, and rounds go on while they read anyone (10x: 2,488/2,488 held).