[jira] [Commented] (CXF-8987) Java 21 - HttpClientHTTPConduit thread locked during shutdown
[ https://issues.apache.org/jira/browse/CXF-8987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17834027#comment-17834027 ] Freeman Yue Fang commented on CXF-8987: --- Hi [~carnevalegiacomo], Is it possible that you append a reproducer project so that we can reproduce this behaviour easily? Thanks! Freeman > Java 21 - HttpClientHTTPConduit thread locked during shutdown > -- > > Key: CXF-8987 > URL: https://issues.apache.org/jira/browse/CXF-8987 > Project: CXF > Issue Type: Bug > Components: Transports >Affects Versions: 4.0.3, 4.0.4 > Environment: [^thdump2] > *OpenJDK 21.0.2* > *Apache CXF 4.0.4* > *Apache Camel 4.4.1* >Reporter: Giacomo Carnevale >Priority: Blocker > Attachments: thdump2 > > > Hi, > I am using Apache CXF client via the Apache Camel CXF connector. > After I updated frm OpenJDK 17.x to OpenJDK 21.0.2, during application > shutdown, the following lock occurs: > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2072)* > *- locked <0x00061cd2ab80> (a > jdk.internal.net.http.HttpClientImpl$SelectorManager)* > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2200)* > *at > jdk.internal.net.http.HttpClientImpl.awaitTermination(java.net.http@21.0.2/HttpClientImpl.java:628)* > *at > java.net.http.HttpClient.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClient.java:900)* > *at > jdk.internal.net.http.HttpClientFacade.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClientFacade.java:192)* > *at > org.apache.cxf.transport.http.HttpClientHTTPConduit.{color:#de350b}close{color}(HttpClientHTTPConduit.java:125)* > HttpClientHTTPConduit.close > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > ((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} > > java.net.HttpClient.close > > {code:java} > public void close() { > boolean terminated = isTerminated(); > if (!terminated) { > shutdown(); > boolean interrupted = false; > while (!terminated) { > try { > terminated = awaitTermination(Duration.ofDays(1L)); > } catch (InterruptedException e) { > if (!interrupted) { > interrupted = true; > shutdownNow(); > if (isTerminated()) break; > } > } > } > if (interrupted) { > Thread.currentThread().interrupt(); > } > } > } {code} > My workaround > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > client.shutdownNow(); > //((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (CXF-8987) Java 21 - HttpClientHTTPConduit thread locked during shutdown
[ https://issues.apache.org/jira/browse/CXF-8987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17833604#comment-17833604 ] Andriy Redko commented on CXF-8987: --- Thanks a lot for confirming, [~carnevalegiacomo] , will be looking into it shortly. > Java 21 - HttpClientHTTPConduit thread locked during shutdown > -- > > Key: CXF-8987 > URL: https://issues.apache.org/jira/browse/CXF-8987 > Project: CXF > Issue Type: Bug > Components: Transports >Affects Versions: 4.0.3, 4.0.4 > Environment: [^thdump2] > *OpenJDK 21.0.2* > *Apache CXF 4.0.4* > *Apache Camel 4.4.1* >Reporter: Giacomo Carnevale >Priority: Blocker > Attachments: thdump2 > > > Hi, > I am using Apache CXF client via the Apache Camel CXF connector. > After I updated frm OpenJDK 17.x to OpenJDK 21.0.2, during application > shutdown, the following lock occurs: > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2072)* > *- locked <0x00061cd2ab80> (a > jdk.internal.net.http.HttpClientImpl$SelectorManager)* > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2200)* > *at > jdk.internal.net.http.HttpClientImpl.awaitTermination(java.net.http@21.0.2/HttpClientImpl.java:628)* > *at > java.net.http.HttpClient.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClient.java:900)* > *at > jdk.internal.net.http.HttpClientFacade.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClientFacade.java:192)* > *at > org.apache.cxf.transport.http.HttpClientHTTPConduit.{color:#de350b}close{color}(HttpClientHTTPConduit.java:125)* > HttpClientHTTPConduit.close > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > ((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} > > java.net.HttpClient.close > > {code:java} > public void close() { > boolean terminated = isTerminated(); > if (!terminated) { > shutdown(); > boolean interrupted = false; > while (!terminated) { > try { > terminated = awaitTermination(Duration.ofDays(1L)); > } catch (InterruptedException e) { > if (!interrupted) { > interrupted = true; > shutdownNow(); > if (isTerminated()) break; > } > } > } > if (interrupted) { > Thread.currentThread().interrupt(); > } > } > } {code} > My workaround > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > client.shutdownNow(); > //((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (CXF-8987) Java 21 - HttpClientHTTPConduit thread locked during shutdown
[ https://issues.apache.org/jira/browse/CXF-8987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17833499#comment-17833499 ] Giacomo Carnevale commented on CXF-8987: Hi same problem with OpenJdk 22 openjdk version "22" 2024-03-19 OpenJDK Runtime Environment (build 22+36-2370) OpenJDK 64-Bit Server VM (build 22+36-2370, mixed mode, sharing) |*Java Stack*|at java.lang.Object.wait0(java.base@22/Native Method) - waiting on [no object reference available] at java.lang.Object.wait(java.base@22/Object.java:375) at java.lang.Thread.join(java.base@22/Thread.java:2039) - locked [0x000618372e08] (a jdk.internal.net.http.HttpClientImpl$SelectorManager) at java.lang.Thread.join(java.base@22/Thread.java:2167) at jdk.internal.net.http.HttpClientImpl.awaitTermination(java.net.http@22/HttpClientImpl.java:632) at java.net.http.HttpClient.close(java.net.http@22/HttpClient.java:900) at jdk.internal.net.http.HttpClientFacade.close(java.net.http@22/HttpClientFacade.java:192) at org.apache.cxf.transport.http.HttpClientHTTPConduit.close(HttpClientHTTPConduit.java:125) at org.apache.cxf.endpoint.AbstractConduitSelector.close(AbstractConduitSelector.java:77) at org.apache.cxf.endpoint.ClientImpl.destroy(ClientImpl.java:177) at org.apache.camel.component.cxf.jaxws.CxfProducer.doStop(CxfProducer.java:93) at org.apache.camel.support.service.BaseService.stop(BaseService.java:154)| My workaround is to set system property org.apache.cxf.transport.http.forceURLConnection=true > Java 21 - HttpClientHTTPConduit thread locked during shutdown > -- > > Key: CXF-8987 > URL: https://issues.apache.org/jira/browse/CXF-8987 > Project: CXF > Issue Type: Bug > Components: Transports >Affects Versions: 4.0.3, 4.0.4 > Environment: [^thdump2] > *OpenJDK 21.0.2* > *Apache CXF 4.0.4* > *Apache Camel 4.4.1* >Reporter: Giacomo Carnevale >Priority: Blocker > Attachments: thdump2 > > > Hi, > I am using Apache CXF client via the Apache Camel CXF connector. > After I updated frm OpenJDK 17.x to OpenJDK 21.0.2, during application > shutdown, the following lock occurs: > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2072)* > *- locked <0x00061cd2ab80> (a > jdk.internal.net.http.HttpClientImpl$SelectorManager)* > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2200)* > *at > jdk.internal.net.http.HttpClientImpl.awaitTermination(java.net.http@21.0.2/HttpClientImpl.java:628)* > *at > java.net.http.HttpClient.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClient.java:900)* > *at > jdk.internal.net.http.HttpClientFacade.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClientFacade.java:192)* > *at > org.apache.cxf.transport.http.HttpClientHTTPConduit.{color:#de350b}close{color}(HttpClientHTTPConduit.java:125)* > HttpClientHTTPConduit.close > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > ((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} > > java.net.HttpClient.close > > {code:java} > public void close() { > boolean terminated = isTerminated(); > if (!terminated) { > shutdown(); > boolean interrupted = false; > while (!terminated) { > try { > terminated = awaitTermination(Duration.ofDays(1L)); > } catch (InterruptedException e) { > if (!interrupted) { > interrupted = true; > shutdownNow(); > if (isTerminated()) break; > } > } > } > if (interrupted) { > Thread.currentThread().interrupt(); > } > } > } {code} > My workaround > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > client.shutdownNow(); > //((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (CXF-8987) Java 21 - HttpClientHTTPConduit thread locked during shutdown
[ https://issues.apache.org/jira/browse/CXF-8987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17830282#comment-17830282 ] Andriy Redko commented on CXF-8987: --- [~carnevalegiacomo] thanks for reporting it, it seems to be fixed by [https://bugs.openjdk.org/browse/JDK-8316580,] could you please recheck if it is still reproducible on JDK-22? Thank you. > Java 21 - HttpClientHTTPConduit thread locked during shutdown > -- > > Key: CXF-8987 > URL: https://issues.apache.org/jira/browse/CXF-8987 > Project: CXF > Issue Type: Bug > Components: Transports >Affects Versions: 4.0.3, 4.0.4 > Environment: [^thdump2] > *OpenJDK 21.0.2* > *Apache CXF 4.0.4* > *Apache Camel 4.4.1* >Reporter: Giacomo Carnevale >Priority: Blocker > Attachments: thdump2 > > > Hi, > I am using Apache CXF client via the Apache Camel CXF connector. > After I updated frm OpenJDK 17.x to OpenJDK 21.0.2, during application > shutdown, the following lock occurs: > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2072)* > *- locked <0x00061cd2ab80> (a > jdk.internal.net.http.HttpClientImpl$SelectorManager)* > *at java.lang.Thread.join(java.base@21.0.2/Thread.java:2200)* > *at > jdk.internal.net.http.HttpClientImpl.awaitTermination(java.net.http@21.0.2/HttpClientImpl.java:628)* > *at > java.net.http.HttpClient.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClient.java:900)* > *at > jdk.internal.net.http.HttpClientFacade.{color:#de350b}close{color}(java.net.http@21.0.2/HttpClientFacade.java:192)* > *at > org.apache.cxf.transport.http.HttpClientHTTPConduit.{color:#de350b}close{color}(HttpClientHTTPConduit.java:125)* > HttpClientHTTPConduit.close > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > ((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} > > java.net.HttpClient.close > > {code:java} > public void close() { > boolean terminated = isTerminated(); > if (!terminated) { > shutdown(); > boolean interrupted = false; > while (!terminated) { > try { > terminated = awaitTermination(Duration.ofDays(1L)); > } catch (InterruptedException e) { > if (!interrupted) { > interrupted = true; > shutdownNow(); > if (isTerminated()) break; > } > } > } > if (interrupted) { > Thread.currentThread().interrupt(); > } > } > } {code} > My workaround > {code:java} > public void close() { > if (client instanceof AutoCloseable) { > try { > client.shutdownNow(); > //((AutoCloseable)client).close(); > } catch (Exception e) { > //ignore > } > } else if (client != null) { > String name = client.toString(); > client = null; > tryToShutdownSelector(name); > } > defaultAddress = null; > super.close(); > } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)