Repository navigation
[snapshot] show completion marks in transfer progress - #497
Merged
Merged
Conversation
kkozoriz
marked this pull request as ready for review
October 1, 2026 10:51
kkozoriz
force-pushed
the
fix/snapshot-progress-completion-marks
branch
from
October 1, 2026 11:18
b4350ed to
1366977
Compare
In a terminal, the "N/M volumes" summary of `d8 snapshot download` and
`upload` left a frozen spinner frame on screen after every exit, volume
rows showed no outcome, and upload said "volumes downloaded".
- Volume rows spin while waiting and while transferring, then show
a check mark (complete / already exists) or a ballot X (interrupted).
- The summary line shows a check mark when all volumes finished and a
ballot X otherwise; it follows the volume count, not the exit status.
- The summary verb follows the direction ("uploaded" for upload).
- Non-terminal output is unchanged.
Signed-off-by: Konstantin Kozoriz <konstantin.kozoriz@flant.com>
kkozoriz
force-pushed
the
fix/snapshot-progress-completion-marks
branch
from
October 1, 2026 17:43
1366977 to
5c313ca
Compare
ldmonster
approved these changes
Oct 1, 2026
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.
Description
In a terminal,
d8 snapshot downloadanduploadnow mark every volume row and the "N/M volumes" summary with ✓ (done) or ✗ (interrupted), and the summary verb follows the direction ("uploaded" for upload). Non-terminal output is unchanged.Why do we need it, and what problem does it solve?
After a run the last spinner frame stayed on screen, which looks like a hang; nothing said whether a volume finished or was interrupted; and
uploadreported itself as "downloaded".What is the expected result?
download, final frame. Before (v0.33.23):After:
upload, final frame. Before (v0.33.23) — note "downloaded":After:
Mid-transfer (finished rows show ✓, running rows keep the spinner):
Interrupted with Ctrl-C:
Interrupted with Ctrl-C while volumes are in flight (one volume had finished; a row still finalizing at 100% counts as interrupted). The summary follows the volume count, not the exit status:
The same for
upload:Repeated
downloadinto the same directory:Verified
Real cluster (Deckhouse v1.78.0, local thin LVM; two Block volumes of 0.7 and 3 GiB and one Filesystem volume of 1.5 GiB, about 5.2 GiB of real data), run in a real terminal (tmux). "After" is a binary built from the PR commit
b4350ede0(clean tree,d8 version local-dev, sha256b9375ec8…); "before" is the released v0.33.23.download: ✓ on all 3 rows and on the summary; repeated into the same directory, every row shows✓ Already existsand the summary3/3 ✓.downloadandupload: the finished volume keeps its ✓, the rest show✗ Interrupted, the summary shows1/3 … ✗; Ctrl-C before any volume finished gives0/3 ✗.uploadof the same archive into a clean namespace:3/3 volumes uploaded ✓; the released v0.33.23 on the same archive prints3/3 volumes downloaded ⠋.download320 vs 323 lines,upload111 vs 106 lines; no ✓, ✗ or spinner characters in either, and after masking sizes, paths and timestamps the only differences are timing noise (one extra0/3progress line, DataExport ids). Both builds printuploaded …in theuploadaggregate line.d8 snapshot <sub> --helpis byte-identical to v0.33.23 for all 8 subcommands, and the exit code is 1 in both for a missing argument, a missing snapshot and a missing archive directory.go test ./internal/snapshot/progress/ ./internal/snapshot/cmd/download/— both packagesok.Checklist
progress/multibar_test.go,cmd/download/download_test.go; both packages pass)Screenshots
Before:
After: