Minimal, self-contained reproducer for the following production bug:
OpenTelemetry OBI v0.12.2 Java eBPF agent causes a fatal NoClassDefFoundError: io/opentelemetry/obi/java/ebpf/ProxyInputStream when a WildFly EAR application makes an outbound HTTPS call through the AWS SDK v2 Apache HTTP client (SdkTlsSocketFactory). The WildFly modular classloader cannot resolve classes injected by the OBI agent. This crashes the Apache connection pool on the first HTTPS call, and all subsequent calls fail with IllegalStateException: Connection pool shut down.
Everything runs on a local kind cluster.
| Attribute | Value |
|---|---|
| Err | java.lang.NoClassDefFoundError |
| Missing class | io/opentelemetry/obi/java/ebpf/ProxyInputStream |
| Error location | software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory.connectSocket |
| Cascade failure | java.lang.IllegalStateException: Connection pool shut down |
| Affected | WildFly EAR + HTTPS + Apache HTTP client + OBI v0.12.2 |
| Not affected | Cleartext HTTP, UrlConnectionHttpClient, NettyNioAsyncHttpClient, Quarkus, WAR-only deploys |
| Tool | Purpose |
|---|---|
| kind | Local Kubernetes cluster |
| kubectl | Cluster management |
| helm | OBI installation |
| Docker | Building images, running kind |
| Maven | Building the Java project |
| JDK | Compiling the Java code |
| openssl | Generating MinIO TLS certs |
Run the scripts in order from the repository root:
# 1. Create the kind cluster + local Docker registry
./scripts/01-create-cluster.sh
# 2. Generate self-signed TLS certs for MinIO and create the K8s secret
./scripts/02-generate-minio-certs.sh
# 3. Deploy MinIO with TLS, create test bucket and upload test file
./scripts/03-deploy-minio.sh
# 4. Install OBI via Helm (chart 0.13.0 → agent v0.12.2)
./scripts/04-install-obi.sh
# 5. Build the Maven project + Docker image, push to local registry
./scripts/05-build-and-load.sh
# 6. Deploy the WildFly EAR application with OBI annotation
./scripts/06-deploy-app.sh
# 7. Trigger the HTTPS S3 call and observe the error
./scripts/07-test.sh