-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
On Windows, the cache action hangs for 15+min in the post step before failing with Cannot stat: Invalid argument
. It appears to be caught in a symlink cycle, see details below. I have seen this issue consistently for a few weeks on Windows runners, on every run.
The cache action is used for the ~/.cache/pre-commit
directory, which contains environments for linter tools managed by pre-commit, in this particular case a node environment for Prettier. The job output suggests that tar.exe runs into a symlink cycle:
Post job cleanup.
C:\windows\System32\tar.exe -cz -f d:/a/_temp/bcdd723a-8b44-4f20-a0cd-40818adf8d6e/cache.tgz -C C:/Users/runneradmin/.cache/pre-commit .
tar.exe: ./repobcgy0yhx/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier/node_env-default/Scripts/node_modules/prettier: Cannot stat: Invalid argument
tar.exe: Error exit delayed from previous errors.
[warning]Tar failed with error: The process 'C:\windows\System32\tar.exe' failed with exit code 1
Inspecting the cache layout locally reveals that prettier
is a symlink to the directory three levels up:
$ readlink ~/.cache/pre-commit/repo2c0jl6uh/node_env-default/lib/node_modules/prettier
../../../
$ realpath ~/.cache/pre-commit/repo2c0jl6uh/node_env-default/lib/node_modules/prettier
~/.cache/pre-commit/repo2c0jl6uh
(Note that this is on a macOS machine. The directory layout should be similar on Windows, with a Scripts
directory instead of lib
.)
Could be related to #120