Skip to content

Commit 577a291

Browse files
zl4bvblumamir
andauthored
fix(instrumentation-aws-sdk): make empty context when SQS message has no propagation fields (#1889)
* fix(instrumentation-aws-sdk): make empty context when SQS message has no propagation fields * style: lint fix --------- Co-authored-by: Amir Blum <amirgiraffe@gmail.com>
1 parent c0d873c commit 577a291

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/MessageAttributes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ class ContextGetter
5555
keys(
5656
carrier: SQS.MessageBodyAttributeMap | SNS.MessageAttributeMap
5757
): string[] {
58+
if (carrier == null) {
59+
return [];
60+
}
5861
return Object.keys(carrier);
5962
}
6063

plugins/node/opentelemetry-instrumentation-aws-sdk/test/MessageAttributes.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
import { expect } from 'expect';
1818
import {
1919
MAX_MESSAGE_ATTRIBUTES,
20+
contextGetter,
2021
contextSetter,
2122
injectPropagationContext,
2223
addPropagationFieldsToAttributeNames,
2324
} from '../src/services/MessageAttributes';
25+
import { SNS, SQS } from '../src/aws-sdk.types';
2426

2527
describe('MessageAttributes', () => {
2628
describe('MAX_MESSAGE_ATTRIBUTES', () => {
@@ -29,6 +31,30 @@ describe('MessageAttributes', () => {
2931
});
3032
});
3133

34+
describe('contextGetter', () => {
35+
it('returns context keys if there are available attributes', () => {
36+
const contextCarrier = {
37+
key1: { DataType: 'String', StringValue: 'value1' },
38+
};
39+
const expectedKeys = ['key1'];
40+
41+
expect(contextGetter.keys(contextCarrier)).toEqual(expectedKeys);
42+
});
43+
44+
it('returns empty context keys if there are no available attributes', () => {
45+
const contextCarrier = undefined;
46+
const expectedKeys: string[] = [];
47+
48+
expect(
49+
contextGetter.keys(
50+
contextCarrier as unknown as
51+
| SQS.MessageBodyAttributeMap
52+
| SNS.MessageAttributeMap
53+
)
54+
).toEqual(expectedKeys);
55+
});
56+
});
57+
3258
describe('contextSetter', () => {
3359
it('should set parent context in sqs receive callback', () => {
3460
const contextKey = 'key';

0 commit comments

Comments
 (0)