bug(sdk): HTTP API can not handle digit only stream names
I maintainer di solito rispondono entro 1 giorno
@haubur ci sta già lavorando.
Dal 23/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
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
- Lingua principale
- Rust
- Stelle
- 5.2k
- Fork
- 502
- Merge medio
- 3g 11h
- PR unite (30g)
- 143
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Ha un 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 apache/iggy
-
go good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
HTTP client treats a consumer group as a plain consumerForse già presa @mohitduhan19 l’ha presa 18 giorni fa. Apertabug rust server
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
apache/iggy#4408 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Add the fail-fast connection option to the Rust and Python quick-startsForse già presa @QIW9 l’ha presa 6 giorni fa. Apertadocs good first issue
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
apache/iggy#4261 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug python sdk
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/iggy#3748 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Python examples: add a sink data producerForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertagood first issue python
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 70/100
OpenZeppelin/openzeppelin-relayer#967 ·
I maintainer di solito rispondono entro 1 giorno
-
DecisionOutcome::label() / n_dosed(): engine-side mapping so downstream needs no wildcard armAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
src/runs.rs:1987: a missing --source-run-id now answers 400 "Source run ... does not exist", not 404Apertanightly-audit
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
antithesishq/snouty#602 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
libnativeapi/nativeapi#21 ·