From e1ff0fd837dbbbf07483a1f5d6d08d83656d43ba Mon Sep 17 00:00:00 2001 From: Antoine Pultier <45740+fungiboletus@users.noreply.github.com> Date: Tue, 2 Nov 2021 10:20:17 +0000 Subject: [PATCH 1/2] perf: lazy initialization of the gzip stream --- .../src/platform/node/util.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/util.ts b/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/util.ts index 8c905c496d..3c6679693e 100644 --- a/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/util.ts +++ b/experimental/packages/opentelemetry-exporter-otlp-http/src/platform/node/util.ts @@ -24,8 +24,7 @@ import { OTLPExporterNodeConfigBase } from '.'; import { diag } from '@opentelemetry/api'; import { CompressionAlgorithm } from './types'; -const gzip = zlib.createGzip(); - +let gzip: zlib.Gzip | undefined; /** * Sends data using http * @param collector @@ -83,6 +82,9 @@ export function sendWithHttp( switch (collector.compression) { case CompressionAlgorithm.GZIP: { + if (!gzip) { + gzip = zlib.createGzip(); + } req.setHeader('Content-Encoding', 'gzip'); const dataStream = readableFromBuffer(data); dataStream.on('error', onError) From 8df94f1da0b7e65e808553284351b4647e02baa4 Mon Sep 17 00:00:00 2001 From: Antoine Pultier <45740+fungiboletus@users.noreply.github.com> Date: Tue, 2 Nov 2021 18:45:14 +0000 Subject: [PATCH 2/2] chore: add todo comment to end gzip stream --- .../src/platform/node/OTLPExporterNodeBase.ts | 2 ++ .../src/platform/node/util.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPExporterNodeBase.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPExporterNodeBase.ts index 03eb432b49..920f0ac043 100644 --- a/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPExporterNodeBase.ts +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/OTLPExporterNodeBase.ts @@ -90,5 +90,7 @@ export abstract class OTLPExporterNodeBase< promise.then(popPromise, popPromise); } + // TODO: end gzip stream from util.ts if not undefined + // It should perhaps be a class member here instead of a variable in util.ts onShutdown(): void {} } diff --git a/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/util.ts b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/util.ts index 3c6679693e..0e40b585db 100644 --- a/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/util.ts +++ b/experimental/packages/opentelemetry-exporter-trace-otlp-http/src/platform/node/util.ts @@ -25,6 +25,7 @@ import { diag } from '@opentelemetry/api'; import { CompressionAlgorithm } from './types'; let gzip: zlib.Gzip | undefined; + /** * Sends data using http * @param collector