Skip to content

Limit maven http connection pool TTL in Github flows - #2460

Merged
jiazhai merged 1 commit into
apache:masterfrom
lhotari:lh-configure-maven-http
Nov 4, 2020
Merged

Limit maven http connection pool TTL in Github flows#2460
jiazhai merged 1 commit into
apache:masterfrom
lhotari:lh-configure-maven-http

Conversation

@lhotari

@lhotari lhotari commented Oct 27, 2020

Copy link
Copy Markdown
Member

Motivation

Fixes "Transfer failed for https://repo.maven.apache.org/...
.jar: Connection reset" type of failures in Github Flows environment such as

Error:  Failed to execute goal on project bookkeeper-common: Could not resolve dependencies for project org.apache.bookkeeper:bookkeeper-common:jar:4.12.0-SNAPSHOT: Could not transfer artifact org.jctools:jctools-core:jar:2.1.2 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo.maven.apache.org/maven2/org/jctools/jctools-core/2.1.2/jctools-core-2.1.2.jar: Connection reset -> [Help 1]

Changes

Set maven.wagon.httpconnectionManager.ttlSeconds to 25 seconds.
Besides this, set maven.wagon.http.retryHandler.count to 3 retries.

https://issues.apache.org/jira/browse/WAGON-545
contains a recommendation "Azure users shall set the TTL to 240 seconds or less."

The reason for the 25 second TTL is to ensure that it's shorter than any common
firewall or NAT timeout. Some NATs have a 30 second idle timeout although
that is very rare. There shouldn't be harm in using the 25 second TTL since
the connection pool will be able to pool connections well with a 25 second TTL.

The documentation for maven.wagon.httpconnectionManager.ttlSeconds is
available in the source code:
https://github.com/apache/maven-wagon/blob/wagon-3.4.1/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java#L297-L305

Documentation for maven.wagon.http.retryHandler.count is in
https://maven.apache.org/wagon/wagon-providers/wagon-http/
"Any retry handler can only react to exceptions when executing the request and
receiving the response head. It will not salvage in-flight failures of ongoing
response body streams." Therefore the retry count setting is a bit
different than expected. WAGON-545 explains that ConnectionExceptions
aren't part of the retried exceptions by default. If such issues become
problems, it's possible to configure the retry handler in a more fine
grained way.

This is similar to the change made in Pulsar: apache/pulsar#8386

Fixes "Tranfer failed for https://repo.maven.apache.org/...
.jar: Connection reset" type of failures in Github Flows environment

Set maven.wagon.httpconnectionManager.ttlSeconds to 25 seconds.
Besides this, set maven.wagon.http.retryHandler.count to 3 retries.

https://issues.apache.org/jira/browse/WAGON-545
contains a recommendation "Azure users shall set the TTL to 240
seconds or less."

The reason for the 25 second TTL is to ensure that it's shorter than any common
firewall or NAT timeout. Some NATs have a 30 second idle timeout although
that is very rare. There shouldn't be harm in using the 25 second TTL since
the connection pool will be able to pool connections well with a 25 second TTL.

The documentation for maven.wagon.httpconnectionManager.ttlSeconds is
available in the source code:
https://github.com/apache/maven-wagon/blob/wagon-3.4.1/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java#L297-L305

Documentation for maven.wagon.http.retryHandler.count is in
https://maven.apache.org/wagon/wagon-providers/wagon-http/
"Any retry handler can only react to exceptions when executing the request and
receiving the response head. It will not salvage in-flight failures of ongoing
response body streams." Therefore the retry count setting is a bit
different than expected. WAGON-545 explains that ConnectionExceptions
aren't part of the retried exceptions by default. If such issues become
problems, it's possible to configure the retry handler in a more fine
grained way.

@eolivelli eolivelli left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
thank you @lhotari
welcome to BK community !

@Ghatage

Ghatage commented Oct 27, 2020

Copy link
Copy Markdown
Contributor

Awesome, thanks and welcome @lhotari !

@lhotari

lhotari commented Oct 27, 2020

Copy link
Copy Markdown
Member Author

@eolivelli @Ghatage Thank you. I'm happy to join the BK community.

@Ghatage Ghatage added this to the 4.12.0 milestone Oct 28, 2020
@jiazhai
jiazhai merged commit 775603a into apache:master Nov 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants