Skip to content

Commit 2a28dc9

Browse files
committed
[server] Fix propragation of "workspace-permanent feature flags"
1 parent 0fb5171 commit 2a28dc9

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

components/gitpod-protocol/src/protocol.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,12 @@ export const WorkspaceFeatureFlags = {
298298
workspace_connection_limiting: undefined,
299299
};
300300
export type NamedWorkspaceFeatureFlag = keyof typeof WorkspaceFeatureFlags;
301+
export namespace NamedWorkspaceFeatureFlag {
302+
export const WORKSPACE_PERSISTED_FEATTURE_FLAGS: NamedWorkspaceFeatureFlag[] = ["full_workspace_backup"];
303+
export function isWorkspacePersisted(ff: NamedWorkspaceFeatureFlag): boolean {
304+
return WORKSPACE_PERSISTED_FEATTURE_FLAGS.includes(ff);
305+
}
306+
}
301307

302308
export interface EnvVarWithValue {
303309
name: string;

components/server/src/workspace/config-provider.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,8 @@ export class ConfigProvider {
125125
*/
126126
delete config._featureFlags;
127127
if (!!user.featureFlags) {
128-
const workspacePersistedFlags: NamedWorkspaceFeatureFlag[] = [
129-
"full_workspace_backup",
130-
"persistent_volume_claim",
131-
];
132-
config._featureFlags = workspacePersistedFlags.filter((f) =>
133-
(user.featureFlags!.permanentWSFeatureFlags || []).includes(f),
128+
config._featureFlags = (user.featureFlags!.permanentWSFeatureFlags || []).filter(
129+
NamedWorkspaceFeatureFlag.isWorkspacePersisted,
134130
);
135131
}
136132

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,10 @@ export class WorkspaceStarter {
829829
let featureFlags: NamedWorkspaceFeatureFlag[] = workspace.config._featureFlags || [];
830830
featureFlags = featureFlags.concat(this.config.workspaceDefaults.defaultFeatureFlags);
831831
if (user.featureFlags && user.featureFlags.permanentWSFeatureFlags) {
832-
featureFlags = featureFlags.concat(featureFlags, user.featureFlags.permanentWSFeatureFlags);
832+
const nonWorkspacePersistentFeatureFlags = user.featureFlags.permanentWSFeatureFlags.filter(
833+
(ff) => !NamedWorkspaceFeatureFlag.isWorkspacePersisted(ff),
834+
);
835+
featureFlags = featureFlags.concat(featureFlags, nonWorkspacePersistentFeatureFlags);
833836
}
834837

835838
// if the user has feature preview enabled, we need to add the respective feature flags.

0 commit comments

Comments
 (0)