From fcd1cd6abc4ad73699f8719e0c82fcc992b7de52 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 14 May 2020 16:24:34 +0300 Subject: [PATCH] fix(http-plugin): dont modify user's headers object in plugin --- packages/opentelemetry-plugin-http/src/http.ts | 2 ++ .../test/functionals/http-enable.test.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/opentelemetry-plugin-http/src/http.ts b/packages/opentelemetry-plugin-http/src/http.ts index 3697ba492ce..481970e4eaf 100644 --- a/packages/opentelemetry-plugin-http/src/http.ts +++ b/packages/opentelemetry-plugin-http/src/http.ts @@ -406,6 +406,8 @@ export class HttpPlugin extends BasePlugin { ); if (utils.isOpenTelemetryRequest(optionsParsed)) { + // clone the headers so delete will not modify the user's object + optionsParsed.headers = Object.assign({}, optionsParsed.headers); delete optionsParsed.headers[utils.OT_REQUEST_HEADER]; return original.apply(this, [optionsParsed, ...args]); } diff --git a/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts b/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts index 51400d239cf..812194e4230 100644 --- a/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts +++ b/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts @@ -202,6 +202,7 @@ describe('HttpPlugin', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(result.data, 'Ok'); assert.strictEqual(spans.length, 0); + assert.strictEqual(options.headers[OT_REQUEST_HEADER], 1); }); }); describe('with good plugin options', () => {