From d3400fbe89d52297fb638a53ac8469af7d21af01 Mon Sep 17 00:00:00 2001 From: pengx17 Date: Wed, 5 Feb 2025 13:01:17 +0000 Subject: [PATCH] fix(core): local blobs are not being deleted when gc in unused blobs settings (#9960) --- .../modules/blob-management/entity/unused-blobs.ts | 14 -------------- .../src/modules/workspace-engine/impls/cloud.ts | 11 +++++++++++ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/frontend/core/src/modules/blob-management/entity/unused-blobs.ts b/packages/frontend/core/src/modules/blob-management/entity/unused-blobs.ts index 12f335b1f..74406b4d2 100644 --- a/packages/frontend/core/src/modules/blob-management/entity/unused-blobs.ts +++ b/packages/frontend/core/src/modules/blob-management/entity/unused-blobs.ts @@ -63,12 +63,6 @@ export class UnusedBlobs extends Entity { ); } - private get localFlavourProvider() { - return this.flavoursService.flavours$.value.find( - f => f.flavour === 'local' - ); - } - async listBlobs() { const blobs = await this.flavourProvider?.listBlobs( this.workspaceService.workspace.id @@ -90,14 +84,6 @@ export class UnusedBlobs extends Entity { blob, permanent ); - - if (this.localFlavourProvider !== this.flavourProvider) { - await this.localFlavourProvider?.deleteBlob( - this.workspaceService.workspace.id, - blob, - permanent - ); - } } async getUnusedBlobs(abortSignal?: AbortSignal) { diff --git a/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts b/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts index bd2481252..ad07916c6 100644 --- a/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts +++ b/packages/frontend/core/src/modules/workspace-engine/impls/cloud.ts @@ -386,6 +386,17 @@ class CloudWorkspaceFlavourProvider implements WorkspaceFlavourProvider { serverBaseUrl: this.server.serverMetadata.baseUrl, }); await cloudStorage.delete(blob, permanent); + + // should also delete from local storage + const storage = new this.BlobStorageType({ + id: id, + flavour: this.flavour, + type: 'workspace', + }); + storage.connection.connect(); + await storage.connection.waitForConnected(); + await storage.delete(blob, permanent); + storage.connection.disconnect(); } onWorkspaceInitialized(workspace: Workspace): void {