From ec90d76a9dddb87668cf1148b15070ab5b544e19 Mon Sep 17 00:00:00 2001 From: Andrew Farries Date: Thu, 24 Nov 2022 14:14:58 +0000 Subject: [PATCH 1/3] Always return 200 OK from slow-database endpoint --- components/server/src/feature-flag/featureflag-controller.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/server/src/feature-flag/featureflag-controller.ts b/components/server/src/feature-flag/featureflag-controller.ts index 811ee703aa7f86..de50292c79ef2f 100644 --- a/components/server/src/feature-flag/featureflag-controller.ts +++ b/components/server/src/feature-flag/featureflag-controller.ts @@ -24,7 +24,7 @@ export class FeatureFlagController { protected addSlowDatabaseFeatureFlagHandler(router: express.Router) { router.get("/slow-database", async (req, res) => { if (!User.is(req.user)) { - res.sendStatus(401); + res.sendStatus(200); return; } @@ -37,7 +37,7 @@ export class FeatureFlagController { res.end(); } catch (error) { log.error(`failed to retrieve value of 'slow_database' feature flag: ${error.message}`); - res.status(500); + res.status(200); res.end(); } }); From a35bb633e0a5421d561a3fe8c55a47585de21d2e Mon Sep 17 00:00:00 2001 From: Andrew Farries Date: Thu, 24 Nov 2022 15:52:27 +0000 Subject: [PATCH 2/3] Always set header in response --- components/server/src/feature-flag/featureflag-controller.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/server/src/feature-flag/featureflag-controller.ts b/components/server/src/feature-flag/featureflag-controller.ts index de50292c79ef2f..a32b0e739c70a1 100644 --- a/components/server/src/feature-flag/featureflag-controller.ts +++ b/components/server/src/feature-flag/featureflag-controller.ts @@ -24,6 +24,7 @@ export class FeatureFlagController { protected addSlowDatabaseFeatureFlagHandler(router: express.Router) { router.get("/slow-database", async (req, res) => { if (!User.is(req.user)) { + res.setHeader("X-Gitpod-Slow-Database", "false"); res.sendStatus(200); return; } @@ -37,6 +38,7 @@ export class FeatureFlagController { res.end(); } catch (error) { log.error(`failed to retrieve value of 'slow_database' feature flag: ${error.message}`); + res.setHeader("X-Gitpod-Slow-Database", "false"); res.status(200); res.end(); } From d346cf44e28644166967b766b0b9724f0dbdf1f8 Mon Sep 17 00:00:00 2001 From: Andrew Farries Date: Fri, 25 Nov 2022 08:53:51 +0000 Subject: [PATCH 3/3] Use finally block to set status --- .../src/feature-flag/featureflag-controller.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/components/server/src/feature-flag/featureflag-controller.ts b/components/server/src/feature-flag/featureflag-controller.ts index a32b0e739c70a1..3d62212e119fb5 100644 --- a/components/server/src/feature-flag/featureflag-controller.ts +++ b/components/server/src/feature-flag/featureflag-controller.ts @@ -23,22 +23,20 @@ export class FeatureFlagController { protected addSlowDatabaseFeatureFlagHandler(router: express.Router) { router.get("/slow-database", async (req, res) => { - if (!User.is(req.user)) { - res.setHeader("X-Gitpod-Slow-Database", "false"); - res.sendStatus(200); - return; - } - try { + if (!User.is(req.user)) { + res.setHeader("X-Gitpod-Slow-Database", "false"); + return; + } + const flagValue = await getExperimentsClientForBackend().getValueAsync("slow_database", false, { user: req.user, }); res.setHeader("X-Gitpod-Slow-Database", flagValue.toString()); - res.status(200); - res.end(); } catch (error) { log.error(`failed to retrieve value of 'slow_database' feature flag: ${error.message}`); res.setHeader("X-Gitpod-Slow-Database", "false"); + } finally { res.status(200); res.end(); }