grafana / grafana/pyroscope-java
Wall profiler event doesn't like remote JDB session made via Cloudflare WARP
- Lenguaje dominante
- Java
- Estrellas
- 125
- Forks
- 48
- Merge medio
- 4 d 14 h
- PR fusionados (30 d)
- 5
Descripción
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
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
No se han identificado archivos de proyecto ni pruebas. Reproducirlo con Java 17, Pyroscope agent v0.14.0 y una aplicación Spring Boot en EKS, comparando remote jdb a través de Cloudflare WARP con kubectl exec o una pod-to-pod attachment, y también los eventos wall frente a cpu o itimer; se considera terminado cuando se identifica la causa del handshake fallido o se documenta un fix confirmado.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java, kubernetes
- Área
- devops, networking, performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100