From 9d31aa057e4407596c143b8fd42505dc3905251d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:57:22 +0200 Subject: [PATCH] Add CF-Ray header value to Sentry errors if available (#10339) --- core/base-service/check-error-response.js | 14 +++++++++++++- core/base-service/check-error-response.spec.js | 6 +++++- core/server/log.js | 6 ++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/base-service/check-error-response.js b/core/base-service/check-error-response.js index bc0d0a1ae1..beceeecc7b 100644 --- a/core/base-service/check-error-response.js +++ b/core/base-service/check-error-response.js @@ -6,6 +6,8 @@ const defaultErrorMessages = { 429: 'rate limited by upstream service', } +const headersToInclude = ['cf-ray'] + export default function checkErrorResponse(httpErrors = {}, logErrors = [429]) { return async function ({ buffer, res }) { let error @@ -28,7 +30,17 @@ export default function checkErrorResponse(httpErrors = {}, logErrors = [429]) { } if (logErrors.includes(res.statusCode)) { - log.error(new Error(`${res.statusCode} calling ${res.requestUrl.origin}`)) + const tags = {} + for (const headerKey of headersToInclude) { + const headerValue = res.headers[headerKey] + if (headerValue) { + tags[`header-${headerKey}`] = headerValue + } + } + log.error( + new Error(`${res.statusCode} calling ${res.requestUrl.origin}`), + tags, + ) } if (error) { diff --git a/core/base-service/check-error-response.spec.js b/core/base-service/check-error-response.spec.js index 411008dfd6..d5479d8b59 100644 --- a/core/base-service/check-error-response.spec.js +++ b/core/base-service/check-error-response.spec.js @@ -47,7 +47,11 @@ describe('async error handler', function () { context('when status is 429', function () { const buffer = Buffer.from('some stuff') - const res = { statusCode: 429, requestUrl: new URL('https://example.com/') } + const res = { + statusCode: 429, + headers: { 'some-key': 'some-value' }, + requestUrl: new URL('https://example.com/'), + } it('throws InvalidResponse', async function () { try { diff --git a/core/server/log.js b/core/server/log.js index d571863ad7..268bffdfa2 100644 --- a/core/server/log.js +++ b/core/server/log.js @@ -28,10 +28,12 @@ const log = (...msg) => { console.log(d, ...msg) } -const error = err => { +const error = (err, tags) => { const d = date() listeners.forEach(f => f(d, err)) - Sentry.captureException(err) + Sentry.captureException(err, { + tags, + }) console.error(d, err) } -- GitLab