https://bz.apache.org/bugzilla/show_bug.cgi?id=69631
Bug ID: 69631
Summary: java.nio.channels.WritePendingException when using
https-openssl-nio2 and virtual threads
Product: Tomcat 11
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Connectors
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: -------
When HTTPS is used in combination with Http11Nio2Protocol via OpenSSL and
useVirtualThreads is set to true, occasional exceptions are observed only with
the stacktrace and without a timestamp (a logger does not seem to be used).
```
Exception in thread "https-openssl-nio2-8443-virt-11363"
java.nio.channels.WritePendingException
at
java.base/sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:352)
at
java.base/sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:399)
at
org.apache.tomcat.util.net.SecureNio2Channel$4.completed(SecureNio2Channel.java:1278)
at
org.apache.tomcat.util.net.SecureNio2Channel$4.completed(SecureNio2Channel.java:1272)
at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:129)
at java.base/sun.nio.ch.Invoker$2.run(Invoker.java:221)
at
java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
at java.base/java.lang.VirtualThread.run(VirtualThread.java:329)
```
Our configuration is as follows
```
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener
className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener
className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener"
useAprConnector="true"/>
<Listener
className="org.apache.catalina.security.TLSCertificateReloadListener"/>
<Service name="Catalina">
<Executor
className="org.apache.catalina.core.StandardVirtualThreadExecutor"/>
<Connector
protocol="org.apache.coyote.http11.Http11Nio2Protocol" port="8080"
useVirtualThreads="true"/>
<Connector
protocol="org.apache.coyote.http11.Http11Nio2Protocol" port="8443"
useVirtualThreads="true" SSLEnabled="true" scheme="https" secure="true">
<UpgradeProtocol
className="org.apache.coyote.http2.Http2Protocol"/>
<SSLHostConfig honorCipherOrder="false"
protocols="TLSv1.2,TLSv1.3" disableSessionTickets="true">
<Certificate
certificateKeyFile="${TLS_CERTIFICATE_KEY_FILE}"
certificateKeyPassword="${TLS_CERTIFICATE_KEY_PASSWORD}"
certificateFile="${TLS_CERTIFICATE_FILE}"
certificateChainFile="${TLS_CERTIFICATE_CHAIN_FILE}"
type="${TLS_TYPE:-EC}"/>
</SSLHostConfig>
</Connector>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve
className="org.apache.catalina.valves.ErrorReportValve" showReport="false"
showServerInfo="false"/>
</Host>
</Engine>
</Service>
</Server>
```
Version of Java
```
openjdk version "21.0.6" 2025-01-21 LTS
OpenJDK Runtime Environment Zulu21.40+17-CA (build 21.0.6+7-LTS)
OpenJDK 64-Bit Server VM Zulu21.40+17-CA (build 21.0.6+7-LTS, mixed mode,
sharing)
```
Other versions:
- APR 1.7.5
- OpenSSL 3.4.1
- TC-Native 2.0.8
- Tomcat 11.0.5
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]