From a0e9ff3f6d1494598a1a51d8001347026127c549 Mon Sep 17 00:00:00 2001 From: fabrizzio-dotCMS Date: Wed, 23 Sep 2026 15:35:18 -0600 Subject: [PATCH] fix(docker): add jdk.net to the java-base runtime so the OpenSearch client can connect (#37722) httpcore5 5.4.3 (from #37626) uses jdk.net.Sockets on every new connection, and the jlinked runtime in dotcms/java-base did not include jdk.net. The OpenSearch client's I/O thread died with NoClassDefFoundError and every request hung (or failed with a 500 when TLS was off). Co-Authored-By: Claude Opus 5.5 (1M context) --- docker/java-base/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/java-base/Dockerfile b/docker/java-base/Dockerfile index 242817a6ab98..67e4f225d19d 100644 --- a/docker/java-base/Dockerfile +++ b/docker/java-base/Dockerfile @@ -37,10 +37,13 @@ RUN apt update && \ # - jdk.jcmd: jcmd command for VM.native_memory and other diagnostics # - jdk.attach: Required for diagnostic tool attachment to running JVMs # Note: jstack and jmap are included in jdk.jcmd in modern Java versions +# - jdk.net: extended socket options (jdk.net.Sockets / ExtendedSocketOptions). httpcore5 5.4+ touches +# them on every new connection, so without this module the OpenSearch client's I/O thread dies with +# NoClassDefFoundError and every request hangs RUN bash -c "source $SDKMAN_DIR/bin/sdkman-init.sh && jlink \ --verbose \ --add-modules \ - java.base,jdk.crypto.ec,jdk.jdwp.agent,jdk.management,jdk.management.agent,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,jdk.unsupported,java.scripting,java.rmi,jdk.compiler,jdk.zipfs,jdk.naming.dns,jdk.localedata,java.xml,jdk.xml.dom,jdk.jfr,jdk.management.jfr,jdk.jcmd,jdk.attach,java.net.http \ + java.base,jdk.crypto.ec,jdk.jdwp.agent,jdk.management,jdk.management.agent,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,jdk.unsupported,java.scripting,java.rmi,jdk.compiler,jdk.zipfs,jdk.naming.dns,jdk.localedata,java.xml,jdk.xml.dom,jdk.jfr,jdk.management.jfr,jdk.jcmd,jdk.attach,java.net.http,jdk.net \ --compress 2 \ --no-header-files \ --no-man-pages \