grafana / grafana/pyroscope-java

Wall profiler event doesn't like remote JDB session made via Cloudflare WARP

Aperta
#174 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.