feat(storage): write pipeline robustness and edge-case handling for object_store backend
Los mantenedores suelen responder en 4 días
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
Línea de trabajo
Comienza con ObjectStoreStorage::S3, ObjectStoreWriter, FileWrite::write y las llamadas a WriteMultipart descritas en el issue. Comprueba el análisis de URL para buckets vacíos y rutas que solo contienen un bucket, y después inspecciona delete_stream y la gestión del estado de writer antes de evaluar wait_for_capacity. El trabajo estará terminado cuando los casos límite indicados devuelvan los errores esperados, las escrituras eviten el buffering redundante, las pruebas de state-guard cubran los fallos de close/write y la memoria usada por el streaming esté acotada adecuadamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem / Context
In #3165 (reviving #2257 for #2259), the foundational ObjectStoreStorage::S3 backend is established. To ensure production robustness and performance in the write pipeline, several edge cases and optimizations should be addressed as follow-up work:
Proposed Improvements
-
Zero-Copy Writes in
ObjectStoreWriter:FileWrite::writereceives ownedbytes::Bytes.object_store::WriteMultipartprovides aput(Bytes)method that buffers without slice copying, avoiding redundantextend_from_sliceallocations.
-
S3 URL Boundary Validation:
- Empty bucket strings (e.g.
s3:///path/to/fileors3://) currently pass initial URL host parsing as"". These should explicitly returnErrorKind::DataInvalid. - Ensure paths without trailing slashes (
s3://bucket) extractbucketand empty relative path cleanly.
- Empty bucket strings (e.g.
-
Stream Handling & State Machine Guards:
- Validate
delete_streamon empty streams (futures::stream::empty()) and ensure immediate error propagation on invalid URLs. - Add unit test coverage for
ObjectStoreWriterstate guards (e.g., verifyingclose()andwrite()error handling after writer has been closed).
- Validate
-
Backpressure & Memory Throttling:
- For high-throughput streaming, evaluate
WriteMultipart::wait_for_capacityto throttle producers and prevent unbounded 5MB chunk allocations in memory ahead of S3 network uploads.
- For high-throughput streaming, evaluate
Related
- #2258 (Umbrella: Implement Storage using object_store)
- #2259 (Implement ObjectStoreStorage::S3)
- #3165 (feat(storage): Implement ObjectStoreStorage::S3)
AI Disclosure
Drafted with AI assistance; reviewed and verified by contributor.
- Lenguaje dominante
- Rust
- Estrellas
- 1.4k
- Forks
- 604
- Merge medio
- 5 d 20 h
- PR fusionados (30 d)
- 63
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/iceberg-rust
-
REST create_table omits partition spec-id; Java-based servers (Polaris) reject itPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
apache/iceberg-rust#3469 ·
Los mantenedores suelen responder en 4 días
-
V1 manifest lists written by Java lose added/existing/deleted file countsPosiblemente ocupada @kacper-li-airspace-intelligence la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/iceberg-rust#3445 ·
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/iceberg-rust#3359 ·
Los mantenedores suelen responder en 4 días
-
Row filter keeps every row for `<` and `<=` on a null column that is missing from the data fileAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/iceberg-rust#3355 · 1 reacción ·
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/iceberg-rust#3348 ·
Los mantenedores suelen responder en 4 días
Todos los issues de apache/iceberg-rust
Issues similares
-
agent duplicate providers tool triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Text overflow in import boxAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
founders_reward panics on a configured Testnet when the slow-start subsidy is not a multiple of 5Abiertoexternal-contribution
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
ZcashFoundation/zebra#11792 ·
Los mantenedores suelen responder en 1 día
-
content:edit documentation effort:high
Dificultad 1/5 1-3 horas Aptitud para principiantes 67/100
cloudflare/cloudflare-docs#34428 ·
Los mantenedores suelen responder en 1 día
-
area/cli bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100