Skip to content

Tar fails on Windows after 15min due to symlink cycle #315

@cjolowicz

Description

@cjolowicz

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions