bug(sdk): HTTP API can not handle digit only stream names
Los mantenedores suelen responder en 1 día
@haubur ya está trabajando en esto.
Desde el 23/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Bug description
Relates to #4155 and discussed in #4249
Situation
On HTTP transport sending Identifiers does not carry IdKind info.
Problem
The HTTP client sends ids through as_cow_str(), and the server parses path ids with from_str_value(), which tries u32 first. A digit-only name is then interpreted as an id instead of a name, which e.g binds consumers to no stream (not found) or another stream (with that id).
Solution
The HTTP API needs a way to differentiate between IdKinds (numeric and string).
Currently failing integration tests here.
Affected area / component
Rust SDK
Deployment
None
Versions
No response
Hardware / environment
No response
Sample code
No response
Logs
No response
Iggy server config
No response
Reproduction
Three integration tests here
One example pasted for convenience:
use iggy::prelude::*;
use integration::iggy_harness;
const DIGITS_ONLY_NAME: &str = "424242";
#[iggy_harness(test_client_transport = [Tcp, Http])]
async fn given_digit_only_stream_name_when_getting_the_stream_should_resolve_it_by_name(
harness: &TestHarness,
) {
let client = harness.root_client().await.unwrap();
let created = client.create_stream(DIGITS_ONLY_NAME).await.unwrap();
let stream_id = Identifier::named(DIGITS_ONLY_NAME).unwrap();
// Should get the correct stream by casting the name into an Identifier.
// If it fails, the server casts the the digit only name into an Identifier with IdKind::Numeric
// and looks for that id rather the name.
let fetched = client
.get_stream(&stream_id)
.await
.unwrap()
.unwrap_or_else(|| {
panic!(
"stream named {DIGITS_ONLY_NAME} must resolve by name, \
not as id {DIGITS_ONLY_NAME}"
)
});
assert_eq!(fetched.name, DIGITS_ONLY_NAME);
assert_eq!(fetched.id, created.id);
}
Contribution
- I'm willing to submit a pull request to fix this bug
Good first issue
- I think this could be a good first issue for a new contributor
- Lenguaje dominante
- Rust
- Estrellas
- 5.2k
- Forks
- 516
- Merge medio
- 2 d 17 h
- PR fusionados (30 d)
- 155
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- 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 apache/iggy
-
Go examples: add a message envelope producer and consumerPosiblemente ocupada @ThunderGod77 la tomó hace 6 días. Abiertogo good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/iggy#4694 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
HTTP client treats a consumer group as a plain consumerPosiblemente ocupada @mohitduhan19 la tomó hace 23 días. Abiertobug rust server
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/iggy#4408 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Add the fail-fast connection option to the Rust and Python quick-startsPosiblemente ocupada @QIW9 la tomó hace 11 días. Abiertodocs good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 92/100
apache/iggy#4261 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
ResourceNotFound from the binary protocol prints an empty keyPosiblemente ocupada @xalestar la tomó hace 2 días. Abiertoapi python rust
apache/iggy#4767 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Go SDK: validate personal access token name length before serializationPosiblemente ocupada @p4rtridge la tomó hace 3 días. Abiertobug go good first issue
apache/iggy#4749 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/iggy
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
RustCrypto/utils#1597 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Non-`main` default branchesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
max-sixty/worktrunk#4727 · 7 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
follow-up
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
carrick-sh/carrick#1859 ·
Los mantenedores suelen responder en 1 día