Thanks for the reproducer and sorry for not reading thoroughly before. Indeed 
the connection pool is not configurable yet with the native connector. 
According to 
https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/conn/PoolingHttpClientConnectionManager.html
 stale connections are checked after 2 seconds before being reused but probably 
the check does not work for some reason with Azure….

> Am 27.03.2023 um 09:49 schrieb Michael Vitz 
> <vitz.mich...@googlemail.com.invalid>:
> 
> Hi Konrad,
> 
> The only two timeout related properties are aether.connector.requestTimeout
> and aether.connector.connectTimeout.
> Both do not solve my problem.
> 
> I created a GitHub project (
> https://github.com/mvitz/maven-39-gh-actions-timeouts) which reproduces the
> problem.
> It declares many dependencies/plugins to make sure the complete HTTP pool
> is used before the tests, contains a test that runs in total about 6
> minutes to take longer than the four-minute Azure timeout and uses Maven
> 3.9.1.
> 
> The first build (
> https://github.com/mvitz/maven-39-gh-actions-timeouts/actions/runs/4524745997/jobs/7968775993)
> uses -Daether.connector.requestTimeout=270000 which is longer than four
> minutes and fails.
> The second one (
> https://github.com/mvitz/maven-39-gh-actions-timeouts/actions/runs/4524925829/jobs/7969075725)
> uses -Daether.connector.connectTimeout=60000
> -Daether.connector.requestTimeout=180000 which is shorter but fails, too.
> 
> Both builds fail with:
> Error:  Failed to execute goal
> org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar (default-jar) on
> project maven-39-gh-actions-timeouts: Execution default-jar of goal
> org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar failed: Plugin
> org.apache.maven.plugins:maven-jar-plugin:3.3.0 or one of its dependencies
> could not be resolved: Failed to collect dependencies at
> org.apache.maven.plugins:maven-jar-plugin:jar:3.3.0 ->
> org.apache.maven.shared:file-management:jar:3.1.0: Failed to read artifact
> descriptor for org.apache.maven.shared:file-management:jar:3.1.0: The
> following artifacts could not be resolved:
> org.apache.maven.shared:file-management:pom:3.1.0 (absent): Could not
> transfer artifact org.apache.maven.shared:file-management:pom:3.1.0 from/to
> central (https://repo.maven.apache.org/maven2): Read timed out -> [Help 1]
> 
> I suspect that the HTTP pool is fully used before the tests, all
> connections are silently interrupted during the test run that takes longer
> than the Azure limit of four minutes, and the pool unable to recover any
> connection from that.
> 
> As told before when using wagon with -Dmaven.resolver.transport=wagon and
> configuring a pool time to love of 3 minutes via
> -Dmaven.wagon.httpconnectionManager.ttlSeconds=180 everything works as
> expected (
> https://github.com/mvitz/maven-39-gh-actions-timeouts/actions/runs/4529868249/jobs/7978093099
> ).
> 
> Regards,
> Michael
> 
> 
>> Am So., 26. März 2023 um 12:54 Uhr schrieb Konrad Windszus <konra...@gmx.de
>>> :
>> 
>> The timeouts are configurable even with new native connector:
>> https://maven.apache.org/resolver/configuration.html.
>> Please try if those settings help.
>> Konrad
>> 
>>> Am 25.03.2023 um 15:08 schrieb Michael Vitz <vitz.mich...@googlemail.com
>> .invalid>:
>>> 
>>> Hi all,
>>> 
>>> We recently switched from Maven 3.8.x to 3.9.x and all of a sudden, we
>> ran
>>> into connection timeouts during downloading the maven-jar-plugin after
>> all
>>> tests passed.
>>> 
>>> After some digging, I suspect that it is a combination of GitHub Actions
>>> running on Azure which silently drops open connections after around four
>>> minutes (see discussion in
>>> https://github.com/actions/runner-images/issues/1499) and the switch to
>> the
>>> native HTTP transport in Maven 3.9.x.
>>> Our tests take quite some time and because the maven-jar-plugin is
>> freshly
>>> downloaded after these, the used connection was opened before the tests
>>> were started and is dropped by Azure meanwhile.
>>> 
>>> Our current workaround is switching to the old Wagon HTTP provider (with
>>> -Dmaven.resolver.transport=wagon) and setting a TTL for the used HTTP
>> pool
>>> (-Dmaven.wagon.httpconnectionManager.ttlSeconds=180) or disabling the
>> pool
>>> and keep alive (-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false).
>>> 
>>> Unfortunately, the new HTTP transport does not allow changing the TTL
>>> (which by default is -1 which means forever) or disabling it altogether.
>> It
>>> would be nice if such settings would be added in one of the next
>> releases.
>>> 
>>> I would be happy to help/try to provide a patch on my own if this helps.
>>> 
>>> Regards,
>>> Michael
>> 

Reply via email to