Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

WildFly EAR + OBI Java Agent: TLS ClassLoader Issue Reproducer

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.

Bug Details

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

Prerequisites

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

Quick Start

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages