Kafka gateway: keep repeated header names and header order
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
Línea de trabajo
Start with gateways/kafka/docs/BRIDGE_MAPPING.md to see how headers are currently mapped and sorted on Fetch. The issue says kafka_protocol keeps only the last value of a repeated header name, so the raw record bytes need to be read for headers. The open question on whether every record or only repeated-name records keep order must be settled before changing the envelope. Done means the KafkaJS array-header producer succeeds and a record with a repeated header name matches after Produce and Fetch.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
A record with a repeated header name gets INVALID_RECORD (87), and Fetch returns headers sorted by name (gateways/kafka/docs/BRIDGE_MAPPING.md). Kafka allows both.
Who hits it:
- KafkaJS writes array header values as repeated keys, a documented feature. If it forwards a consumed message, it writes them again. The KafkaJS layer of confluent-kafka-javascript does the same.
- Apps that append a trace header twice (https://github.com/spring-projects/spring-kafka/issues/3786).
- Error 87 fails the whole partition batch in librdkafka, franz-go and Sarama. It puts a kafka-python 3.0 producer in a fatal state, so every later send fails until a restart. A kafka-go writer at its default
acks=0loses the batch and the connection, with no error.
Open question
Does every record keep its header order, at the cost of a larger stored envelope, or only records with repeated names?
Scope
- Read headers from the raw record bytes, because
kafka_protocolkeeps only the last value of a name - Store a record with repeated names in the envelope, which keeps a list
- Return headers in their original order on Fetch, as the open question decides
- Update
gateways/kafka/docs/BRIDGE_MAPPING.md
Acceptance criteria
- A KafkaJS producer with array header values succeeds, and a consumer reads every value in order
- A record with the same header name twice is the same after Produce and Fetch
References
- Lenguaje dominante
- Rust
- Estrellas
- 5.2k
- Forks
- 502
- Merge medio
- 3 d 3 h
- PR fusionados (30 d)
- 163
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 3 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 21 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 9 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
-
bug python sdk
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
apache/iggy#3748 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
ResourceNotFound from the binary protocol prints an empty keyPosiblemente ocupada @xalestar la tomó hoy. Abiertoapi python rust
apache/iggy#4767 · 2 comentarios · 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
apache/datafusion-iceberg#100 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: cua-driver skill fails Agent Skills frontmatter validationPosiblemente ocupada @Mearman la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
area/tools bug session-analysis
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
oracle/rust-oracledb#66 ·
-
`PrimitiveArray::validate_decimal_precision` rejects every decimal array with a negative scaleAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día