UPDATED: Type resolution with deep generic hierarchies still fail in 2025.1.1 (regression from issue #1312)

Abierto
#1,325 3 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
docker-compose, java, kafka, spring, spring-boot

Línea de trabajo

Empieza ejecutando la demo con ./mvnw spring-boot:run después de comprobar los cambios de versión en pom.xml, y sigue después el bean productBatchListConsumer y la firma de GenericBatchListConsumer descritos en el issue. Compara su payload de batch con el de los consumers que funcionan; se considera terminado cuando se deserializa en valores ProductCompleteDTO en lugar de bytes sin procesar, mientras los consumers existentes en modo individual y por lotes siguen funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Description

This is a follow-up to issue #1312 ("Type resolution with deep generic hierarchies is incorrect"). After upgrading Spring Cloud BOM from 2025.0.0 to 2025.1.1 and Spring Boot to 4.0.3, type resolution issues persist in batch mode consumption.

The demo repository (ferblaca/demoStreamGenerics/tree/upgrade_to_2025_0_0) was re-tested to confirm the behavior.

Current Behavior
Single Mode - All Consumers Work ✅
  • productConsumer (GenericConsumer<ProductCompleteDTO>)
  • productConsumer2 (Consumer<ProductCompleteDTO>)
  • productMessageConsumer (GenericMessageConsumer<ProductCompleteDTO>)
  • productMessageConsumer2 (Consumer<Message<ProductCompleteDTO>>)
Batch Mode - Partial Failure ⚠️
  • productBatchListConsumer (GenericBatchListConsumer<ProductCompleteDTO>): ❌ Fails — payload arrives as byte[........]
  • productBatchListConsumer2 (Consumer<List<ProductCompleteDTO>>): ✅ Works
  • productBatchListMessageConsumer (GenericBatchMessageListConsumer<ProductCompleteDTO>): ✅ Works
  • productBatchListMessageConsumer2 (Consumer<Message<List<ProductCompleteDTO>>>): ✅ Works
Root Cause

Only the productBatchListConsumer bean with the following signature fails to deserialize correctly:

@Bean
public GenericBatchListConsumer<ProductCompleteDTO> productBatchListConsumer() {
    return new GenericBatchListConsumer<>("productBatchListConsumer");
}

Where GenericBatchListConsumer is defined as:

public class GenericBatchListConsumer<T> implements Consumer<List<T>> {
    // ...
}

Instead of deserializing to the expected type, the message payload arrives as raw bytes:

Received Batch List productBatchListConsumer Consumer: [123, 34, 105, 100, 34, 58, 49, ...]
Steps to Reproduce
  1. Clone the demo repository
  2. Update pom.xml with:
    • Spring Cloud BOM: 2025.1.1
    • Spring Boot: 4.0.3
  3. Run ./mvnw spring-boot:run (Kafka starts automatically via Docker Compose)
  4. Send the same test messages from the original issue
  5. Check the logs for the byte array payload symptom
Environment
Component Version
Spring Boot 4.0.3
Spring Cloud Stream 5.0.1
Spring Cloud Function 5.0.1
Message Broker Kafka (KRaft mode via Docker Compose)
Lenguaje dominante
Java
Estrellas
1.1k
Forks
641
Merge medio
11 h 2 min
PR fusionados (30 d)
8

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de spring-cloud/spring-cloud-function

Todos los issues de spring-cloud/spring-cloud-function

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.