Large file upload reports a failed part only after all other parts finish
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 66/100
Direzione di ricerca
Start in core/src/main/java/com/backblaze/b2/client/B2LargeFileStorer.java at storePartsAsync, where the allOf(...) near line 361 waits for every part. Compare how B2LargeFileUploader.java (around lines 249-251) cancels the remaining futures when one fails. Done when a failing part cancels its siblings and the error surfaces without waiting for slow parts, which a test with one failing and one slow part storer can show.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happens
B2LargeFileStorer.storePartsAsync() waits for every part with CompletableFuture.allOf, which only completes after all part futures are done, and it does not cancel the remaining parts when one fails. If a part fails early, the caller keeps waiting while the other parts upload to the end, then gets the error. B2LargeFileUploader handles this differently and cancels the other futures when one fails.
Where
core/src/main/java/com/backblaze/b2/client/B2LargeFileStorer.java:361 (allOf(...) in storePartsAsync); compare core/src/main/java/com/backblaze/b2/client/B2LargeFileUploader.java:249-251, which calls cancel(true) on the remaining futures.
Why it matters
Impact: Wrong request or result (the error is delayed and bandwidth is spent on a file that cannot be finished), loud. Severity: High, because it happens on the normal path whenever a part upload fails during a multi-part upload, and the caller has no way to stop the remaining parts early.
How to check
Found by reading the code, not reproduced. Read storePartsAsync: the returned future is built on allOf, and nothing cancels sibling futures or sets the cancellation token on the first failure. A test with one failing part storer and one slow part storer should show the error arriving only after the slow part completes.
Version
Seen at v6.5.0. Present on the default branch: present.
- Lingua principale
- Java
- Stelle
- 103
- Fork
- 23
- Merge medio
- 5g 8h
- PR unite (30g)
- 3
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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/b2-sdk-java
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Backblaze/b2-sdk-java#248 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
Backblaze/b2-sdk-java#247 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Backblaze/b2-sdk-java#246 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Backblaze/b2-sdk-java#245 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Backblaze/b2-sdk-java#242 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di Backblaze/b2-sdk-java
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
IETF-Hackathon/pqc-certificates#351 ·
I maintainer di solito rispondono entro 2 giorni
-
bug(core): skip_nodes.json is missing SELECT and PRE, causing Python and Java to insert separators into dropdown options and preformatted textForse già presa @Bhumit267 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
ExceptionThrowShouldUseContext: NullPointerException on a catch block inside an annotation typeForse già presa @Carbon14-48 l’ha presa oggi. Apertaapproved
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
checkstyle/checkstyle#22784 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno