elastic / elastic/apm-agent-java
Spring Webflux 3.2: agent attachment causes java.lang.IllegalStateException: The underlying HTTP client completed without emitting a response.
- Lingua principale
- Java
- Stelle
- 594
- Fork
- 338
- Merge medio
- 1g 13h
- PR unite (30g)
- 25
Descrizione
## Describe the bug
Using Spring Boot 3.2.2 Webflux with attached APM agent 1.49.0 on JDK 21.0.3:
```
java.lang.IllegalStateException: The underlying HTTP client completed without emitting a response.
at org.springframework.web.reactive.function.client.DefaultWebClient.lambda$static$0(DefaultWebClient.java:78) ~[spring-webflux-6.1.3.jar!/:6.1.3]
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55) ~[reactor-core-3.6.2.jar!/:3.6.2]
at reactor.core.publisher.Mono.subscribe(Mono.java:4512) ~[reactor-core-3.6.2.jar!/:3.6.2]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) ~[reactor-core-3.6.2.jar!/:3.6.2]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) ~[reactor-core-3.6.2.jar!/:3.6.2]
at co.elastic.apm.agent.reactor.TracedSubscriber.onComplete(TracedSubscriber.java:141) ~[na:na]
```
## Steps to reproduce
We don't have a sample test app yet but our findings concluded that the only factor leading to this error is agent jar attachment to java command. Without attachment the application works. **With APM enabled it only fails on Spring Boot 3.2.2 but works fine on Spring Boot 2.7.10**.
Another finding - the application's endpoints are functioning except for ones using [Mono.zip](https://github.com/reactor/reactor-core/blob/main/reactor-core/src/main/java/reactor/core/publisher/Mono.java#L1311)
## Expected behavior
Spring Webflux endpoint works the same way with or without APM.
## Debug logs
See logs attached
[apm.log](https://github.com/elastic/apm-agent-java/files/15044472/apm.log)
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia riproducendo il problema con Spring Boot 3.2.2, JDK 21.0.3 e APM agent 1.49.0, confrontando le esecuzioni con attached-agent e no-agent con la baseline di Spring Boot 2.7.10. Traccia Mono.zip attraverso co.elastic.apm.agent.reactor.TracedSubscriber e confronta l’apm.log allegato con lo stack trace di DefaultWebClient. Il lavoro è completato quando gli endpoint WebFlux interessati emettono risposte in modo coerente con e senza APM.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java, spring, spring-boot
- Ambito
- backend, observability-sre
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100