Skip to content

Conversation

@lhotari
Copy link
Member

@lhotari lhotari commented Oct 27, 2020

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.
Copy link
Contributor

@eolivelli eolivelli left a comment

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
Copy link
Contributor

Ghatage commented Oct 27, 2020

Awesome, thanks and welcome @lhotari !

@lhotari
Copy link
Member Author

lhotari commented Oct 27, 2020

@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