You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2024/11/14 10:34:23 UTC
(maven-resolver) branch master updated: [MRESOLVER-629] JDK transport should default to HTTP/1.1 (#600)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new 30f95a1e [MRESOLVER-629] JDK transport should default to HTTP/1.1 (#600)
30f95a1e is described below
commit 30f95a1e66830e4418153ace42ea6bb886fc88e8
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Thu Nov 14 11:34:19 2024 +0100
[MRESOLVER-629] JDK transport should default to HTTP/1.1 (#600)
As it cannot cope well with HTTP/2 GOAWAY frame
---
https://issues.apache.org/jira/browse/MRESOLVER-629
---
.../eclipse/aether/internal/test/util/http/HttpTransporterTest.java | 3 +++
.../aether/transport/jdk/JdkTransporterConfigurationKeys.java | 2 +-
.../java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java | 5 +++++
src/site/markdown/configuration.md | 2 +-
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
index b7681199..2c709de5 100644
--- a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
+++ b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java
@@ -581,6 +581,7 @@ public class HttpTransporterTest {
protected void testGet_HTTPS_HTTP2Only_Insecure_SecurityMode() throws Exception {
// here we use alternate server-store-selfigned key (as the key set it static initializer is probably already
// used to init SSLContext/SSLSocketFactory/etc
+ enableHttp2Protocol();
session.setConfigProperty(
ConfigurationProperties.HTTPS_SECURITY_MODE, ConfigurationProperties.HTTPS_SECURITY_MODE_INSECURE);
httpServer.addSelfSignedSslConnectorHttp2Only();
@@ -596,6 +597,8 @@ public class HttpTransporterTest {
assertEquals(task.getDataString(), listener.getBaos().toString(StandardCharsets.UTF_8));
}
+ protected void enableHttp2Protocol() {}
+
@Test
protected void testGet_Redirect() throws Exception {
httpServer.addSslConnector();
diff --git a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporterConfigurationKeys.java b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporterConfigurationKeys.java
index 92bf1cad..83b72fa3 100644
--- a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporterConfigurationKeys.java
+++ b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporterConfigurationKeys.java
@@ -42,7 +42,7 @@ public final class JdkTransporterConfigurationKeys {
*/
public static final String CONFIG_PROP_HTTP_VERSION = CONFIG_PROPS_PREFIX + "httpVersion";
- public static final String DEFAULT_HTTP_VERSION = "HTTP_2";
+ public static final String DEFAULT_HTTP_VERSION = "HTTP_1_1";
/**
* The hard limit of maximum concurrent requests JDK transport can do. This is a workaround for the fact, that in
diff --git a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java
index 9bcd1395..3d972c00 100644
--- a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java
+++ b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java
@@ -93,6 +93,11 @@ class JdkTransporterTest extends HttpTransporterTest {
super(() -> new JdkTransporterFactory(standardChecksumExtractor(), new DefaultPathProcessor()));
}
+ @Override
+ protected void enableHttp2Protocol() {
+ session.setConfigProperty(JdkTransporterConfigurationKeys.CONFIG_PROP_HTTP_VERSION, "HTTP_2");
+ }
+
@Test
void enhanceConnectExceptionMessages() {
String uri = "https://localhost:12345/";
diff --git a/src/site/markdown/configuration.md b/src/site/markdown/configuration.md
index 84747e6c..65d06686 100644
--- a/src/site/markdown/configuration.md
+++ b/src/site/markdown/configuration.md
@@ -132,7 +132,7 @@ under the License.
| 106. | `"aether.transport.http.supportWebDav"` | `Boolean` | Boolean flag should the HTTP transport support WebDAV remote. Not all transport support this option. | `false` | 2.0.0 (moved out from maven-resolver-transport-http). | Yes | Session Configuration |
| 107. | `"aether.transport.http.userAgent"` | `String` | The user agent that repository connectors should report to servers. | `"Aether"` | | No | Session Configuration |
| 108. | `"aether.transport.https.securityMode"` | `String` | The mode that sets HTTPS transport "security mode": to ignore any SSL errors (certificate validity checks, hostname verification). The default value is <code>#HTTPS_SECURITY_MODE_DEFAULT</code> . | `"default"` | 1.9.6 | Yes | Session Configuration |
-| 109. | `"aether.transport.jdk.httpVersion"` | `String` | Use string representation of HttpClient version enum "HTTP_2" or "HTTP_1_1" to set default HTTP protocol to use. | `"HTTP_2"` | 2.0.0 | Yes | Session Configuration |
+| 109. | `"aether.transport.jdk.httpVersion"` | `String` | Use string representation of HttpClient version enum "HTTP_2" or "HTTP_1_1" to set default HTTP protocol to use. | `"HTTP_1_1"` | 2.0.0 | Yes | Session Configuration |
| 110. | `"aether.transport.jdk.maxConcurrentRequests"` | `Integer` | The hard limit of maximum concurrent requests JDK transport can do. This is a workaround for the fact, that in HTTP/2 mode, JDK HttpClient initializes this value to Integer.MAX_VALUE (!) and lowers it on first response from the remote server (but it may be too late). See JDK bug <a href="https://bugs.openjdk.org/browse/JDK-8225647">JDK-8225647</a> for details. | `100` | 2.0.0 | Yes | Session Configuration |
| 111. | `"aether.transport.jetty.followRedirects"` | `Boolean` | If enabled, Jetty client will follow HTTP redirects. | `true` | 2.0.1 | Yes | Session Configuration |
| 112. | `"aether.transport.jetty.maxRedirects"` | `Integer` | The max redirect count to follow. | `5` | 2.0.1 | Yes | Session Configuration |