clj-commons / pomegranate

A sane Clojure API for Maven Artifact Resolver + dynamic runtime modification of the classpath
507 stars 61 forks source link

Add option to configure deploy timeouts #203

Closed ejschoen closed 3 months ago

ejschoen commented 3 months ago

There's an open issue on Leiningen on Codeberg about this:

https://codeberg.org/leiningen/leiningen/issues/46

There appears to be a 1.5 second deploy timeout that can be a problem when publishing to a remote, slow repo such as Artifactory. Is there a way to configure the deploy timeout to be more lax, or is there a clear place to add that option? Similarly, is there a way to enable logging of the HTTP client under the HTTP wagon? The equivalent of setting:

-Dorg.slf4j.simpleLogger.log.org.apache.maven.wagon.providers.http.httpclient=debug

on the mvn command line? I've tried through a Leiningen profile, but it makes no difference.

lread commented 3 months ago

Hi @ejschoen,

Thanks for raising an issue. I can take a peek for you sometime soon.

lread commented 3 months ago

I think I might have partly figured out your logging issue. I expect you found that logging system property from the mvn tool? Maven inlines some libs, but pomegranate does not.

I tried the following from pomegranate and got some ouput:

-Dorg.slf4j.simpleLogger.log.org.apache.http.client=DEBUG

But if you are doing this from leningen, it might not make a difference because I think it might disable logging. I'm sure you can get around that somehow though.

lread commented 3 months ago

@ejschoen can you paste the exact timeout error you got?

ejschoen commented 3 months ago

Here's a long Jenkins transcript. This is from uberjar-deploy, but we see identical failures randomly in deploy. I've lightly sanitized it.

For what it's worth, this might be a viable workaround... I appended to the bottom of each project.clj file:

(cemerick.pomegranate.aether/register-wagon-factory! "https"
   #(eval '(doto (org.apache.maven.wagon.providers.http.HttpWagon.) (.setTimeout 60000) (.setReadTimeout 60000))))

If so, it'd be nice to be able to globalize this so I don't have to do it in each project.clj we have. I don't know if lein-parent, for example, executes random lines of code in a parent project file.

Here's the transcript

+ lein uberjar-deploy
Preparing to deploy uberjar
Running: lein deploy snapshots i2kconnect/i2kxxx 1.0.0-SNAPSHOT /var/jenkins_home/workspace/i2kxxx-pipeline-master/i2kxxx/target/i2kxxx-1.0.0-SNAPSHOT-standalone.jar pom.xml
Could not transfer metadata i2kconnect:i2kxxx:1.0.0-SNAPSHOT/maven-metadata.xml from/to snapshots (https://myslowhost.com/artifactory/libs-snapshot): transfer failed for https://myslowhost.com/artifactory/libs-snapshot/i2kconnect/i2kxxx/1.0.0-SNAPSHOT/maven-metadata.xml
org.eclipse.aether.deployment.DeploymentException: Failed to retrieve remote metadata i2kconnect:i2kxxx:1.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata i2kconnect:i2kxxx:1.0.0-SNAPSHOT/maven-metadata.xml from/to snapshots (https://myslowhost.com/artifactory/libs-snapshot): transfer failed for https://myslowhost.com/artifactory/libs-snapshot/i2kconnect/i2kxxx/1.0.0-SNAPSHOT/maven-metadata.xml
 at org.eclipse.aether.internal.impl.DefaultDeployer.upload (DefaultDeployer.java:433)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:262)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:219)
    org.eclipse.aether.internal.impl.DefaultRepositorySystem.deploy (DefaultRepositorySystem.java:437)
    cemerick.pomegranate.aether$deploy_artifacts.invokeStatic (aether.clj:393)
    cemerick.pomegranate.aether$deploy_artifacts.doInvoke (aether.clj:356)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cemerick.pomegranate.aether$deploy.invokeStatic (aether.clj:494)
    cemerick.pomegranate.aether$deploy.doInvoke (aether.clj:433)
    clojure.lang.RestFn.invoke (RestFn.java:1096)
    leiningen.deploy$deploy.invokeStatic (deploy.clj:258)
    leiningen.deploy$deploy.doInvoke (deploy.clj:195)
    clojure.lang.RestFn.invoke (RestFn.java:529)
    leiningen.uberjar_deploy$uberjar_deploy.invokeStatic (uberjar_deploy.clj:20)
    leiningen.uberjar_deploy$uberjar_deploy.doInvoke (uberjar_deploy.clj:8)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$partial_task$fn__7430.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    lein_environ.plugin$write_env_to_file.invokeStatic (plugin.clj:29)
    lein_environ.plugin$write_env_to_file.invoke (plugin.clj:27)
    clojure.lang.AFn.applyToHelper (AFn.java:165)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$compose_hooks$fn__12086.doInvoke (hooke.clj:40)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$run_hooks.invokeStatic (hooke.clj:46)
    robert.hooke$run_hooks.invoke (hooke.clj:45)
    robert.hooke$prepare_for_hooks$fn__12091$fn__12092.doInvoke (hooke.clj:54)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:343)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7523.invoke (main.clj:469)
    leiningen.core.main$_main.invokeStatic (main.clj:454)
    leiningen.core.main$_main.doInvoke (main.clj:451)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)
Caused by: org.eclipse.aether.transfer.MetadataTransferException: Could not transfer metadata i2kconnect:i2kxxx:1.0.0-SNAPSHOT/maven-metadata.xml from/to snapshots (https://myslowhost.com/artifactory/libs-snapshot): transfer failed for https://myslowhost.com/artifactory/libs-snapshot/i2kconnect/i2kxxx/1.0.0-SNAPSHOT/maven-metadata.xml
 at org.eclipse.aether.connector.basic.MetadataTransportListener.transferFailed (MetadataTransportListener.java:52)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:388)
    org.eclipse.aether.util.concurrency.RunnableErrorForwarder.lambda$wrap$0 (RunnableErrorForwarder.java:73)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:635)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:239)
    org.eclipse.aether.internal.impl.DefaultDeployer.upload (DefaultDeployer.java:405)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:262)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:219)
    org.eclipse.aether.internal.impl.DefaultRepositorySystem.deploy (DefaultRepositorySystem.java:437)
    cemerick.pomegranate.aether$deploy_artifacts.invokeStatic (aether.clj:393)
    cemerick.pomegranate.aether$deploy_artifacts.doInvoke (aether.clj:356)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cemerick.pomegranate.aether$deploy.invokeStatic (aether.clj:494)
    cemerick.pomegranate.aether$deploy.doInvoke (aether.clj:433)
    clojure.lang.RestFn.invoke (RestFn.java:1096)
    leiningen.deploy$deploy.invokeStatic (deploy.clj:258)
    leiningen.deploy$deploy.doInvoke (deploy.clj:195)
    clojure.lang.RestFn.invoke (RestFn.java:529)
    leiningen.uberjar_deploy$uberjar_deploy.invokeStatic (uberjar_deploy.clj:20)
    leiningen.uberjar_deploy$uberjar_deploy.doInvoke (uberjar_deploy.clj:8)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$partial_task$fn__7430.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    lein_environ.plugin$write_env_to_file.invokeStatic (plugin.clj:29)
    lein_environ.plugin$write_env_to_file.invoke (plugin.clj:27)
    clojure.lang.AFn.applyToHelper (AFn.java:165)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$compose_hooks$fn__12086.doInvoke (hooke.clj:40)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$run_hooks.invokeStatic (hooke.clj:46)
    robert.hooke$run_hooks.invoke (hooke.clj:45)
    robert.hooke$prepare_for_hooks$fn__12091$fn__12092.doInvoke (hooke.clj:54)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:343)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7523.invoke (main.clj:469)
    leiningen.core.main$_main.invokeStatic (main.clj:454)
    leiningen.core.main$_main.doInvoke (main.clj:451)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)
Caused by: org.apache.maven.wagon.TransferFailedException: transfer failed for https://myslowhost.com/artifactory/libs-snapshot/i2kconnect/i2kxxx/1.0.0-SNAPSHOT/maven-metadata.xml
 at org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1250)
    org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1140)
    org.apache.maven.wagon.StreamWagon.getInputStream (StreamWagon.java:126)
    org.apache.maven.wagon.StreamWagon.getIfNewer (StreamWagon.java:88)
    org.apache.maven.wagon.StreamWagon.get (StreamWagon.java:61)
    org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run (WagonTransporter.java:523)
    org.eclipse.aether.transport.wagon.WagonTransporter.execute (WagonTransporter.java:429)
    org.eclipse.aether.transport.wagon.WagonTransporter.get (WagonTransporter.java:403)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask (BasicRepositoryConnector.java:466)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:383)
    org.eclipse.aether.util.concurrency.RunnableErrorForwarder.lambda$wrap$0 (RunnableErrorForwarder.java:73)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:635)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:239)
    org.eclipse.aether.internal.impl.DefaultDeployer.upload (DefaultDeployer.java:405)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:262)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:219)
    org.eclipse.aether.internal.impl.DefaultRepositorySystem.deploy (DefaultRepositorySystem.java:437)
    cemerick.pomegranate.aether$deploy_artifacts.invokeStatic (aether.clj:393)
    cemerick.pomegranate.aether$deploy_artifacts.doInvoke (aether.clj:356)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cemerick.pomegranate.aether$deploy.invokeStatic (aether.clj:494)
    cemerick.pomegranate.aether$deploy.doInvoke (aether.clj:433)
    clojure.lang.RestFn.invoke (RestFn.java:1096)
    leiningen.deploy$deploy.invokeStatic (deploy.clj:258)
    leiningen.deploy$deploy.doInvoke (deploy.clj:195)
    clojure.lang.RestFn.invoke (RestFn.java:529)
    leiningen.uberjar_deploy$uberjar_deploy.invokeStatic (uberjar_deploy.clj:20)
    leiningen.uberjar_deploy$uberjar_deploy.doInvoke (uberjar_deploy.clj:8)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$partial_task$fn__7430.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    lein_environ.plugin$write_env_to_file.invokeStatic (plugin.clj:29)
    lein_environ.plugin$write_env_to_file.invoke (plugin.clj:27)
    clojure.lang.AFn.applyToHelper (AFn.java:165)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$compose_hooks$fn__12086.doInvoke (hooke.clj:40)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$run_hooks.invokeStatic (hooke.clj:46)
    robert.hooke$run_hooks.invoke (hooke.clj:45)
    robert.hooke$prepare_for_hooks$fn__12091$fn__12092.doInvoke (hooke.clj:54)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:343)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7523.invoke (main.clj:469)
    leiningen.core.main$_main.invokeStatic (main.clj:454)
    leiningen.core.main$_main.doInvoke (main.clj:451)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)
Caused by: java.net.SocketTimeoutException: Read timed out
 at java.net.SocketInputStream.socketRead0 (SocketInputStream.java:-2)
    java.net.SocketInputStream.socketRead (SocketInputStream.java:115)
    java.net.SocketInputStream.read (SocketInputStream.java:168)
    java.net.SocketInputStream.read (SocketInputStream.java:140)
    sun.security.ssl.SSLSocketInputRecord.read (SSLSocketInputRecord.java:484)
    sun.security.ssl.SSLSocketInputRecord.readHeader (SSLSocketInputRecord.java:478)
    sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket (SSLSocketInputRecord.java:70)
    sun.security.ssl.SSLSocketImpl.readApplicationRecord (SSLSocketImpl.java:1459)
    sun.security.ssl.SSLSocketImpl$AppInputStream.read (SSLSocketImpl.java:1070)
    org.apache.http.impl.io.SessionInputBufferImpl.streamRead (SessionInputBufferImpl.java:137)
    org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer (SessionInputBufferImpl.java:153)
    org.apache.http.impl.io.SessionInputBufferImpl.readLine (SessionInputBufferImpl.java:280)
    org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead (DefaultHttpResponseParser.java:138)
    org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead (DefaultHttpResponseParser.java:56)
    org.apache.http.impl.io.AbstractMessageParser.parse (AbstractMessageParser.java:259)
    org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader (DefaultBHttpClientConnection.java:163)
    org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader (CPoolProxy.java:157)
    org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse (HttpRequestExecutor.java:273)
    org.apache.http.protocol.HttpRequestExecutor.execute (HttpRequestExecutor.java:125)
    org.apache.http.impl.execchain.MainClientExec.execute (MainClientExec.java:272)
    org.apache.http.impl.execchain.ProtocolExec.execute (ProtocolExec.java:186)
    org.apache.http.impl.execchain.RetryExec.execute (RetryExec.java:89)
    org.apache.http.impl.execchain.RedirectExec.execute (RedirectExec.java:110)
    org.apache.http.impl.client.InternalHttpClient.doExecute (InternalHttpClient.java:185)
    org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:83)
    org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.execute (AbstractHttpClientWagon.java:1005)
    org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1162)
    org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1140)
    org.apache.maven.wagon.StreamWagon.getInputStream (StreamWagon.java:126)
    org.apache.maven.wagon.StreamWagon.getIfNewer (StreamWagon.java:88)
    org.apache.maven.wagon.StreamWagon.get (StreamWagon.java:61)
    org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run (WagonTransporter.java:523)
    org.eclipse.aether.transport.wagon.WagonTransporter.execute (WagonTransporter.java:429)
    org.eclipse.aether.transport.wagon.WagonTransporter.get (WagonTransporter.java:403)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask (BasicRepositoryConnector.java:466)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:383)
    org.eclipse.aether.util.concurrency.RunnableErrorForwarder.lambda$wrap$0 (RunnableErrorForwarder.java:73)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:635)
    org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:239)
    org.eclipse.aether.internal.impl.DefaultDeployer.upload (DefaultDeployer.java:405)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:262)
    org.eclipse.aether.internal.impl.DefaultDeployer.deploy (DefaultDeployer.java:219)
    org.eclipse.aether.internal.impl.DefaultRepositorySystem.deploy (DefaultRepositorySystem.java:437)
    cemerick.pomegranate.aether$deploy_artifacts.invokeStatic (aether.clj:393)
    cemerick.pomegranate.aether$deploy_artifacts.doInvoke (aether.clj:356)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    cemerick.pomegranate.aether$deploy.invokeStatic (aether.clj:494)
    cemerick.pomegranate.aether$deploy.doInvoke (aether.clj:433)
    clojure.lang.RestFn.invoke (RestFn.java:1096)
    leiningen.deploy$deploy.invokeStatic (deploy.clj:258)
    leiningen.deploy$deploy.doInvoke (deploy.clj:195)
    clojure.lang.RestFn.invoke (RestFn.java:529)
    leiningen.uberjar_deploy$uberjar_deploy.invokeStatic (uberjar_deploy.clj:20)
    leiningen.uberjar_deploy$uberjar_deploy.doInvoke (uberjar_deploy.clj:8)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$partial_task$fn__7430.doInvoke (main.clj:284)
    clojure.lang.RestFn.invoke (RestFn.java:410)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    leiningen.core.main$apply_task.invokeStatic (main.clj:334)
    leiningen.core.main$apply_task.invoke (main.clj:320)
    lein_environ.plugin$write_env_to_file.invokeStatic (plugin.clj:29)
    lein_environ.plugin$write_env_to_file.invoke (plugin.clj:27)
    clojure.lang.AFn.applyToHelper (AFn.java:165)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:669)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$compose_hooks$fn__12086.doInvoke (hooke.clj:40)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.core$apply.invoke (core.clj:662)
    robert.hooke$run_hooks.invokeStatic (hooke.clj:46)
    robert.hooke$run_hooks.invoke (hooke.clj:45)
    robert.hooke$prepare_for_hooks$fn__12091$fn__12092.doInvoke (hooke.clj:54)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.AFunction$1.doInvoke (AFunction.java:31)
    clojure.lang.RestFn.invoke (RestFn.java:436)
    leiningen.core.main$resolve_and_apply.invokeStatic (main.clj:343)
    leiningen.core.main$resolve_and_apply.invoke (main.clj:336)
    leiningen.core.main$_main$fn__7523.invoke (main.clj:469)
    leiningen.core.main$_main.invokeStatic (main.clj:454)
    leiningen.core.main$_main.doInvoke (main.clj:451)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.core$apply.invokeStatic (core.clj:667)
    clojure.main$main_opt.invokeStatic (main.clj:514)
    clojure.main$main_opt.invoke (main.clj:510)
    clojure.main$main.invokeStatic (main.clj:664)
    clojure.main$main.doInvoke (main.clj:616)
    clojure.lang.RestFn.applyTo (RestFn.java:137)
    clojure.lang.Var.applyTo (Var.java:705)
    clojure.main.main (main.java:40)
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // configFileProvider
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE
lread commented 3 months ago

@ejschoen did you try out the maven.wagon.rto system property? Leininingen implies it is for downloading only, but I think it is more general than that.

The default read timeout in the maven wagon lib is 30 minutes, but leiningen overrides this to 10 seconds.

ejschoen commented 3 months ago

I did try maven.wagen.rto, but it didn't make a difference. However, it's more than likely that I didn't actually get it set correctly (:jvm-opts vs. LEIN_JVM_OPTS). I can try that as well, but this was what drove me to ask about logging in addition to timeouts.

For what it's worth, reading the wagon source... setTimeout and setReadTimeout affect socket and connection timeout in the HTTP client. But I'd have to look back at the code to see which Wagon call sets which HTTP client timeout option.

lread commented 3 months ago

If maven.wagon.rto does the trick, we could probably close this issue. Do you agree?

Reading the lein source, it seems that the leiningen docs are correct in their description of how to set this system property.

ejschoen commented 3 months ago

Yes, go ahead and close it. I'll open a new issue if I see the problem in the future. I'm setting LEIN_JVM_OPTS to -Dmaven.wagon.rto=60000 and none of the builds that were timing out are now timing out. It's been random before this, but the probability of failure was pretty high, and now it's apparently 0. Thanks for the quick response!

lread commented 3 months ago

Sounds good @ejschoen; I am glad that you have something that is working for you!

technomancy commented 2 months ago

FWIW I've removed the override from Leiningen; this probably came from a time when Maven's setting was too low or something. Thanks!