Code Monkey home page Code Monkey logo

Comments (8)

konradpabjan avatar konradpabjan commented on September 1, 2024 7

Retries have been added to all HTTP calls during artifact download with the latest v2 release. ECONNRESETs, 503 and a host of other errors should now be gracefully retried that previously were not. Each call will be retried up to 5 times with exponential back-off. If this issue comes up again please open up a new issue.

@wsnyder Backoff due to too many request (HTTP 429) can happen if a user is uploading or downloading a large amounts of artifacts or logs (both are effectively powered by the same backend infrastructure). It's a throttling mechanism so that a single user/org doesn't over overload our service or try to cause some sort of DDOS. If a 429 is received, it's treated as a normal retry retry and we just back-off and wait before trying again in a bit. It's very rare that a user upload/downloads so many artifacts that they see that error.

from download-artifact.

dbabokin avatar dbabokin commented on September 1, 2024 1

I see one more instantiation of network problem, that retry should fix (log are here):

Starting download for ispc_llvm11_linux
Error: read ECONNRESET

from download-artifact.

konradpabjan avatar konradpabjan commented on September 1, 2024 1

So most http calls during artifact download are retried. What you linked to is the webpack version of what is in this repo, the source code is here: https://github.com/actions/toolkit/blob/73d5917a6b5ea646ac3173cfceb727ee914ff6ed/packages/artifact/src/internal/download-http-client.ts#L173-L177

Upload-artifact faces a similar problem where a small percentage of calls are not retried. Those that do get retried have exponential back-off plus up to 5 retries. Will try to fix it this week 🤞

from download-artifact.

dbabokin avatar dbabokin commented on September 1, 2024

Looking at index.js I see retry logic, but it seems to be not configurable externally.

@konradpabjan, you have committed the code, which does retry under the hood. Is it possible to make the retry parameters externally configurable?

This becomes really painful to see fails related to network issues daily. In the workflow I have 21 jobs running in parallel, which consume the same artifact. One of them is failing with good chances.

from download-artifact.

dbabokin avatar dbabokin commented on September 1, 2024

If you could make it externally configurable, that would be even better! This might be especially important for self-hosted runners (we are going to start using them soon).

from download-artifact.

wsnyder avatar wsnyder commented on September 1, 2024

Thanks for work towards this, but our project just turned on additional actions and we are seeing about 1 in 50 times where download-artifact give what appears the same "Error: read ECONNRESET". Any hope to get this retry policy knob to turn up the backoff?

BTW I don't see the "info Backoff due to too many request" messages described actions/toolkit#675, I presume some verbosity flag is needed to see them. how do I get those?

from download-artifact.

kenorb avatar kenorb commented on September 1, 2024

Same issue here.

Run actions/download-artifact@v2
No artifact name specified, downloading all artifacts
Creating an extra directory for each artifact that is being downloaded
Total number of files that will be downloaded: 8
Total number of files that will be downloaded: 2
Error: read ECONNRESET

This is especially a trouble for the lengthy tests.

from download-artifact.

gregsdennis avatar gregsdennis commented on September 1, 2024

Just got the connection reset issue. I investigated after a job was taking a while to run. Glad to have found this issue and the knowledge that it was a considered scenario. 👍

from download-artifact.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.