Range + If-Range support, end-to-end
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- go
- Ambito
- api, backend, infrastructure
Direzione di ricerca
Inizia da internal/strategy/apiv1.go e internal/cache/api.go, quindi esamina s3_parallel_get.go e i backend disk, memory, tiered e remote per comprendere i percorsi di lettura esistenti. Traccia l’infrastruttura client/ e remote per la gestione di Range e If-Range. Il lavoro è completo quando ogni backend restituisce i byte corretti dell’intervallo richiesto con 206 e Content-Range, un If-Range obsoleto restituisce 200 e gli intervalli non soddisfacibili restituiscono 416.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Follow-up from the ETag support assessment (label: etag-range-followup).
The strong content-hash ETag is already a suitable, tier-stable If-Range validator (a range continuation served from a different tier/pod validates correctly; a changed object correctly forces a full 200). The validator value is fine; the surrounding machinery is entirely missing.
Current gaps
apiv1.getObject(internal/strategy/apiv1.go) doesio.Copy(w, cr)— always200, never honoursRange, never setsAccept-Ranges, never returns206/Content-Range/416.- The
cache.Cacheinterface (internal/cache/api.go) only exposes a whole-objectOpenreturning anio.ReadCloser; there is no partial-read / seek capability. Only the disk backend reader happens to be seekable. checkConditionalsdoes not evaluateIf-Range.
Work
- Add a partial-read capability to the cache interface — either a range-aware open (offset + length) or a documented seekable-reader contract — and implement it for
disk,memory,s3(S3 already does parallel range GETs internally, sees3_parallel_get.go),tiered, andremote. - Implement server-side range handling in
apiv1.getObject: parseRange, emitAccept-Ranges: bytes, return206withContent-Rangefor satisfiable ranges and416for unsatisfiable ones. - Evaluate
If-Range(against the strong ETag; fall back to full200when the validator does not match) before serving a partial response. - Plumb
Range/If-Rangethrough the client (client/) and remote backend as needed so a tiered remote tier can serve ranges.
Acceptance
Ranged GET against each backend returns the correct bytes with 206/Content-Range; If-Range with a stale ETag returns the full object with 200; unsatisfiable ranges return 416.
- Lingua principale
- Go
- Stelle
- 41
- Fork
- 14
- Merge medio
- 19h 28m
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun 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 block/cachew
-
etag-range-followup
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di block/cachew
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
NVIDIA/k8s-device-plugin#2076 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
area/release kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
kubernetes-sigs/kueue#16455 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno