[miniflare] fix: cleanup temporary directory after shutting down workerd
#4400
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.
Fixes #4362.
What this PR solves / how to test:
Previously, Miniflare would register two exit hooks: one to remove its temporary directory, and one to shutdown
workerd
. These exit hooks are executed synchronously in the order they're registered: https://github.com/sindresorhus/exit-hook/blob/06b9fa48ef2c8245b42c558136d75e52ef833022/index.js#L14-L16. This meant we would try to remove the temporary directory before shutting downworkerd
. On Linux and macOS this is fine, but on Windows, this could lead toEBUSY
errors asworkerd
still had an open handle on the directory. This change ensures we attempt to shutdownworkerd
before removing the directory. Since we can only clean up on a best effort basis when exiting, it also catches any errors thrown when removing the directory, in case the runtime doesn't shutdown fast enough.Author has addressed the following:
Note for PR author:
We want to celebrate and highlight awesome PR review! If you think this PR received a particularly high-caliber review, please assign it the label
highlight pr review
so future reviewers can take inspiration and learn from it.