diff --git a/packages/fxa-content-server/server/lib/configuration.js b/packages/fxa-content-server/server/lib/configuration.js index 1edb616360d..587153b5d8b 100644 --- a/packages/fxa-content-server/server/lib/configuration.js +++ b/packages/fxa-content-server/server/lib/configuration.js @@ -718,8 +718,8 @@ const conf = (module.exports = convict({ format: String, }, timeout: { - default: 200, - doc: 'Amount of time in milliseconds to wait for a response from cirrus', + default: 400, + doc: 'Amount of time in milliseconds to wait for a response from cirrus.', env: 'NIMBUS_CIRRUS_TIMEOUT', format: Number, }, diff --git a/packages/fxa-content-server/server/lib/routes/post-nimbus-experiments.js b/packages/fxa-content-server/server/lib/routes/post-nimbus-experiments.js index 7fc18178eff..fb9e3b7e29f 100644 --- a/packages/fxa-content-server/server/lib/routes/post-nimbus-experiments.js +++ b/packages/fxa-content-server/server/lib/routes/post-nimbus-experiments.js @@ -60,22 +60,29 @@ module.exports = function (config, statsd) { statsd.increment('cirrus.experiment-fetch-success'); } } catch (err) { - Sentry.captureException(err, { - tags: { - source: 'nimbus-experiments', - }, - }); + const isTimeout = err.name === 'AbortError' || err.name === 'TimeoutError'; + + if (statsd) { + statsd.increment('cirrus.experiment-fetch-error'); + + if (isTimeout) { + statsd.increment('cirrus.experiment-fetch-timeout'); + } + } + + if (!isTimeout) { + Sentry.captureException(err, { + tags: { + source: 'nimbus-experiments', + } + }); + } // Return a 'service unavailable' error. We essentially failed // to communicate with the cirrus server, so experiments are // now unavailable... res.status(503); res.end(); - - // Record failure - if (statsd) { - statsd.increment('cirrus.experiment-fetch-error'); - } } finally { clearTimeout(timeoutId);