Skip to content

Commit cc19ac7

Browse files
committed
[server] ensure that user that has PVC enabled will not force prebuilds to use them on projects that don't have PVC turned on
1 parent b89a417 commit cc19ac7

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ export class PrebuildManager {
238238
const usePVC = this.shouldUsePersistentVolumeClaim(project);
239239
await this.workspaceStarter.startWorkspace({ span }, workspace, user, [], projectEnvVars, {
240240
excludeFeatureFlags: ["full_workspace_backup"],
241-
forcePVC: usePVC,
241+
PVCEnabledForPrebuilds: usePVC,
242242
});
243243
}
244244

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class WorkspaceStarterEE extends WorkspaceStarter {
2424
user: User,
2525
excludeFeatureFlags: NamedWorkspaceFeatureFlag[],
2626
ideConfig: IDEConfig,
27-
forcePVC: boolean,
27+
PVCEnabledForPrebuilds: boolean,
2828
): Promise<WorkspaceInstance> {
2929
const instance = await super.newInstance(
3030
ctx,
@@ -33,7 +33,7 @@ export class WorkspaceStarterEE extends WorkspaceStarter {
3333
user,
3434
excludeFeatureFlags,
3535
ideConfig,
36-
forcePVC,
36+
PVCEnabledForPrebuilds,
3737
);
3838

3939
return instance;

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export interface StartWorkspaceOptions {
128128
rethrow?: boolean;
129129
forceDefaultImage?: boolean;
130130
excludeFeatureFlags?: NamedWorkspaceFeatureFlag[];
131-
forcePVC?: boolean;
131+
PVCEnabledForPrebuilds?: boolean;
132132
}
133133

134134
const MAX_INSTANCE_START_RETRIES = 2;
@@ -352,7 +352,7 @@ export class WorkspaceStarter {
352352
user,
353353
options.excludeFeatureFlags || [],
354354
ideConfig,
355-
options.forcePVC || false,
355+
options.PVCEnabledForPrebuilds || false,
356356
),
357357
);
358358
span.log({ newInstance: instance.id });
@@ -743,7 +743,7 @@ export class WorkspaceStarter {
743743
user: User,
744744
excludeFeatureFlags: NamedWorkspaceFeatureFlag[],
745745
ideConfig: IDEConfig,
746-
forcePVC: boolean,
746+
PVCEnabledForPrebuilds: boolean,
747747
): Promise<WorkspaceInstance> {
748748
const span = TraceContext.startSpan("buildWorkspaceImage", ctx);
749749
//#endregion IDE resolution TODO(ak) move to IDE service
@@ -828,8 +828,15 @@ export class WorkspaceStarter {
828828

829829
featureFlags = featureFlags.filter((f) => !excludeFeatureFlags.includes(f));
830830

831-
if (forcePVC === true) {
832-
featureFlags = featureFlags.concat(["persistent_volume_claim"]);
831+
if (workspace.type === "prebuild") {
832+
if (PVCEnabledForPrebuilds === true) {
833+
featureFlags = featureFlags.concat(["persistent_volume_claim"]);
834+
} else {
835+
// If PVC is disabled for prebuilds, we need to remove the PVC feature flag.
836+
// This is necessary to ensure if user has PVC enabled on their account, that they
837+
// will not hijack prebuild with PVC and make everyone who use this prebuild to auto enroll into PVC feature.
838+
featureFlags = featureFlags.filter((f) => f !== "persistent_volume_claim");
839+
}
833840
}
834841

835842
let workspaceClass = "";

0 commit comments

Comments
 (0)