Skip to content

Commit dcbbab0

Browse files
committed
Merge PR #237: [WIP] Update aws-xray module to follow style guide
2 parents d3596af + e9f6582 commit dcbbab0

12 files changed

+65
-59
lines changed

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AttributePropagatingSpanProcessorBuilder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55

66
package io.opentelemetry.contrib.awsxray;
77

8+
import static java.util.Collections.unmodifiableList;
89
import static java.util.Objects.requireNonNull;
910

1011
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1112
import io.opentelemetry.api.common.AttributeKey;
1213
import java.util.Arrays;
13-
import java.util.Collections;
1414
import java.util.List;
1515

1616
/**
@@ -19,7 +19,7 @@
1919
* #setAttributesKeysToPropagate} are not invoked, the builder defaults to using specific {@link
2020
* AwsAttributeKeys} as propagation targets.
2121
*/
22-
public class AttributePropagatingSpanProcessorBuilder {
22+
public final class AttributePropagatingSpanProcessorBuilder {
2323

2424
private AttributeKey<String> spanNamePropagationKey = AwsAttributeKeys.AWS_LOCAL_OPERATION;
2525
private List<AttributeKey<String>> attributesKeysToPropagate =
@@ -43,7 +43,7 @@ public AttributePropagatingSpanProcessorBuilder setSpanNamePropagationKey(
4343
public AttributePropagatingSpanProcessorBuilder setAttributesKeysToPropagate(
4444
List<AttributeKey<String>> attributesKeysToPropagate) {
4545
requireNonNull(attributesKeysToPropagate, "attributesKeysToPropagate");
46-
this.attributesKeysToPropagate = Collections.unmodifiableList(attributesKeysToPropagate);
46+
this.attributesKeysToPropagate = unmodifiableList(attributesKeysToPropagate);
4747
return this;
4848
}
4949

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsAttributeKeys.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,34 @@
55

66
package io.opentelemetry.contrib.awsxray;
77

8+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
9+
810
import io.opentelemetry.api.common.AttributeKey;
911

1012
/** Utility class holding attribute keys with special meaning to AWS components */
1113
final class AwsAttributeKeys {
1214

13-
private AwsAttributeKeys() {}
14-
15-
static final AttributeKey<String> AWS_SPAN_KIND = AttributeKey.stringKey("aws.span.kind");
15+
static final AttributeKey<String> AWS_SPAN_KIND = stringKey("aws.span.kind");
1616

17-
static final AttributeKey<String> AWS_LOCAL_SERVICE = AttributeKey.stringKey("aws.local.service");
17+
static final AttributeKey<String> AWS_LOCAL_SERVICE = stringKey("aws.local.service");
1818

19-
static final AttributeKey<String> AWS_LOCAL_OPERATION =
20-
AttributeKey.stringKey("aws.local.operation");
19+
static final AttributeKey<String> AWS_LOCAL_OPERATION = stringKey("aws.local.operation");
2120

22-
static final AttributeKey<String> AWS_REMOTE_SERVICE =
23-
AttributeKey.stringKey("aws.remote.service");
21+
static final AttributeKey<String> AWS_REMOTE_SERVICE = stringKey("aws.remote.service");
2422

25-
static final AttributeKey<String> AWS_REMOTE_OPERATION =
26-
AttributeKey.stringKey("aws.remote.operation");
23+
static final AttributeKey<String> AWS_REMOTE_OPERATION = stringKey("aws.remote.operation");
2724

28-
static final AttributeKey<String> AWS_REMOTE_TARGET = AttributeKey.stringKey("aws.remote.target");
25+
static final AttributeKey<String> AWS_REMOTE_TARGET = stringKey("aws.remote.target");
2926

3027
// use the same AWS Resource attribute name defined by OTel java auto-instr for aws_sdk_v_1_1
3128
// TODO: all AWS specific attributes should be defined in semconv package and reused cross all
3229
// otel packages. Related sim -
3330
// https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/8710
3431

35-
static final AttributeKey<String> AWS_BUCKET_NAME = AttributeKey.stringKey("aws.bucket.name");
36-
static final AttributeKey<String> AWS_QUEUE_NAME = AttributeKey.stringKey("aws.queue.name");
37-
static final AttributeKey<String> AWS_STREAM_NAME = AttributeKey.stringKey("aws.stream.name");
38-
static final AttributeKey<String> AWS_TABLE_NAME = AttributeKey.stringKey("aws.table.name");
32+
static final AttributeKey<String> AWS_BUCKET_NAME = stringKey("aws.bucket.name");
33+
static final AttributeKey<String> AWS_QUEUE_NAME = stringKey("aws.queue.name");
34+
static final AttributeKey<String> AWS_STREAM_NAME = stringKey("aws.stream.name");
35+
static final AttributeKey<String> AWS_TABLE_NAME = stringKey("aws.table.name");
36+
37+
private AwsAttributeKeys() {}
3938
}

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsMetricAttributesSpanExporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
* attributes.
3131
*/
3232
@Immutable
33-
public class AwsMetricAttributesSpanExporter implements SpanExporter {
33+
public final class AwsMetricAttributesSpanExporter implements SpanExporter {
3434

3535
private final SpanExporter delegate;
3636
private final MetricAttributeGenerator generator;

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsMetricAttributesSpanExporterBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import io.opentelemetry.sdk.resources.Resource;
1212
import io.opentelemetry.sdk.trace.export.SpanExporter;
1313

14-
public class AwsMetricAttributesSpanExporterBuilder {
14+
public final class AwsMetricAttributesSpanExporterBuilder {
1515

1616
// Defaults
1717
private static final MetricAttributeGenerator DEFAULT_GENERATOR =

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsSpanMetricsProcessor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.contrib.awsxray;
77

8+
import static io.opentelemetry.api.common.AttributeKey.longKey;
9+
810
import io.opentelemetry.api.common.AttributeKey;
911
import io.opentelemetry.api.common.Attributes;
1012
import io.opentelemetry.api.metrics.DoubleHistogram;
@@ -41,7 +43,7 @@
4143
public final class AwsSpanMetricsProcessor implements SpanProcessor {
4244

4345
private static final AttributeKey<Long> HTTP_STATUS_CODE =
44-
AttributeKey.longKey("http.status_code");
46+
longKey("http.status_code");
4547

4648
private static final double NANOS_TO_MILLIS = 1_000_000.0;
4749

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsXrayRemoteSampler.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55

66
package io.opentelemetry.contrib.awsxray;
77

8+
import static java.util.concurrent.TimeUnit.NANOSECONDS;
9+
import static java.util.concurrent.TimeUnit.SECONDS;
10+
import static java.util.logging.FINE;
11+
import static java.util.stream.Collectors.toList;
12+
import static java.util.stream.Collectors.toMap;
13+
import static java.util.stream.Collectors.toSet;
14+
815
import io.opentelemetry.api.common.Attributes;
916
import io.opentelemetry.api.trace.SpanKind;
1017
import io.opentelemetry.context.Context;
@@ -29,17 +36,15 @@
2936
import java.util.concurrent.ScheduledExecutorService;
3037
import java.util.concurrent.ScheduledFuture;
3138
import java.util.concurrent.ThreadLocalRandom;
32-
import java.util.concurrent.TimeUnit;
3339
import java.util.function.Function;
3440
import java.util.logging.Level;
3541
import java.util.logging.Logger;
36-
import java.util.stream.Collectors;
3742
import javax.annotation.Nullable;
3843

3944
/** Remote sampler that gets sampling configuration from AWS X-Ray. */
4045
public final class AwsXrayRemoteSampler implements Sampler, Closeable {
4146

42-
static final long DEFAULT_TARGET_INTERVAL_NANOS = TimeUnit.SECONDS.toNanos(10);
47+
static final long DEFAULT_TARGET_INTERVAL_NANOS = SECONDS.toNanos(10);
4348

4449
private static final Logger logger = Logger.getLogger(AwsXrayRemoteSampler.class.getName());
4550

@@ -134,26 +139,25 @@ private void getAndUpdateSampler() {
134139
initialSampler,
135140
response.getSamplingRules().stream()
136141
.map(SamplingRuleRecord::getRule)
137-
.collect(Collectors.toList())));
142+
.collect(toList())));
138143

139144
previousRulesResponse = response;
140145
ScheduledFuture<?> existingFetchTargetsFuture = fetchTargetsFuture;
141146
if (existingFetchTargetsFuture != null) {
142147
existingFetchTargetsFuture.cancel(false);
143148
}
144149
fetchTargetsFuture =
145-
executor.schedule(
146-
this::fetchTargets, DEFAULT_TARGET_INTERVAL_NANOS, TimeUnit.NANOSECONDS);
150+
executor.schedule(this::fetchTargets, DEFAULT_TARGET_INTERVAL_NANOS, NANOSECONDS);
147151
}
148152
} catch (Throwable t) {
149-
logger.log(Level.FINE, "Failed to update sampler", t);
153+
logger.log(FINE, "Failed to update sampler", t);
150154
}
151155
scheduleSamplerUpdate();
152156
}
153157

154158
private void scheduleSamplerUpdate() {
155159
long delay = pollingIntervalNanos + jitterNanos.next();
156-
pollFuture = executor.schedule(this::getAndUpdateSampler, delay, TimeUnit.NANOSECONDS);
160+
pollFuture = executor.schedule(this::getAndUpdateSampler, delay, NANOSECONDS);
157161
}
158162

159163
/**
@@ -168,7 +172,7 @@ Duration getNextSamplerUpdateScheduledDuration() {
168172
if (pollFuture == null) {
169173
return null;
170174
}
171-
return Duration.ofNanos(pollFuture.getDelay(TimeUnit.NANOSECONDS));
175+
return Duration.ofNanos(pollFuture.getDelay(NANOSECONDS));
172176
}
173177

174178
private void fetchTargets() {
@@ -181,28 +185,25 @@ private void fetchTargets() {
181185
Date now = Date.from(Instant.ofEpochSecond(0, clock.now()));
182186
List<SamplingStatisticsDocument> statistics = xrayRulesSampler.snapshot(now);
183187
Set<String> requestedTargetRuleNames =
184-
statistics.stream()
185-
.map(SamplingStatisticsDocument::getRuleName)
186-
.collect(Collectors.toSet());
188+
statistics.stream().map(SamplingStatisticsDocument::getRuleName).collect(toSet());
187189

188190
GetSamplingTargetsResponse response =
189191
client.getSamplingTargets(GetSamplingTargetsRequest.create(statistics));
190192
Map<String, SamplingTargetDocument> targets =
191193
response.getDocuments().stream()
192-
.collect(Collectors.toMap(SamplingTargetDocument::getRuleName, Function.identity()));
194+
.collect(toMap(SamplingTargetDocument::getRuleName, Function.identity()));
193195
updateInternalSamplers(xrayRulesSampler.withTargets(targets, requestedTargetRuleNames, now));
194196
} catch (Throwable t) {
195197
// Might be a transient API failure, try again after a default interval.
196198
fetchTargetsFuture =
197-
executor.schedule(
198-
this::fetchTargets, DEFAULT_TARGET_INTERVAL_NANOS, TimeUnit.NANOSECONDS);
199+
executor.schedule(this::fetchTargets, DEFAULT_TARGET_INTERVAL_NANOS, NANOSECONDS);
199200
return;
200201
}
201202

202203
long nextTargetFetchIntervalNanos =
203204
xrayRulesSampler.nextTargetFetchTimeNanos() - clock.nanoTime();
204205
fetchTargetsFuture =
205-
executor.schedule(this::fetchTargets, nextTargetFetchIntervalNanos, TimeUnit.NANOSECONDS);
206+
executor.schedule(this::fetchTargets, nextTargetFetchIntervalNanos, NANOSECONDS);
206207
}
207208

208209
@Override

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsXrayRemoteSamplerBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package io.opentelemetry.contrib.awsxray;
77

88
import static java.util.Objects.requireNonNull;
9+
import static java.util.concurrent.TimeUnit.NANOSECONDS;
10+
import static java.util.concurrent.TimeUnit.SECONDS;
911

1012
import com.google.errorprone.annotations.CanIgnoreReturnValue;
1113
import io.opentelemetry.sdk.common.Clock;
@@ -26,7 +28,7 @@ public final class AwsXrayRemoteSamplerBuilder {
2628
private Clock clock = Clock.getDefault();
2729
private String endpoint = DEFAULT_ENDPOINT;
2830
@Nullable private Sampler initialSampler;
29-
private long pollingIntervalNanos = TimeUnit.SECONDS.toNanos(DEFAULT_POLLING_INTERVAL_SECS);
31+
private long pollingIntervalNanos = SECONDS.toNanos(DEFAULT_POLLING_INTERVAL_SECS);
3032

3133
AwsXrayRemoteSamplerBuilder(Resource resource) {
3234
this.resource = resource;
@@ -51,7 +53,7 @@ public AwsXrayRemoteSamplerBuilder setEndpoint(String endpoint) {
5153
@CanIgnoreReturnValue
5254
public AwsXrayRemoteSamplerBuilder setPollingInterval(Duration delay) {
5355
requireNonNull(delay, "delay");
54-
return setPollingInterval(delay.toNanos(), TimeUnit.NANOSECONDS);
56+
return setPollingInterval(delay.toNanos(), NANOSECONDS);
5557
}
5658

5759
/**

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/AwsXrayRemoteSamplerProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.Map;
1616

1717
@AutoService(ConfigurableSamplerProvider.class)
18-
public class AwsXrayRemoteSamplerProvider implements ConfigurableSamplerProvider {
18+
public final class AwsXrayRemoteSamplerProvider implements ConfigurableSamplerProvider {
1919

2020
@Override
2121
public Sampler createSampler(ConfigProperties config) {

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/SamplingRuleApplier.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
package io.opentelemetry.contrib.awsxray;
77

8+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
89
import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_NAME;
10+
import static java.util.Collections.emptyMap;
11+
import static java.util.Collections.unmodifiableMap;
12+
import static java.util.concurrent.TimeUnit.SECONDS;
913

1014
import io.opentelemetry.api.common.AttributeKey;
1115
import io.opentelemetry.api.common.Attributes;
@@ -23,12 +27,10 @@
2327
import io.opentelemetry.semconv.ServerAttributes;
2428
import io.opentelemetry.semconv.UrlAttributes;
2529
import java.time.Duration;
26-
import java.util.Collections;
2730
import java.util.Date;
2831
import java.util.HashMap;
2932
import java.util.List;
3033
import java.util.Map;
31-
import java.util.concurrent.TimeUnit;
3234
import java.util.concurrent.atomic.LongAdder;
3335
import java.util.regex.Pattern;
3436
import java.util.stream.Collectors;
@@ -38,25 +40,23 @@ final class SamplingRuleApplier {
3840

3941
// copied from AwsIncubatingAttributes
4042
private static final AttributeKey<String> AWS_ECS_CONTAINER_ARN =
41-
AttributeKey.stringKey("aws.ecs.container.arn");
43+
stringKey("aws.ecs.container.arn");
4244
// copied from CloudIncubatingAttributes
43-
private static final AttributeKey<String> CLOUD_PLATFORM =
44-
AttributeKey.stringKey("cloud.platform");
45-
private static final AttributeKey<String> CLOUD_RESOURCE_ID =
46-
AttributeKey.stringKey("cloud.resource_id");
45+
private static final AttributeKey<String> CLOUD_PLATFORM = stringKey("cloud.platform");
46+
private static final AttributeKey<String> CLOUD_RESOURCE_ID = stringKey("cloud.resource_id");
4747
// copied from CloudIncubatingAttributes.CloudPlatformIncubatingValues
4848
public static final String AWS_EC2 = "aws_ec2";
4949
public static final String AWS_ECS = "aws_ecs";
5050
public static final String AWS_EKS = "aws_eks";
5151
public static final String AWS_LAMBDA = "aws_lambda";
5252
public static final String AWS_ELASTIC_BEANSTALK = "aws_elastic_beanstalk";
5353
// copied from HttpIncubatingAttributes
54-
private static final AttributeKey<String> HTTP_HOST = AttributeKey.stringKey("http.host");
55-
private static final AttributeKey<String> HTTP_METHOD = AttributeKey.stringKey("http.method");
56-
private static final AttributeKey<String> HTTP_TARGET = AttributeKey.stringKey("http.target");
57-
private static final AttributeKey<String> HTTP_URL = AttributeKey.stringKey("http.url");
54+
private static final AttributeKey<String> HTTP_HOST = stringKey("http.host");
55+
private static final AttributeKey<String> HTTP_METHOD = stringKey("http.method");
56+
private static final AttributeKey<String> HTTP_TARGET = stringKey("http.target");
57+
private static final AttributeKey<String> HTTP_URL = stringKey("http.url");
5858
// copied from NetIncubatingAttributes
59-
private static final AttributeKey<String> NET_HOST_NAME = AttributeKey.stringKey("net.host.name");
59+
private static final AttributeKey<String> NET_HOST_NAME = stringKey("net.host.name");
6060

6161
private static final Map<String, String> XRAY_CLOUD_PLATFORM;
6262

@@ -71,7 +71,7 @@ final class SamplingRuleApplier {
7171
xrayCloudPlatform.put(AWS_EKS, "AWS::EKS::Container");
7272
xrayCloudPlatform.put(AWS_ELASTIC_BEANSTALK, "AWS::ElasticBeanstalk::Environment");
7373
xrayCloudPlatform.put(AWS_LAMBDA, "AWS::Lambda::Function");
74-
XRAY_CLOUD_PLATFORM = Collections.unmodifiableMap(xrayCloudPlatform);
74+
XRAY_CLOUD_PLATFORM = unmodifiableMap(xrayCloudPlatform);
7575
}
7676

7777
private final String clientId;
@@ -127,7 +127,7 @@ final class SamplingRuleApplier {
127127
fixedRateSampler = createFixedRate(rule.getFixedRate());
128128

129129
if (rule.getAttributes().isEmpty()) {
130-
attributeMatchers = Collections.emptyMap();
130+
attributeMatchers = emptyMap();
131131
} else {
132132
attributeMatchers =
133133
rule.getAttributes().entrySet().stream()
@@ -317,7 +317,7 @@ SamplingRuleApplier withTarget(SamplingTargetDocument target, Date now) {
317317
}
318318
long intervalNanos =
319319
target.getIntervalSecs() != null
320-
? TimeUnit.SECONDS.toNanos(target.getIntervalSecs())
320+
? SECONDS.toNanos(target.getIntervalSecs())
321321
: AwsXrayRemoteSampler.DEFAULT_TARGET_INTERVAL_NANOS;
322322
long newNextSnapshotTimeNanos = clock.nanoTime() + intervalNanos;
323323

aws-xray/src/main/java/io/opentelemetry/contrib/awsxray/XrayRulesSampler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.contrib.awsxray;
77

8+
import static java.util.logging.Level.FINE;
9+
810
import io.opentelemetry.api.common.Attributes;
911
import io.opentelemetry.api.trace.SpanKind;
1012
import io.opentelemetry.context.Context;
@@ -84,7 +86,7 @@ public SamplingResult shouldSample(
8486
// In practice, X-Ray always returns a Default rule that matches all requests so it is a bug in
8587
// our code or X-Ray to reach here, fallback just in case.
8688
logger.log(
87-
Level.FINE,
89+
FINE,
8890
"No sampling rule matched the request. "
8991
+ "This is a bug in either the OpenTelemetry SDK or X-Ray.");
9092
return fallbackSampler.shouldSample(

0 commit comments

Comments
 (0)