grafana / grafana/pyroscope-java
Wall profiler event doesn't like remote JDB session made via Cloudflare WARP
- Lingua principale
- Java
- Stelle
- 126
- Fork
- 48
- Merge medio
- 4g 14h
- PR unite (30g)
- 5
Descrizione
Hi Pyroscope JAVA,
I have the following setup:
- AWS EKS cluster with two namespaces `dev` and `test`
- Both namespaces consist of a bunch of Java Spring Boot applications
- Applications in the `dev` namespace use Pyroscope agent, the `PYROSCOPE_PROFILER_EVENT` is set to `wall`
- The connection from local computers to the EKS PODs' network is done via Cloudflare WARP (WiteGuard)
- The connection can be made directly to the POD's IP or via `kubectl port-forward`
What I have observed is that
- Java Debugger attachment from inside the POD i.e. `kubectl exec` + `jdb -attach localhost:4001` works like a charm
- It also works from namespace to namespace or from POD to POD, meaning that it can jump from one EKS node to another
- What does't work is Java Debugger attachment from the local computers to the applications in the `dev` namespace when `PYROSCOPE_PROFILER_EVENT` is set to `wall`. If I set `cpu` or `itimer` it does work.
The below error is shown:
```
jdb -attach IP_ADDRESS:4001
java.io.IOException: handshake failed - connection prematurally closed
at jdk.jdi/com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:137)
at jdk.jdi/com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:271)
at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:119)
at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:557)
at jdk.jdi/com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:367)
at jdk.jdi/com.sun.tools.example.debug.tty.Env.init(Env.java:63)
at jdk.jdi/com.sun.tools.example.debug.tty.TTY.main(TTY.java:1113)
```
I'm wondering if you folks have some ideas about the potential issue here, I do appreciate any feedback on this.
I found similar issue in `async-profiler`, but I'm not sure if related https://github.com/async-profiler/async-profiler/issues/769
Java Version
```
openjdk 17.0.13 2024-10-15 LTS
OpenJDK Runtime Environment Corretto-17.0.13.11.1 (build 17.0.13+11-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.13.11.1 (build 17.0.13+11-LTS, mixed mode, sharing)
```
Pyroscope agent version is `v0.14.0`
EKS node run on `Amazon Linux 2 x86_64`
Best regards,
Pawel
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Non sono stati identificati file di progetto o test. Riprodurre con Java 17, Pyroscope agent v0.14.0 e un’applicazione Spring Boot in EKS, confrontando remote jdb tramite Cloudflare WARP con kubectl exec o una pod-to-pod attachment e gli eventi wall rispetto a cpu o itimer; il lavoro è concluso quando viene identificata la causa dell’handshake fallito o viene documentato un fix confermato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java, kubernetes
- Ambito
- devops, networking, performance
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100