elastic / elastic/apm-agent-java

Spring Webflux 3.2: agent attachment causes java.lang.IllegalStateException: The underlying HTTP client completed without emitting a response.

Aperta
#3,592 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
agent-java community
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.