From d3bb8b2fa462382b556f4a613bf8955cef4cd07b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 15 Feb 2024 12:49:39 +0000 Subject: [PATCH 1/2] There was an issue where extra headers were being carried over to the worker instance when performing cross-service comms - these headers were causing the request to be rejected without consideration. Cleaning up to only include the headers Budibase really cares about in request, let fetch work out the generic ones. --- .../server/src/utilities/workerRequests.ts | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/server/src/utilities/workerRequests.ts b/packages/server/src/utilities/workerRequests.ts index 69ce58c8a9..7528ff10c7 100644 --- a/packages/server/src/utilities/workerRequests.ts +++ b/packages/server/src/utilities/workerRequests.ts @@ -14,12 +14,23 @@ export function request(ctx?: Ctx, request?: any) { if (!request.headers) { request.headers = {} } + if (!ctx) { request.headers[constants.Header.API_KEY] = coreEnv.INTERNAL_API_KEY - if (tenancy.isTenantIdSet()) { - request.headers[constants.Header.TENANT_ID] = tenancy.getTenantId() + } else { + // copy all Budibase utilised headers over - copying everything can have + // side effects like requests being rejected due to odd content types etc + for (let header of Object.values(constants.Header)) { + if (ctx.headers[header]) { + request.headers[header] = ctx.headers[header] + } } } + + // apply tenancy if its available + if (tenancy.isTenantIdSet()) { + request.headers[constants.Header.TENANT_ID] = tenancy.getTenantId() + } if (request.body && Object.keys(request.body).length > 0) { request.headers["Content-Type"] = "application/json" request.body = @@ -29,9 +40,6 @@ export function request(ctx?: Ctx, request?: any) { } else { delete request.body } - if (ctx && ctx.headers) { - request.headers = ctx.headers - } // add x-budibase-correlation-id header logging.correlation.setHeader(request.headers) @@ -54,7 +62,7 @@ async function checkResponse( } const msg = `Unable to ${errorMsg} - ${responseErrorMessage}` if (ctx) { - ctx.throw(msg, response.status) + ctx.throw(response.status || 500, msg) } else { throw msg } From 05d19c92c747f946b1b8a1fae2ab28042287dd46 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 15 Feb 2024 12:59:41 +0000 Subject: [PATCH 2/2] Fixing bug found by test. --- packages/server/src/utilities/workerRequests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/utilities/workerRequests.ts b/packages/server/src/utilities/workerRequests.ts index 7528ff10c7..5612084216 100644 --- a/packages/server/src/utilities/workerRequests.ts +++ b/packages/server/src/utilities/workerRequests.ts @@ -17,7 +17,7 @@ export function request(ctx?: Ctx, request?: any) { if (!ctx) { request.headers[constants.Header.API_KEY] = coreEnv.INTERNAL_API_KEY - } else { + } else if (ctx.headers) { // copy all Budibase utilised headers over - copying everything can have // side effects like requests being rejected due to odd content types etc for (let header of Object.values(constants.Header)) {