Skip to content

Commit 04895a4

Browse files
committed
[server] Every time we stop a workspace instance, log the reason why
1 parent d224833 commit 04895a4

File tree

5 files changed

+19
-5
lines changed

5 files changed

+19
-5
lines changed

components/server/ee/src/prebuilds/prebuild-manager.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,14 @@ export class PrebuildManager {
7272
for (const instance of prebuild.instances) {
7373
log.info(
7474
{ userId: user.id, instanceId: instance.id, workspaceId: instance.workspaceId },
75-
"Aborting Prebuild workspace because a newer commit was pushed to the same branch.",
75+
"Cancelling Prebuild workspace because a newer commit was pushed to the same branch.",
7676
);
7777
results.push(
7878
this.workspaceStarter.stopWorkspaceInstance(
7979
{ span },
8080
instance.id,
8181
instance.region,
82+
"prebuild cancelled because a newer commit was pushed to the same branch",
8283
StopWorkspacePolicy.ABORT,
8384
),
8485
);

components/server/ee/src/workspace/gitpod-server-impl.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ export class GitpodServerEEImpl extends GitpodServerImpl {
634634
ctx,
635635
instance.id,
636636
instance.region,
637+
"blocked by admin",
637638
StopWorkspacePolicy.IMMEDIATELY,
638639
),
639640
);
@@ -867,7 +868,7 @@ export class GitpodServerEEImpl extends GitpodServerImpl {
867868

868869
const workspace = await this.workspaceDb.trace(ctx).findById(workspaceId);
869870
if (workspace) {
870-
await this.internalStopWorkspace(ctx, workspace, StopWorkspacePolicy.IMMEDIATELY, true);
871+
await this.internalStopWorkspace(ctx, workspace, "stopped by admin", StopWorkspacePolicy.IMMEDIATELY, true);
871872
}
872873
}
873874

components/server/src/user/user-deletion-service.ts

+6
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ export class UserDeletionService {
113113
runningWorkspaces.map(async (info) => {
114114
const wsi = info.latestInstance;
115115

116+
const reason = "deleting user";
117+
log.info(
118+
{ workspaceId: info.workspace.id, instanceId: wsi.id },
119+
`Stopping workspace instance (reason: ${reason})`,
120+
);
121+
116122
const req = new StopWorkspaceRequest();
117123
req.setId(wsi.id);
118124
req.setPolicy(StopWorkspacePolicy.NORMALLY);

components/server/src/workspace/gitpod-server-impl.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -748,14 +748,15 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
748748
await this.guardAccess({ kind: "workspace", subject: workspace }, "get");
749749
}
750750

751-
this.internalStopWorkspace(ctx, workspace).catch((err) => {
751+
this.internalStopWorkspace(ctx, workspace, "stopped via API").catch((err) => {
752752
log.error(logCtx, "stopWorkspace error: ", err);
753753
});
754754
}
755755

756756
protected async internalStopWorkspace(
757757
ctx: TraceContext,
758758
workspace: Workspace,
759+
reason: string,
759760
policy?: StopWorkspacePolicy,
760761
admin: boolean = false,
761762
): Promise<void> {
@@ -782,7 +783,8 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
782783
await this.guardAccess({ kind: "workspaceInstance", subject: instance, workspace }, "update");
783784
}
784785
}
785-
await this.workspaceStarter.stopWorkspaceInstance(ctx, instance.id, instance.region, policy);
786+
787+
await this.workspaceStarter.stopWorkspaceInstance(ctx, instance.id, instance.region, reason, policy);
786788
}
787789

788790
protected async guardAdminAccess(method: string, params: any, requiredPermission: PermissionName) {
@@ -834,7 +836,7 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
834836
await this.guardAccess({ kind: "workspace", subject: ws }, "delete");
835837

836838
// for good measure, try and stop running instances
837-
await this.internalStopWorkspace(ctx, ws);
839+
await this.internalStopWorkspace(ctx, ws, "deleted via API");
838840

839841
// actually delete the workspace
840842
await this.workspaceDeletionService.softDeleteWorkspace(ctx, ws, "user");

components/server/src/workspace/workspace-starter.ts

+4
Original file line numberDiff line numberDiff line change
@@ -439,8 +439,12 @@ export class WorkspaceStarter {
439439
ctx: TraceContext,
440440
instanceId: string,
441441
instanceRegion: string,
442+
reason: string,
442443
policy?: StopWorkspacePolicy,
443444
): Promise<void> {
445+
ctx.span?.setTag("stopWorkspaceReason", reason);
446+
log.info({ instanceId }, `Stopping workspace instance (reason: ${reason})`);
447+
444448
const req = new StopWorkspaceRequest();
445449
req.setId(instanceId);
446450
req.setPolicy(policy || StopWorkspacePolicy.NORMALLY);

0 commit comments

Comments
 (0)