fix(b2): Reader.Status reports chunk progress shifted by one
I maintainer di solito rispondono entro 1 giorno
@ffumero2003 ci sta già lavorando.
Dal 30/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Context
Reader.Status().Progress reports chunk progress shifted by one position.
Reader numbers its download chunks from 0 (chunkID := r.chwid, with chwid starting at 0, b2/reader.go ~:151) and stores each in r.smap[chunkID]. But Reader.status() (b2/reader.go ~:345) loops from 1:
for i := 1; i <= len(r.smap); i++ {
rs.Progress[i-1] = r.smap[i].done()
}
So Progress[0] shows chunk 1, chunk 0's progress never appears, and the last slot reads a key that doesn't exist. Writer.status() numbers its chunks from 1, so the same loop is correct there; the Reader's is not.
Reproduction
Read part of a three-chunk object so that chunks 0 and 1 are complete and chunk 2 is half done: Status().Progress is [1 0.5 1], expected [1 1 0.5]. Found while tightening #204's reader items (#204 lists b2/reader.go:345 as unpinned).
Expected
Progress[i] is chunk i's progress, for every chunk.
Acceptance criteria
- R1. A test reads part of a multi-chunk object with a controlled fake and asserts the exact
Progressslice. It fails before the fix. - R2.
Reader.status()iterates the chunk IDs it actually uses (from 0). - R3. Changelog entry under Fixed.
In scope
Reader.status()chunk-to-progress indexing, its controlled multi-chunk regression test, and the requested Fixed changelog entry.
Out of scope
- Unrelated work outside the components and behavior described in In scope.
Verification
Run the repository regression checks with live credentials unset:
unset B2_APPLICATION_KEY_ID B2_APPLICATION_KEY B2_ACCOUNT_ID B2_ACCOUNT_KEY
go build ./...
go vet ./...
go test -race -count=1 ./b2
- Reproduce the supplied three-chunk case and assert the literal expected progress
[1 1 0.5]against the incorrect[1 0.5 1]behavior. - Record the regression test failing before the indexing fix and passing afterward; verify the Fixed changelog entry.
- Expected result: the checks above succeed and the observable outcomes in Acceptance criteria are demonstrated. If a check cannot run, report
Could not run because: ...; if it starts but fails, reportCould not complete because: .... A skipped check is not a pass.
Links
-
Related issues and pull requests referenced above: #204.
- Lingua principale
- Go
- Stelle
- 66
- Fork
- 18
- Merge medio
- 1g 10h
- PR unite (30g)
- 132
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Backblaze/blazer
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Bucket.Attrs never returns ReplicationConfig: replication configuration is write-onlyForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
test: skip the fuzz non-vacuity guard when replaying a single seedForse già presa @ffumero2003 l’ha presa 5 giorni fa. Apertatesting
Backblaze/blazer#330 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Backblaze/blazer
Issue simili
-
needs-triage typo
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
llm-d-incubation/llm-d-scaling-manager#122 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue severity: low tech-debt
Difficoltà 2/5 Mezza giornata Idoneità per principianti 75/100
TMHSDigital/subenum#329 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] Backend summarize min() / max() panics when a field has no numeric valuesForse già presa @weng5e l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
grafana/grafana-infinity-datasource#1832 ·
I maintainer di solito rispondono entro 1 giorno
-
tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
GillMacedo/godebugdiff#13 ·