Repository navigation
Conversation
… stats list_bucket fetched one body per key in series, so a push with locking enabled paid N sequential GETs on verify. Bodies are now fetched 16 at a time, matching the other bucket fan-outs. /objects/stats only needs a number, so it uses count(), which lists keys and opens no body. Refs #691 Signed-off-by: BryanFRD <bryanferrando59@gmail.com>
BryanFRD
enabled auto-merge (squash)
November 3, 2026 22:31
Contributor
There was a problem hiding this comment.
Not approved: failed step(s): verify.
Ready to merge. The code review approved with no blocking findings. Formal verification failed to run, so there is no verification result.
What the change does: bucket lock bodies are now read concurrently (buffer_unordered, capped at 16 reads at once), and the stats endpoint uses the key-only count() instead of list().len(). list() still sorts by path afterwards, so output order is unchanged. The new tests cover ordering past one batch of reads (35 locks), zero body reads when counting, and the lock count on the stats route.
Suggestions
server/src/routes.rs:145(suggestion):count()counts entries, whilelist()drops any body that fails to decode. A corrupt or foreign.jsonunder.locks/now shows up instats.locksbut not inGET /locks. That is probably the better tradeoff for a dashboard figure, and no fix is needed. If the two numbers must agree, say in thecount()comment that it counts entries, not decodable locks.
Formal verification: the step failed and returned no result, so nothing was checked.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #691
list_bucketfetches bodies withbuffer_unordered(16)instead of one GET at a time. Errors still propagate, so an unreachable store never answers "no locks"./objects/statsusescount()(key listing, no body reads) instead oflist().len().Key-based pagination, the longer-term part of the issue, is split into #727 since it changes listing order.
Tests
/objects/statsreports the number of locks held.cargo test -p lfsx-serverand clippy pass. The onelfsx-cligc test failure locally is from a globaltag.gpgsignand is unrelated.