Fix startup failure if the cache directory points to a broken symlink #478
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Discovered in Shopify/ruby-lsp-rails#278
If the cache directory is a symlink and points to another directory that doesn't exist, saving the cache will fall into an infinite loop. This is because of the retry logic at
bootsnap/lib/bootsnap/load_path_cache/store.rb
Lines 107 to 108 in 8394834
This patch forces a different error by trying to resolve the symlink. Calling
File.realpath
on a broken symlink will raiseErrno::ENOENT
which will not be retried.A setup explanation to even end up in this state is provided at Shopify/ruby-lsp-rails#278 (comment)
@mttkay can you check if this fixes the issue for you?