diff --git a/.changeset/friendly-spies-retire.md b/.changeset/friendly-spies-retire.md new file mode 100644 index 00000000000..cb74f85e97a --- /dev/null +++ b/.changeset/friendly-spies-retire.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: message deletion fails if has files attached on filesystem storage diff --git a/apps/meteor/server/ufs/ufs-local.ts b/apps/meteor/server/ufs/ufs-local.ts index 9ac0c68583b..704683dd0ec 100644 --- a/apps/meteor/server/ufs/ufs-local.ts +++ b/apps/meteor/server/ufs/ufs-local.ts @@ -69,12 +69,17 @@ export class LocalStore extends Store { this.delete = async (fileId) => { const path = await this.getFilePath(fileId); - const statResult = await stat(path); - - if (statResult?.isFile()) { - await unlink(path); - await this.removeById(fileId); + try { + if (!(await stat(path)).isFile()) { + return; + } + } catch (_e) { + // FIXME(user) don't ignore, rather this block shouldn't run twice like it does now + return; } + + await unlink(path); + await this.removeById(fileId); }; this.getReadStream = async (fileId: string, file: IUpload, options?: { start?: number; end?: number }) => {