Skip to content

Commit c8a8bb9

Browse files
committed
Update diag usage
1 parent f5c1380 commit c8a8bb9

File tree

3 files changed

+46
-22
lines changed

3 files changed

+46
-22
lines changed

incubator/opentelemetry-sampler-aws-xray/src/aws-xray-sampling-client.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
1919
// SPDX-License-Identifier: Apache-2.0
2020

21-
import { DiagLogFunction, context, diag } from '@opentelemetry/api';
21+
import { DiagLogFunction, DiagLogger, context } from '@opentelemetry/api';
2222
import { suppressTracing } from '@opentelemetry/core';
2323
import * as http from 'http';
2424
import {
@@ -30,10 +30,12 @@ import {
3030
export class AWSXRaySamplingClient {
3131
private getSamplingRulesEndpoint: string;
3232
private samplingTargetsEndpoint: string;
33+
private samplerDiag: DiagLogger;
3334

34-
constructor(endpoint: string) {
35+
constructor(endpoint: string, samplerDiag: DiagLogger) {
3536
this.getSamplingRulesEndpoint = endpoint + '/GetSamplingRules';
3637
this.samplingTargetsEndpoint = endpoint + '/SamplingTargets';
38+
this.samplerDiag = samplerDiag;
3739
}
3840

3941
public fetchSamplingTargets(
@@ -43,7 +45,7 @@ export class AWSXRaySamplingClient {
4345
this.makeSamplingRequest<GetSamplingTargetsResponse>(
4446
this.samplingTargetsEndpoint,
4547
callback,
46-
diag.debug,
48+
this.samplerDiag.debug.bind(this.samplerDiag),
4749
JSON.stringify(requestBody)
4850
);
4951
}
@@ -54,7 +56,7 @@ export class AWSXRaySamplingClient {
5456
this.makeSamplingRequest<GetSamplingRulesResponse>(
5557
this.getSamplingRulesEndpoint,
5658
callback,
57-
diag.error
59+
this.samplerDiag.error.bind(this.samplerDiag)
5860
);
5961
}
6062

@@ -96,8 +98,10 @@ export class AWSXRaySamplingClient {
9698
callback(responseObject);
9799
}
98100
} else {
99-
diag.debug(`${url} Response Code is: ${response.statusCode}`);
100-
diag.debug(`${url} responseData is: ${responseData}`);
101+
this.samplerDiag.debug(
102+
`${url} Response Code is: ${response.statusCode}`
103+
);
104+
this.samplerDiag.debug(`${url} responseData is: ${responseData}`);
101105
}
102106
});
103107
})

incubator/opentelemetry-sampler-aws-xray/src/remote-sampler.ts

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,14 @@
1818
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
1919
// SPDX-License-Identifier: Apache-2.0
2020

21-
import { Attributes, Context, Link, SpanKind, diag } from '@opentelemetry/api';
21+
import {
22+
Attributes,
23+
Context,
24+
DiagLogger,
25+
Link,
26+
SpanKind,
27+
diag,
28+
} from '@opentelemetry/api';
2229
import {
2330
ParentBasedSampler,
2431
Sampler,
@@ -39,7 +46,9 @@ import {
3946
DEFAULT_TARGET_POLLING_INTERVAL_SECONDS,
4047
RuleCache,
4148
} from './rule-cache';
49+
4250
import { SamplingRuleApplier } from './sampling-rule-applier';
51+
import { PACKAGE_NAME } from './version';
4352

4453
// 5 minute default sampling rules polling interval
4554
const DEFAULT_RULES_POLLING_INTERVAL_SECONDS: number = 5 * 60;
@@ -97,6 +106,7 @@ export class _AWSXRayRemoteSampler implements Sampler {
97106
private awsProxyEndpoint: string;
98107
private ruleCache: RuleCache;
99108
private fallbackSampler: FallbackSampler;
109+
private samplerDiag: DiagLogger;
100110
private rulePoller: NodeJS.Timeout | undefined;
101111
private targetPoller: NodeJS.Timeout | undefined;
102112
private clientId: string;
@@ -105,11 +115,15 @@ export class _AWSXRayRemoteSampler implements Sampler {
105115
private samplingClient: AWSXRaySamplingClient;
106116

107117
constructor(samplerConfig: AWSXRayRemoteSamplerConfig) {
118+
this.samplerDiag = diag.createComponentLogger({
119+
namespace: PACKAGE_NAME,
120+
});
121+
108122
if (
109123
samplerConfig.pollingInterval == null ||
110124
samplerConfig.pollingInterval < 10
111125
) {
112-
diag.warn(
126+
this.samplerDiag.warn(
113127
`'pollingInterval' is undefined or too small. Defaulting to ${DEFAULT_RULES_POLLING_INTERVAL_SECONDS} seconds`
114128
);
115129
this.rulePollingIntervalMillis =
@@ -130,7 +144,10 @@ export class _AWSXRayRemoteSampler implements Sampler {
130144
this.clientId = _AWSXRayRemoteSampler.generateClientId();
131145
this.ruleCache = new RuleCache(samplerConfig.resource);
132146

133-
this.samplingClient = new AWSXRaySamplingClient(this.awsProxyEndpoint);
147+
this.samplingClient = new AWSXRaySamplingClient(
148+
this.awsProxyEndpoint,
149+
this.samplerDiag
150+
);
134151

135152
// Start the Sampling Rules poller
136153
this.startSamplingRulesPoller();
@@ -152,7 +169,9 @@ export class _AWSXRayRemoteSampler implements Sampler {
152169
links: Link[]
153170
): SamplingResult {
154171
if (this.ruleCache.isExpired()) {
155-
diag.debug('Rule cache is expired, so using fallback sampling strategy');
172+
this.samplerDiag.debug(
173+
'Rule cache is expired, so using fallback sampling strategy'
174+
);
156175
return this.fallbackSampler.shouldSample(
157176
context,
158177
traceId,
@@ -177,13 +196,13 @@ export class _AWSXRayRemoteSampler implements Sampler {
177196
);
178197
}
179198
} catch (e: unknown) {
180-
diag.debug(
199+
this.samplerDiag.debug(
181200
'Unexpected error occurred when trying to match or applying a sampling rule',
182201
e
183202
);
184203
}
185204

186-
diag.debug(
205+
this.samplerDiag.debug(
187206
'Using fallback sampler as no rule match was found. This is likely due to a bug, since default rule should always match'
188207
);
189208
return this.fallbackSampler.shouldSample(
@@ -259,7 +278,7 @@ export class _AWSXRayRemoteSampler implements Sampler {
259278
);
260279
this.ruleCache.updateRules(samplingRules);
261280
} else {
262-
diag.error(
281+
this.samplerDiag.error(
263282
'SamplingRuleRecords from GetSamplingRules request is not defined'
264283
);
265284
}
@@ -289,14 +308,14 @@ export class _AWSXRayRemoteSampler implements Sampler {
289308
this.startSamplingTargetsPoller();
290309

291310
if (refreshSamplingRules) {
292-
diag.debug(
311+
this.samplerDiag.debug(
293312
'Performing out-of-band sampling rule polling to fetch updated rules.'
294313
);
295314
clearInterval(this.rulePoller);
296315
this.startSamplingRulesPoller();
297316
}
298317
} catch (error: unknown) {
299-
diag.debug('Error occurred when updating Sampling Targets');
318+
this.samplerDiag.debug('Error occurred when updating Sampling Targets');
300319
}
301320
}
302321

incubator/opentelemetry-sampler-aws-xray/test/aws-xray-sampling-client.test.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import { expect } from 'expect';
2222
import * as nock from 'nock';
23+
import { DiagConsoleLogger } from '@opentelemetry/api';
2324
import { AWSXRaySamplingClient } from '../src/aws-xray-sampling-client';
2425
import {
2526
GetSamplingRulesResponse,
@@ -35,7 +36,7 @@ describe('AWSXRaySamplingClient', () => {
3536
nock(TEST_URL)
3637
.post('/GetSamplingRules')
3738
.reply(200, { SamplingRuleRecords: [] });
38-
const client = new AWSXRaySamplingClient(TEST_URL);
39+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
3940

4041
client.fetchSamplingRules((response: GetSamplingRulesResponse) => {
4142
expect(response.SamplingRuleRecords?.length).toEqual(0);
@@ -45,7 +46,7 @@ describe('AWSXRaySamplingClient', () => {
4546

4647
it('testGetInvalidResponse', done => {
4748
nock(TEST_URL).post('/GetSamplingRules').reply(200, {});
48-
const client = new AWSXRaySamplingClient(TEST_URL);
49+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
4950

5051
client.fetchSamplingRules((response: GetSamplingRulesResponse) => {
5152
expect(response.SamplingRuleRecords?.length).toEqual(undefined);
@@ -57,7 +58,7 @@ describe('AWSXRaySamplingClient', () => {
5758
nock(TEST_URL)
5859
.post('/GetSamplingRules')
5960
.reply(200, { SamplingRuleRecords: [{}] });
60-
const client = new AWSXRaySamplingClient(TEST_URL);
61+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
6162
client.fetchSamplingRules((response: GetSamplingRulesResponse) => {
6263
expect(response.SamplingRuleRecords?.length).toEqual(1);
6364
done();
@@ -68,7 +69,7 @@ describe('AWSXRaySamplingClient', () => {
6869
nock(TEST_URL)
6970
.post('/GetSamplingRules')
7071
.reply(200, { SamplingRuleRecords: [{ SamplingRule: {} }] });
71-
const client = new AWSXRaySamplingClient(TEST_URL);
72+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
7273
client.fetchSamplingRules((response: GetSamplingRulesResponse) => {
7374
expect(response.SamplingRuleRecords?.length).toEqual(1);
7475
expect(
@@ -122,7 +123,7 @@ describe('AWSXRaySamplingClient', () => {
122123
const records = data['SamplingRuleRecords'];
123124
nock(TEST_URL).post('/GetSamplingRules').reply(200, data);
124125

125-
const client = new AWSXRaySamplingClient(TEST_URL);
126+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
126127

127128
client.fetchSamplingRules((response: GetSamplingRulesResponse) => {
128129
expect(response.SamplingRuleRecords?.length).toEqual(records.length);
@@ -176,7 +177,7 @@ describe('AWSXRaySamplingClient', () => {
176177
'/get-sampling-targets-response-sample.json');
177178
nock(TEST_URL).post('/SamplingTargets').reply(200, data);
178179

179-
const client = new AWSXRaySamplingClient(TEST_URL);
180+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
180181

181182
client.fetchSamplingTargets(
182183
data,
@@ -197,7 +198,7 @@ describe('AWSXRaySamplingClient', () => {
197198
};
198199
nock(TEST_URL).post('/SamplingTargets').reply(200, data);
199200

200-
const client = new AWSXRaySamplingClient(TEST_URL);
201+
const client = new AWSXRaySamplingClient(TEST_URL, new DiagConsoleLogger());
201202

202203
client.fetchSamplingTargets(
203204
data as unknown as GetSamplingTargetsBody,

0 commit comments

Comments
 (0)