ignore missing local files when deleting them
without this, clearing cached files would fail when some local files had already been deleted thanks to Siina for reporting the problem
This commit is contained in:
parent
7d005876fb
commit
0c7982697b
1 changed files with 22 additions and 6 deletions
|
|
@ -738,14 +738,14 @@ export class DriveService {
|
|||
@bindThis
|
||||
public async deleteFile(file: MiDriveFile, isExpired = false, deleter?: MiUser) {
|
||||
if (file.storedInternal) {
|
||||
this.internalStorageService.del(file.accessKey!);
|
||||
this.deleteLocalFile(file.accessKey!);
|
||||
|
||||
if (file.thumbnailUrl) {
|
||||
this.internalStorageService.del(file.thumbnailAccessKey!);
|
||||
this.deleteLocalFile(file.thumbnailAccessKey!);
|
||||
}
|
||||
|
||||
if (file.webpublicUrl) {
|
||||
this.internalStorageService.del(file.webpublicAccessKey!);
|
||||
this.deleteLocalFile(file.webpublicAccessKey!);
|
||||
}
|
||||
} else if (!file.isLink) {
|
||||
this.queueService.createDeleteObjectStorageFileJob(file.accessKey!);
|
||||
|
|
@ -767,14 +767,14 @@ export class DriveService {
|
|||
const promises = [];
|
||||
|
||||
if (file.storedInternal) {
|
||||
promises.push(this.internalStorageService.del(file.accessKey!));
|
||||
promises.push(this.deleteLocalFile(file.accessKey!));
|
||||
|
||||
if (file.thumbnailUrl) {
|
||||
promises.push(this.internalStorageService.del(file.thumbnailAccessKey!));
|
||||
promises.push(this.deleteLocalFile(file.thumbnailAccessKey!));
|
||||
}
|
||||
|
||||
if (file.webpublicUrl) {
|
||||
promises.push(this.internalStorageService.del(file.webpublicAccessKey!));
|
||||
promises.push(this.deleteLocalFile(file.webpublicAccessKey!));
|
||||
}
|
||||
} else if (!file.isLink) {
|
||||
promises.push(this.deleteObjectStorageFile(file.accessKey!));
|
||||
|
|
@ -861,6 +861,22 @@ export class DriveService {
|
|||
}
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async deleteLocalFile(key: string) {
|
||||
try {
|
||||
await this.internalStorageService.del(key);
|
||||
} catch (err: any) {
|
||||
if (err.code === 'ENOENT') {
|
||||
this.deleteLogger.warn(`The file to delete did not exist: ${key}. Skipping this.`);
|
||||
return;
|
||||
} else {
|
||||
throw new Error(`Failed to delete the file: ${key}`, {
|
||||
cause: err,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async uploadFromUrl({
|
||||
url,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue