Skip to content

Commit 8805cea

Browse files
committed
fix(exporter-collector): set content-encoding header only when compressing
1 parent 6bceae0 commit 8805cea

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

packages/opentelemetry-exporter-collector/src/platform/node/util.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ export function sendWithHttp<ExportItem, ServiceRequest>(
5151
headers: {
5252
'Content-Length': Buffer.byteLength(data),
5353
'Content-Type': contentType,
54-
'Content-Encoding': 'gzip',
5554
...collector.headers,
5655
},
5756
agent: collector.agent,
@@ -84,6 +83,7 @@ export function sendWithHttp<ExportItem, ServiceRequest>(
8483

8584
switch (collector.compression) {
8685
case CompressionAlgorithm.GZIP: {
86+
req.setHeader('Content-Encoding', 'gzip');
8787
const dataStream = readableFromBuffer(data);
8888
dataStream.on('error', onError)
8989
.pipe(gzip).on('error', onError)

packages/opentelemetry-exporter-collector/test/node/CollectorTraceExporter.test.ts

+15
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ describe('CollectorTraceExporter - node with json over http', () => {
4444
let collectorExporter: CollectorTraceExporter;
4545
let collectorExporterConfig: CollectorExporterNodeConfigBase;
4646
let stubRequest: sinon.SinonStub;
47+
let spySetHeader: sinon.SinonSpy;
4748
let spans: ReadableSpan[];
4849

4950
afterEach(() => {
@@ -148,6 +149,17 @@ describe('CollectorTraceExporter - node with json over http', () => {
148149
});
149150
});
150151

152+
it('should not have Content-Encoding header', done => {
153+
collectorExporter.export(spans, () => { });
154+
155+
setTimeout(() => {
156+
const args = stubRequest.args[0];
157+
const options = args[0];
158+
assert.strictEqual(options.headers['Content-Encoding'], undefined);
159+
done();
160+
});
161+
});
162+
151163
it('should have keep alive and keepAliveMsecs option set', done => {
152164
collectorExporter.export(spans, () => { });
153165

@@ -251,6 +263,8 @@ describe('CollectorTraceExporter - node with json over http', () => {
251263
describe('export - with compression', () => {
252264
beforeEach(() => {
253265
stubRequest = sinon.stub(http, 'request').returns(fakeRequest as any);
266+
spySetHeader = sinon.spy();
267+
(fakeRequest as any).setHeader = spySetHeader;
254268
collectorExporterConfig = {
255269
headers: {
256270
foo: 'bar',
@@ -285,6 +299,7 @@ describe('CollectorTraceExporter - node with json over http', () => {
285299
}
286300

287301
ensureExportTraceServiceRequestIsSet(json);
302+
assert.ok(spySetHeader.calledWith('Content-Encoding', 'gzip'));
288303

289304
done();
290305
});

0 commit comments

Comments
 (0)