Streams: ListStreams, DescribeStream and GetRecords accept a Limit the service refuses
Los mantenedores suelen responder en 2 días
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
Línea de trabajo
Start with crates/engine/src/streams.rs, focusing on handle_list_streams, handle_describe_stream, and handle_get_records; compare their current Limit handling with the operation-specific bounds and error messages in the issue. Check the storage paths cited for Cassandra and PostgreSQL to confirm validation happens before backend calls. Done means each operation rejects Limits below 1 or above its maximum with the measured ValidationException type and message.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
DynamoDB Streams refuses an out-of-range Limit with a 400 ValidationException. ExtendDB clamps the top of the range on ListStreams and GetRecords, does not check DescribeStream's, and passes a Limit of 0 or below to the storage backend on all three.
Measured on Amazon DynamoDB Streams in us-east-1 on 2026-10-27, with SDK parameter validation turned off so each value reached the service:
| Operation | Limit | Status | Response body |
|---|---|---|---|
| ListStreams | 0 | 400 | {"__type":"com.amazon.coral.validate#ValidationException","message":"1 validation error detected: Value at 'limit' failed to satisfy constraint: Member must have value greater than or equal to 1"} |
| ListStreams | -1 | 400 | the same body as Limit 0 |
| ListStreams | 101 | 400 | {"__type":"com.amazon.coral.validate#ValidationException","message":"One or more parameter values were invalid: Limit cannot be greater than the maximum allowed size: 100"} |
| DescribeStream | 0 | 400 | the same body as ListStreams Limit 0 |
| DescribeStream | 101 | 400 | {"__type":"com.amazon.coral.validate#ValidationException","message":"One or more parameter values were invalid: Limit cannot be greater than the maximum: 100"} |
| GetRecords | 0 | 400 | the same body as ListStreams Limit 0 |
| GetRecords | 1001 | 400 | {"__type":"com.amazon.coral.validate#ValidationException","message":"One or more parameter values were invalid: Limit should be less than or equal to 1000"} |
| GetRecords | 1000 | 200 |
The message for a value above the maximum differs by operation: DescribeStream's ends "the maximum: 100", ListStreams' ends "the maximum allowed size: 100", and GetRecords' reads "Limit should be less than or equal to 1000".
On main (abf8082f):
handle_list_streams(crates/engine/src/streams.rs:55) andhandle_get_records(streams.rs:307) apply.min(100)and.min(1000), so 101 and 1001 succeed.handle_describe_streampasses the request'sLimitto the backend unchanged.- A
Limitof 0 or below reaches the backend on all three operations. Inlist_streams, Cassandra computeslimit_usize - 1(crates/storage-cassandra/src/stream_engine.rs:433), which panics in a debug build at Limit 0 when streams exist. PostgreSQL bindslimit + 1intoLIMIT(crates/storage-postgres/src/stream_engine.rs, lines 417 to 455), which the database refuses for a Limit of -2 or below.
Fix: refuse a Limit below 1 or above the operation's maximum in the engine, before the backend is called, with the type and message measured above for each operation.
- Lenguaje dominante
- Rust
- Estrellas
- 517
- Forks
- 60
- Merge medio
- 2 d 22 h
- PR fusionados (30 d)
- 25
Preparar el entorno
- Incluye un Dockerfile o un 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 ExtendDB/extenddb
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
backend:mongodb bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 2 días
-
backend:cassandra bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
backend:cassandra bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 2 días
Todos los issues de ExtendDB/extenddb
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
BurntSushi/jiff#668 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
router-for-me/EasyCLIProxyAPI#534 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
astral-sh/astral-codec#244 ·
Los mantenedores suelen responder en 1 día
-
ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug dependencies kind:fix priority: P3 ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
shep-pm/shep#1318 · 1 comentario ·
Los mantenedores suelen responder en 1 día