-
Notifications
You must be signed in to change notification settings - Fork 30.1k
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
fs: refactor rimraf retry options #30644
Conversation
doc/api/fs.md
Outdated
100ms longer on each try. This option represents the number of retries. This | ||
option is ignored if the `recursive` option is not `true`. **Default:** `3`. | ||
* `maxRetries` {integer} If an `EBUSY`, `EMFILE`, `ENOTEMPTY`, or `EPERM` | ||
error is encountered, Node.js will retry the operation with a linear backoff |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about supporting exponential backoff or allow to custom, which may react to the real world.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't plan on adding that myself, and definitely not in this PR. But someone could open a follow up PR that passes in a user defined function for that.
ping for reviews |
The failures were test-http2-client-upload, which is a known flake, and test-inspector-wait-for-connection, which is #30619. I'm going to land this. |
This is part of reworking the rimraf retry logic. Refs: nodejs#30580 PR-URL: nodejs#30644 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit makes retries an opt-in feature by defaulting to no automatic retries. This will be particularly important once synchronous operations can sleep between attempts. Refs: nodejs#30580 PR-URL: nodejs#30644 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit removes the emfileWait option. EMFILE errors are now handled the same as any other retriable error. Refs: nodejs#30580 PR-URL: nodejs#30644 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit adds a retryDelay option to rimraf which configures the amount of time between retry operations. Refs: nodejs#30580 PR-URL: nodejs#30644 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
Co-authored-by: Thang Tran <trankimthang279@gmail.com> Fixes: nodejs#30482 Refs: nodejs#30499 Refs: nodejs#30580 PR-URL: nodejs#30644 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
Landed in 84aa192...74f8196. Thanks for the reviews. |
Notable changes: * fs: * Reworked experimental recursive `rmdir()` (cjihrig) #30644 * The `maxBusyTries` option is renamed to `maxRetries`, and its default is set to 0. The `emfileWait` option has been removed, and `EMFILE` errors use the same retry logic as other errors. The `retryDelay` option is now supported. `ENFILE` errors are now retried. * http: * Make maximum header size configurable per-stream or per-server (Anna Henningsen) #30570 * http2: * Make maximum tolerated rejected streams configurable (Denys Otrishko) #30534 * Allow to configure maximum tolerated invalid frames (Denys Otrishko) #30534 * wasi: * Introduce initial WASI support (cjihrig) #30258 PR-URL: #30774
Notable changes: * fs: * Reworked experimental recursive `rmdir()` (cjihrig) #30644 * The `maxBusyTries` option is renamed to `maxRetries`, and its default is set to 0. The `emfileWait` option has been removed, and `EMFILE` errors use the same retry logic as other errors. The `retryDelay` option is now supported. `ENFILE` errors are now retried. * http: * Make maximum header size configurable per-stream or per-server (Anna Henningsen) #30570 * http2: * Make maximum tolerated rejected streams configurable (Denys Otrishko) #30534 * Allow to configure maximum tolerated invalid frames (Denys Otrishko) #30534 * wasi: * Introduce initial WASI support (cjihrig) #30258 PR-URL: #30774
This PR implements the changes proposed in #30580.
This PR doesn't quite close out #30580 though because synchronous retries are not able to be fully implemented just yet (libuv/libuv#2548 should enable that soon though).
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes