-
-
Notifications
You must be signed in to change notification settings - Fork 356
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Coursier throws a FileNotFoundException
#3876
Comments
|
I'm not sure coursier is to blame here. The stack trace originates from the dependency updates plugin. It seems it tries to read a file that's been removed in the mean time. Maybe a stale cached path? |
@alexarchambault the error should be coming from the coursier resolution within the dependency updates task. @lefou is there more to the stack trace? If not we might have to adjust the error reporting code to preserve the internal stack trace when re-throwing |
Unfortunately not. I posted the full output. |
It seems the One hypothesis I have is the following: some tasks running concurrently try to fetch a same version listing whose copy in cache is about to expire (because the last check for it is almost TTL-old). One task gets a file path from coursier right before it expires, and the other sees it as expired, and removes the now stale copy from the cache, that the first task attempts to read (and fails). |
A possible workaround could consist in having all checks use the exact same cutoff date in the past (computed as now - TTL, but computed beforehand only once now). That way, no task would remove a file that another was about to read. This needs some small changes in coursier, allowing coursier users to do that. |
@alexarchambault I'm not familiar with coursier internals but that sounds reasonable |
While running
mill mill.scalalib.Dependency.updates
Mill aborted abnormally with the following exception, which is most likely a concurrency issue in coursier, seen before but deemed to be fixed.A subsequent run succeeded, so this is indeed on of the issues we previously handled in Mill with retry-logic and removed it later in #3505.
The text was updated successfully, but these errors were encountered: