(cxf-xjc-utils) branch dependabot/maven/org.apache.maven.plugins-maven-checkstyle-plugin-3.4.0 deleted (was 64cf772)
This is an automated email from the ASF dual-hosted git repository. github-bot pushed a change to branch dependabot/maven/org.apache.maven.plugins-maven-checkstyle-plugin-3.4.0 in repository https://gitbox.apache.org/repos/asf/cxf-xjc-utils.git was 64cf772 Bump org.apache.maven.plugins:maven-checkstyle-plugin The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
(cxf-xjc-utils) branch main updated (6243f03 -> 7d117d8)
This is an automated email from the ASF dual-hosted git repository. reta pushed a change to branch main in repository https://gitbox.apache.org/repos/asf/cxf-xjc-utils.git from 6243f03 Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.3 to 3.7.0 (#148) add 7d117d8 Bump org.apache.maven.plugins:maven-checkstyle-plugin (#149) No new revisions were added by this update. Summary of changes: pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
(cxf-xjc-utils) branch dependabot/maven/org.apache.maven.plugins-maven-checkstyle-plugin-3.4.0 created (now 64cf772)
This is an automated email from the ASF dual-hosted git repository. github-bot pushed a change to branch dependabot/maven/org.apache.maven.plugins-maven-checkstyle-plugin-3.4.0 in repository https://gitbox.apache.org/repos/asf/cxf-xjc-utils.git at 64cf772 Bump org.apache.maven.plugins:maven-checkstyle-plugin No new revisions were added by this update.
(cxf) branch 3.6.x-fixes updated (1a4c5067e2 -> a203878596)
This is an automated email from the ASF dual-hosted git repository. reta pushed a change to branch 3.6.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git from 1a4c5067e2 Fix checkstyle violations (post-merge) new c61883b0c1 Bump org.hsqldb:hsqldb from 2.7.2 to 2.7.3 (#1913) new ad9b7f9d7f CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850) new a203878596 Recording .gitmergeinfo Changes The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .gitmergeinfo | 4 ++ parent/pom.xml | 2 +- .../cxf/transport/http/HttpClientHTTPConduit.java | 55 +- .../systest/jaxrs/JAXRS20ClientServerBookTest.java | 46 +- 4 files changed, 84 insertions(+), 23 deletions(-)
(cxf) 02/03: CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850)
This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.6.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git commit ad9b7f9d7f7a1ec416406fe7f1fbbca225aa5612 Author: Andriy Redko AuthorDate: Wed Jun 5 09:40:48 2024 -0400 CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850) (cherry picked from commit b897c0e79d9f003c1a68c89ab49f652664cb7001) --- .../cxf/transport/http/HttpClientHTTPConduit.java | 55 +- .../systest/jaxrs/JAXRS20ClientServerBookTest.java | 46 +- 2 files changed, 79 insertions(+), 22 deletions(-) diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java index 6cc533931b..0c7be9e190 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java @@ -105,6 +105,7 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { volatile RefCount clientRef; volatile int lastTlsHash = -1; volatile URI sslURL; +private final ReentrantLock initializationLock = new ReentrantLock(); private static final class RefCount { private final AtomicLong count = new AtomicLong(); @@ -404,31 +405,43 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { cb.version(Version.HTTP_1_1); } -final boolean shareHttpClient = MessageUtils.getContextualBoolean(message, SHARE_HTTPCLIENT_CONDUIT, true); -cl = CLIENTS_CACHE.computeIfAbsent(shareHttpClient, csPolicy, clientParameters, () -> cb.build()); -if (!"https".equals(uri.getScheme()) -&& !KNOWN_HTTP_VERBS_WITH_NO_CONTENT.contains(httpRequestMethod) -&& cl.client().version() == Version.HTTP_2 -&& ("2".equals(verc) || ("auto".equals(verc) && "2".equals(HTTP_VERSION { -try { -// We specifically want HTTP2, but we're using a request -// that won't trigger an upgrade to HTTP/2 so we'll -// call OPTIONS on the URI which may trigger HTTP/2 upgrade. -// Not needed for methods that don't have a body (GET/HEAD/etc...) -// or for https (negotiated at the TLS level) -HttpRequest.Builder rb = HttpRequest.newBuilder() -.uri(uri) -.method("OPTIONS", BodyPublishers.noBody()); -cl.client().send(rb.build(), BodyHandlers.ofByteArray()); -} catch (IOException | InterruptedException e) { -// +// make sure the conduit is not yet initialized +initializationLock.lock(); +try { +cl = clientRef; +if (cl == null) { +final boolean shareHttpClient = MessageUtils.getContextualBoolean(message, +SHARE_HTTPCLIENT_CONDUIT, true); +cl = CLIENTS_CACHE.computeIfAbsent(shareHttpClient, csPolicy, clientParameters, () -> cb.build()); + +if (!"https".equals(uri.getScheme()) +&& !KNOWN_HTTP_VERBS_WITH_NO_CONTENT.contains(httpRequestMethod) +&& cl.client().version() == Version.HTTP_2 +&& ("2".equals(verc) || ("auto".equals(verc) && "2".equals(HTTP_VERSION { +try { +// We specifically want HTTP2, but we're using a request +// that won't trigger an upgrade to HTTP/2 so we'll +// call OPTIONS on the URI which may trigger HTTP/2 upgrade. +// Not needed for methods that don't have a body (GET/HEAD/etc...) +// or for https (negotiated at the TLS level) +HttpRequest.Builder rb = HttpRequest.newBuilder() +.uri(uri) +.method("OPTIONS", BodyPublishers.noBody()); +cl.client().send(rb.build(), BodyHandlers.ofByteArray()); +} catch (IOException | InterruptedException e) { +// +} +} + +clientRef = cl; } -} -clientRef = cl; +} finally { +initializationLock.unlock(); +} } message.put(HttpClient.class, cl.client()); -message.put(KEY_HTTP_CONNECTION_ADDRESS, address);
(cxf) 03/03: Recording .gitmergeinfo Changes
This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.6.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git commit a203878596abe1596df7725a99fcd0402abcb8b3 Author: Andriy Redko AuthorDate: Wed Jun 5 12:50:07 2024 -0400 Recording .gitmergeinfo Changes --- .gitmergeinfo | 4 1 file changed, 4 insertions(+) diff --git a/.gitmergeinfo b/.gitmergeinfo index 9ef9acfe4e..5738f016bb 100644 --- a/.gitmergeinfo +++ b/.gitmergeinfo @@ -247,6 +247,7 @@ M 11e88c7b208765b64a4dac129f37d0f9114ec05e M 120dd13bdf46dc70f93dd4908711d522454a5492 M 12817b13d75f2663a5dd5677196c2d5618af7476 M 12c5366eb31e852770d445ab23ab12a6d3ecda8c +M 13142ef111886d12b0257cf021809a5784481d84 M 1359339d23142652298e653ee8153114221b27c5 M 137d85d477562d122cfc525ce6e7a28f8f67b8b6 M 13b63145c3713690d77ecf6d90d73fca22b7816b @@ -390,6 +391,7 @@ M 38f782eb80c647fc36da50509bb234401d04202c M 38f8930b0364511a19da1eef8c1ea11b2c408dfa M 396c32848ff70a7cd77bfcd5ea80a4b4abe4c20c M 3983c304fcec6b40d60f3c804dd6537cf3b4d2c1 +M 398a196fe87cc7892586b31cfdcab25005ea43e0 M 39e6fb9f999ad9cd33cdb030ad1d299614a7a8f1 M 3a25cab6172083d26f2cc5f29a134c11214d5131 M 3a2897a5a01c657b2f2c5f87c855470cd092bc5f @@ -590,6 +592,7 @@ M 70f67d143f43dae2885a8e74cf4c23a2c2ef1210 M 710a2be5307b6e734d9533e8abd4848f48ec1f79 M 71824af87a40df9f1e4b39e5acf2739bd37e2c6f M 7220de723cabf2b8b5d403337c7aa9d0c7da8dac +M 7226804d39d494a3229319fcc85a95173f8fec00 M 732b168c9003c3bb7fe113c92287efb5cd42d10b M 7331c6dac952ff347008925ffd6a30a985b9e9df M 7348591d44cfa91244dea299bd698c8b908eac01 @@ -779,6 +782,7 @@ M ad8d6659fbc0f44fa635769d9da2dee2e5e2a016 M adbdb96ffca1989f3127b82c18752671df0a5019 M ae2fd1e8166595031df48d95f1160d49f3fd506e M af21744e02a97cc081f3392579238c10d18b7152 +M af7038490d5685a456d9f7e9e424a228416d1bf5 M af85f026d6c57aa79263e46657aba7e5d2d590ea M af898d2488816561f678b11b377e955dde0e10dd M afa9b3aea81c9dbfe27809ed4bd9bd405067
(cxf) 01/03: Bump org.hsqldb:hsqldb from 2.7.2 to 2.7.3 (#1913)
This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 3.6.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git commit c61883b0c19902de4636069c47e3bc1a0f052006 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> AuthorDate: Tue Jun 4 07:56:35 2024 -0400 Bump org.hsqldb:hsqldb from 2.7.2 to 2.7.3 (#1913) Bumps org.hsqldb:hsqldb from 2.7.2 to 2.7.3. --- updated-dependencies: - dependency-name: org.hsqldb:hsqldb dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit af7038490d5685a456d9f7e9e424a228416d1bf5) # Conflicts: # parent/pom.xml --- parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parent/pom.xml b/parent/pom.xml index 636fe72f78..f48559b312 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -120,7 +120,7 @@ 5.3.6 5.6.15.Final 6.2.5.Final -2.5.0 +2.7.3 [4.0,4.2) 4.1.5 4.5.14
(cxf) branch 4.0.x-fixes updated: CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850)
This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 4.0.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git The following commit(s) were added to refs/heads/4.0.x-fixes by this push: new a826a6e841 CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850) a826a6e841 is described below commit a826a6e841d9fb0f89369e7539ef7c63a587a1cb Author: Andriy Redko AuthorDate: Wed Jun 5 09:40:48 2024 -0400 CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850) (cherry picked from commit b897c0e79d9f003c1a68c89ab49f652664cb7001) --- .../cxf/transport/http/HttpClientHTTPConduit.java | 55 +- .../systest/jaxrs/JAXRS20ClientServerBookTest.java | 46 +- 2 files changed, 79 insertions(+), 22 deletions(-) diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java index 6cc533931b..0c7be9e190 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java @@ -105,6 +105,7 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { volatile RefCount clientRef; volatile int lastTlsHash = -1; volatile URI sslURL; +private final ReentrantLock initializationLock = new ReentrantLock(); private static final class RefCount { private final AtomicLong count = new AtomicLong(); @@ -404,31 +405,43 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { cb.version(Version.HTTP_1_1); } -final boolean shareHttpClient = MessageUtils.getContextualBoolean(message, SHARE_HTTPCLIENT_CONDUIT, true); -cl = CLIENTS_CACHE.computeIfAbsent(shareHttpClient, csPolicy, clientParameters, () -> cb.build()); -if (!"https".equals(uri.getScheme()) -&& !KNOWN_HTTP_VERBS_WITH_NO_CONTENT.contains(httpRequestMethod) -&& cl.client().version() == Version.HTTP_2 -&& ("2".equals(verc) || ("auto".equals(verc) && "2".equals(HTTP_VERSION { -try { -// We specifically want HTTP2, but we're using a request -// that won't trigger an upgrade to HTTP/2 so we'll -// call OPTIONS on the URI which may trigger HTTP/2 upgrade. -// Not needed for methods that don't have a body (GET/HEAD/etc...) -// or for https (negotiated at the TLS level) -HttpRequest.Builder rb = HttpRequest.newBuilder() -.uri(uri) -.method("OPTIONS", BodyPublishers.noBody()); -cl.client().send(rb.build(), BodyHandlers.ofByteArray()); -} catch (IOException | InterruptedException e) { -// +// make sure the conduit is not yet initialized +initializationLock.lock(); +try { +cl = clientRef; +if (cl == null) { +final boolean shareHttpClient = MessageUtils.getContextualBoolean(message, +SHARE_HTTPCLIENT_CONDUIT, true); +cl = CLIENTS_CACHE.computeIfAbsent(shareHttpClient, csPolicy, clientParameters, () -> cb.build()); + +if (!"https".equals(uri.getScheme()) +&& !KNOWN_HTTP_VERBS_WITH_NO_CONTENT.contains(httpRequestMethod) +&& cl.client().version() == Version.HTTP_2 +&& ("2".equals(verc) || ("auto".equals(verc) && "2".equals(HTTP_VERSION { +try { +// We specifically want HTTP2, but we're using a request +// that won't trigger an upgrade to HTTP/2 so we'll +// call OPTIONS on the URI which may trigger HTTP/2 upgrade. +// Not needed for methods that don't have a body (GET/HEAD/etc...) +// or for https (negotiated at the TLS level) +HttpRequest.Builder rb = HttpRequest.newBuilder() +.uri(uri) +.method("OPTIONS", BodyPublishers.noBody()); +cl.client().send(rb.build(), BodyHandlers.ofByteArray()); +} catch (IOException | InterruptedException e) { +// +} +} + +clientRef = cl;
(cxf) branch main updated: CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850)
This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cxf.git The following commit(s) were added to refs/heads/main by this push: new b897c0e79d CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850) b897c0e79d is described below commit b897c0e79d9f003c1a68c89ab49f652664cb7001 Author: Andriy Redko AuthorDate: Wed Jun 5 09:40:48 2024 -0400 CXF-8951: Concurrent WebClient usage causes massive thread overhead (the case when single instance of WebClient is used from many threads) (#1850) --- .../cxf/transport/http/HttpClientHTTPConduit.java | 55 +- .../systest/jaxrs/JAXRS20ClientServerBookTest.java | 46 +- 2 files changed, 79 insertions(+), 22 deletions(-) diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java index 6cc533931b..0c7be9e190 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java @@ -105,6 +105,7 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { volatile RefCount clientRef; volatile int lastTlsHash = -1; volatile URI sslURL; +private final ReentrantLock initializationLock = new ReentrantLock(); private static final class RefCount { private final AtomicLong count = new AtomicLong(); @@ -404,31 +405,43 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { cb.version(Version.HTTP_1_1); } -final boolean shareHttpClient = MessageUtils.getContextualBoolean(message, SHARE_HTTPCLIENT_CONDUIT, true); -cl = CLIENTS_CACHE.computeIfAbsent(shareHttpClient, csPolicy, clientParameters, () -> cb.build()); -if (!"https".equals(uri.getScheme()) -&& !KNOWN_HTTP_VERBS_WITH_NO_CONTENT.contains(httpRequestMethod) -&& cl.client().version() == Version.HTTP_2 -&& ("2".equals(verc) || ("auto".equals(verc) && "2".equals(HTTP_VERSION { -try { -// We specifically want HTTP2, but we're using a request -// that won't trigger an upgrade to HTTP/2 so we'll -// call OPTIONS on the URI which may trigger HTTP/2 upgrade. -// Not needed for methods that don't have a body (GET/HEAD/etc...) -// or for https (negotiated at the TLS level) -HttpRequest.Builder rb = HttpRequest.newBuilder() -.uri(uri) -.method("OPTIONS", BodyPublishers.noBody()); -cl.client().send(rb.build(), BodyHandlers.ofByteArray()); -} catch (IOException | InterruptedException e) { -// +// make sure the conduit is not yet initialized +initializationLock.lock(); +try { +cl = clientRef; +if (cl == null) { +final boolean shareHttpClient = MessageUtils.getContextualBoolean(message, +SHARE_HTTPCLIENT_CONDUIT, true); +cl = CLIENTS_CACHE.computeIfAbsent(shareHttpClient, csPolicy, clientParameters, () -> cb.build()); + +if (!"https".equals(uri.getScheme()) +&& !KNOWN_HTTP_VERBS_WITH_NO_CONTENT.contains(httpRequestMethod) +&& cl.client().version() == Version.HTTP_2 +&& ("2".equals(verc) || ("auto".equals(verc) && "2".equals(HTTP_VERSION { +try { +// We specifically want HTTP2, but we're using a request +// that won't trigger an upgrade to HTTP/2 so we'll +// call OPTIONS on the URI which may trigger HTTP/2 upgrade. +// Not needed for methods that don't have a body (GET/HEAD/etc...) +// or for https (negotiated at the TLS level) +HttpRequest.Builder rb = HttpRequest.newBuilder() +.uri(uri) +.method("OPTIONS", BodyPublishers.noBody()); +cl.client().send(rb.build(), BodyHandlers.ofByteArray()); +} catch (IOException | InterruptedException e) { +// +} +} + +clientRef = cl; } -} -clientRef = cl; +} finally { +