From 120452dd2616479b0b2a613b270cc51e8108f4e3 Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Wed, 2 Feb 2022 09:20:05 +0000 Subject: [PATCH] [ws-manager-bridge] update prebuild state properly --- components/ws-manager-bridge/ee/src/bridge.ts | 13 +++++++++++-- components/ws-manager-bridge/src/bridge.ts | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/components/ws-manager-bridge/ee/src/bridge.ts b/components/ws-manager-bridge/ee/src/bridge.ts index 598ec79cec837d..8289a7337db6f9 100644 --- a/components/ws-manager-bridge/ee/src/bridge.ts +++ b/components/ws-manager-bridge/ee/src/bridge.ts @@ -114,12 +114,21 @@ export class WorkspaceManagerBridgeEE extends WorkspaceManagerBridge { } } - protected async controlPrebuildInstance(instance: WorkspaceInstance): Promise { + protected async stopPrebuildInstance(ctx: TraceContext, instance: WorkspaceInstance): Promise { + const span = TraceContext.startSpan("stopPrebuildInstance", ctx); + const prebuild = await this.workspaceDB.trace({}).findPrebuildByWorkspaceID(instance.workspaceId); - if (prebuild && prebuild.state == 'building') { + if (prebuild) { // this is a prebuild - set it to aborted prebuild.state = 'aborted'; await this.workspaceDB.trace({}).storePrebuiltWorkspace(prebuild); + + { // notify about prebuild updated + const info = (await this.workspaceDB.trace({span}).findPrebuildInfos([prebuild.id]))[0]; + if (info) { + this.messagebus.notifyOnPrebuildUpdate({ info, status: prebuild.state }); + } + } } } diff --git a/components/ws-manager-bridge/src/bridge.ts b/components/ws-manager-bridge/src/bridge.ts index 48dfd451e76636..64642ca95da7c7 100644 --- a/components/ws-manager-bridge/src/bridge.ts +++ b/components/ws-manager-bridge/src/bridge.ts @@ -312,7 +312,7 @@ export class WorkspaceManagerBridge implements Disposable { instance.stoppedTime = new Date().toISOString(); promises.push(this.workspaceDB.trace({}).storeInstance(instance)); promises.push(this.onInstanceStopped({}, ri.workspace.ownerId, instance)); - promises.push(this.controlPrebuildInstance(instance)); + promises.push(this.stopPrebuildInstance(ctx, instance)); } await Promise.all(promises); } @@ -325,7 +325,7 @@ export class WorkspaceManagerBridge implements Disposable { // prebuilds are an EE feature - we just need the hook here } - protected async controlPrebuildInstance(instance: WorkspaceInstance): Promise { + protected async stopPrebuildInstance(ctx: TraceContext, instance: WorkspaceInstance): Promise { // prebuilds are an EE feature - we just need the hook here }