fix(fs/rmtree): fix huge memory usage (#7073)
Fixes zammad#15258 This adds a sane concurrency limit of 2 per depth level. Co-authored-by: Florent BEAUCHAMP <florent.beauchamp@vates.fr>
This commit is contained in:
parent
8727c3cf96
commit
afb110c473
@ -624,14 +624,18 @@ export default class RemoteHandlerAbstract {
|
|||||||
|
|
||||||
const files = await this._list(dir)
|
const files = await this._list(dir)
|
||||||
await asyncEach(files, file =>
|
await asyncEach(files, file =>
|
||||||
this._unlink(`${dir}/${file}`).catch(error => {
|
this._unlink(`${dir}/${file}`).catch(
|
||||||
// Unlink dir behavior is not consistent across platforms
|
error => {
|
||||||
// https://github.com/nodejs/node-v0.x-archive/issues/5791
|
// Unlink dir behavior is not consistent across platforms
|
||||||
if (error.code === 'EISDIR' || error.code === 'EPERM') {
|
// https://github.com/nodejs/node-v0.x-archive/issues/5791
|
||||||
return this._rmtree(`${dir}/${file}`)
|
if (error.code === 'EISDIR' || error.code === 'EPERM') {
|
||||||
}
|
return this._rmtree(`${dir}/${file}`)
|
||||||
throw error
|
}
|
||||||
})
|
throw error
|
||||||
|
},
|
||||||
|
// real unlink concurrency will be 2**max directory depth
|
||||||
|
{ concurrency: 2 }
|
||||||
|
)
|
||||||
)
|
)
|
||||||
return this._rmtree(dir)
|
return this._rmtree(dir)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user