Skip to content

Commit 4493484

Browse files
committed
[WIP][server] Allow re-triggering failed Prebuilds
1 parent 17c3a99 commit 4493484

File tree

4 files changed

+6
-2
lines changed

4 files changed

+6
-2
lines changed

components/gitpod-db/src/typeorm/workspace-db-impl.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,7 @@ export abstract class AbstractTypeORMWorkspaceDBImpl implements WorkspaceDB {
560560
return await repo.save(pws as DBPrebuiltWorkspace);
561561
}
562562

563+
// Find the (last triggered) prebuild for a given commit
563564
public async findPrebuiltWorkspaceByCommit(cloneURL: string, commit: string): Promise<PrebuiltWorkspace | undefined> {
564565
if (!commit || !cloneURL) {
565566
return undefined;

components/gitpod-protocol/src/teams-projects-protocol.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ export namespace PrebuildInfo {
9393
export interface StartPrebuildResult {
9494
wsid: string;
9595
done: boolean;
96-
didFinish?: boolean;
9796
}
9897

9998
export interface Team {

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ export class PrebuildManager {
6767
try {
6868
const existingPB = await this.workspaceDB.trace({ span }).findPrebuiltWorkspaceByCommit(cloneURL, commit);
6969
if (!!existingPB) {
70-
return { wsid: existingPB.buildWorkspaceId, done: true, didFinish: existingPB.state === 'available' };
70+
// If the prebuild is failed, we want to retrigger it.
71+
if (!['aborted', 'timeout'].includes(existingPB.state) && !existingPB.error) {
72+
return { wsid: existingPB.buildWorkspaceId, done: true };
73+
}
7174
}
7275

7376
const contextParser = this.getContextParserFor(contextURL);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ export class GitpodServerEEImpl extends GitpodServerImpl<GitpodClient, GitpodSer
694694

695695
const logCtx: LogContext = { userId: user.id };
696696
const cloneUrl = context.repository.cloneUrl;
697+
// Note: findPrebuiltWorkspaceByCommit always returns the last triggered prebuild (so, if you re-trigger a prebuild, the newer one will always be used here)
697698
const prebuiltWorkspace = await this.workspaceDb.trace({ span }).findPrebuiltWorkspaceByCommit(cloneUrl, context.revision);
698699
const logPayload = { mode, cloneUrl, commit: context.revision, prebuiltWorkspace };
699700
log.debug(logCtx, "Looking for prebuilt workspace: ", logPayload);

0 commit comments

Comments
 (0)