Repository navigation
Conversation
Calculate current object size and latest modification time only when requested, with bounded pagination and cancellation. Co-Authored-By: heihutu <heihutu@gmail.com> Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
1 task done
Avoid cloning every loaded row when prefix statistics change, and explain the page limit alongside the object limit. Co-Authored-By: heihutu <heihutu@gmail.com> Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
Keep progress and outcomes available when filtering, sorting, or virtual scrolling hides the scanned row, and ignore responses that arrive after cancellation. Co-Authored-By: heihutu <heihutu@gmail.com> Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
This branch has not been deployed
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.
Pull Request
Description
Folder rows previously showed no size or modification time. Users can now calculate both on demand from current visible objects under the literal S3 prefix. The latest modification time is the newest object timestamp, not a native folder timestamp.
The scan runs only when requested, supports cancellation, and stops at 100 pages or 100,000 objects. Errors and incomplete results are not shown as successful statistics. The interface states both limits. Loaded rows without a result retain their existing objects, avoiding unnecessary per-row copies when a summary changes. A list-level status keeps cancellation and outcomes accessible when filtering, sorting or virtual scrolling hides the selected row; late results after cancellation are ignored. Like S3 pagination, the calculation is not a point-in-time snapshot.
Type of Change
Testing
At commit
3ffa56e0a9581c810f6f0caeb44249b7fbc674b5, using Node 22.23.4 and pnpm 12.3.4:All passed; the test suite ran 868 tests. Tests cover pagination, encoded literal prefixes, cancellation, invalid responses, limits, stale results after cancellation, filtering, a scope change or refresh, and status dismissal. A local browser test against an isolated debug RustFS build at
d8d064bd1calculated the expected 40 B and latest object time for the test prefix. This does not replace multi-node or concurrent-write testing. A local ABBA microbenchmark of mapping 10,000 loaded rows with one summary reduced that isolated step by roughly 16–18%; it does not measure end-to-end latency or S3 performance.Checklist
Related Issues
Related to rustfs/rustfs#9082 and rustfs/backlog#2981.
Screenshots (if applicable)
Same test bucket and viewport before and after; screenshots use isolated local test data. On mobile, the existing table requires horizontal scrolling to see the full timestamp.
Filtered-row status on desktop and mobile was also verified with an intentionally delayed local S3 request. Chinese mobile was verified; long translated strings were not manually verified.
Additional Notes
The existing scanner usage endpoint counts versions and may be partial or use normalized paths, so it is not used for this current-object calculation. The Console change must be released and incorporated into a RustFS distribution before users receive it.