Skip to content

Commit 7c1dd52

Browse files
committed
Address review comment
1 parent de49063 commit 7c1dd52

File tree

14 files changed

+262
-246
lines changed

14 files changed

+262
-246
lines changed

instrumentation/apache-elasticjob-3.0/javaagent/build.gradle.kts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,5 @@ dependencies {
1818
}
1919

2020
tasks.withType<Test>().configureEach {
21-
// required on jdk17
22-
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
23-
jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
2421
jvmArgs("-Dotel.instrumentation.apache-elasticjob.experimental-span-attributes=true")
2522
}

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/DataflowJobExecutorInstrumentation.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,9 @@ public static ElasticJobHelper.ElasticJobScope onEnter(
5050
@Advice.Argument(3) ShardingContext shardingContext) {
5151

5252
ElasticJobProcessRequest request =
53-
ElasticJobProcessRequest.createWithUserJobInfo(
54-
shardingContext.getJobName(),
55-
shardingContext.getTaskId(),
56-
shardingContext.getShardingItem(),
57-
shardingContext.getShardingTotalCount(),
58-
shardingContext.getShardingParameter() != null
59-
? shardingContext.getShardingParameter()
60-
: "",
61-
"DATAFLOW",
53+
ElasticJobProcessRequest.createFromShardingContext(
54+
shardingContext,
55+
ElasticJobType.DATAFLOW.getValue(),
6256
elasticJob.getClass(),
6357
"processData");
6458

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobCodeAttributesGetter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ public String getMethodName(ElasticJobProcessRequest request) {
2424
if (request.isScriptJob() || request.isHttpJob()) {
2525
return null;
2626
}
27-
return request.getUserMethodName() != null ? request.getUserMethodName() : "process";
27+
return request.getUserMethodName();
2828
}
2929
}

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobExecutorInstrumentation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public static ElasticJobHelper.ElasticJobScope onEnter(
5353
@Advice.Argument(1) ShardingContexts shardingContexts,
5454
@Advice.Argument(2) int item) {
5555

56-
String jobType = determineJobTypeFromExecutor(jobItemExecutor);
57-
if (!"SCRIPT".equals(jobType) && !"HTTP".equals(jobType)) {
56+
ElasticJobType jobType = determineJobTypeFromExecutor(jobItemExecutor);
57+
if (jobType != ElasticJobType.SCRIPT && jobType != ElasticJobType.HTTP) {
5858
return null;
5959
}
6060
ElasticJobProcessRequest request =
@@ -66,7 +66,7 @@ public static ElasticJobHelper.ElasticJobScope onEnter(
6666
shardingContexts.getShardingItemParameters() == null
6767
? ""
6868
: shardingContexts.getShardingItemParameters().toString(),
69-
jobType);
69+
jobType.getValue());
7070
return helper().startSpan(request);
7171
}
7272

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobExperimentalAttributeExtractor.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,29 @@
55

66
package io.opentelemetry.javaagent.instrumentation.apacheelasticjob.v3_0;
77

8+
import static io.opentelemetry.api.common.AttributeKey.longKey;
9+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
10+
811
import io.opentelemetry.api.common.AttributeKey;
912
import io.opentelemetry.api.common.AttributesBuilder;
1013
import io.opentelemetry.context.Context;
1114
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
1215
import javax.annotation.Nullable;
16+
import org.apache.commons.lang3.StringUtils;
1317

1418
class ElasticJobExperimentalAttributeExtractor
1519
implements AttributesExtractor<ElasticJobProcessRequest, Void> {
1620

1721
private static final AttributeKey<String> ELASTICJOB_JOB_NAME =
18-
AttributeKey.stringKey("scheduling.apache-elasticjob.job.name");
22+
stringKey("scheduling.apache-elasticjob.job.name");
1923
private static final AttributeKey<String> ELASTICJOB_TASK_ID =
20-
AttributeKey.stringKey("scheduling.apache-elasticjob.task.id");
24+
stringKey("scheduling.apache-elasticjob.task.id");
2125
private static final AttributeKey<Long> ELASTICJOB_SHARDING_ITEM_INDEX =
22-
AttributeKey.longKey("scheduling.apache-elasticjob.sharding.item.index");
26+
longKey("scheduling.apache-elasticjob.sharding.item.index");
2327
private static final AttributeKey<Long> ELASTICJOB_SHARDING_TOTAL_COUNT =
24-
AttributeKey.longKey("scheduling.apache-elasticjob.sharding.total.count");
28+
longKey("scheduling.apache-elasticjob.sharding.total.count");
2529
private static final AttributeKey<String> ELASTICJOB_SHARDING_ITEM_PARAMETERS =
26-
AttributeKey.stringKey("scheduling.apache-elasticjob.sharding.item.parameters");
30+
stringKey("scheduling.apache-elasticjob.sharding.item.parameters");
2731

2832
@Override
2933
public void onStart(
@@ -35,7 +39,7 @@ public void onStart(
3539
attributes.put(ELASTICJOB_SHARDING_ITEM_INDEX, elasticJobProcessRequest.getShardingItemIndex());
3640
attributes.put(
3741
ELASTICJOB_SHARDING_TOTAL_COUNT, elasticJobProcessRequest.getShardingTotalCount());
38-
if (elasticJobProcessRequest.getShardingItemParameters() != null) {
42+
if (!StringUtils.isEmpty(elasticJobProcessRequest.getShardingItemParameters())) {
3943
attributes.put(
4044
ELASTICJOB_SHARDING_ITEM_PARAMETERS,
4145
elasticJobProcessRequest.getShardingItemParameters());

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobInstrumentationModule.java

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

66
package io.opentelemetry.javaagent.instrumentation.apacheelasticjob.v3_0;
77

8+
import static java.util.Arrays.asList;
9+
810
import com.google.auto.service.AutoService;
911
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1012
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
11-
import java.util.Arrays;
13+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1214
import java.util.List;
1315

1416
@AutoService(InstrumentationModule.class)
15-
public class ElasticJobInstrumentationModule extends InstrumentationModule {
17+
public class ElasticJobInstrumentationModule extends InstrumentationModule
18+
implements ExperimentalInstrumentationModule {
1619

1720
public ElasticJobInstrumentationModule() {
1821
super("apache-elasticjob", "apache-elasticjob-3.0");
1922
}
2023

2124
@Override
2225
public List<TypeInstrumentation> typeInstrumentations() {
23-
return Arrays.asList(
26+
return asList(
2427
new ElasticJobExecutorInstrumentation(),
2528
new SimpleJobExecutorInstrumentation(),
2629
new DataflowJobExecutorInstrumentation());
2730
}
31+
32+
@Override
33+
public boolean isIndyReady() {
34+
return true;
35+
}
2836
}

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobInstrumenterFactory.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobProcessRequest.java

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

66
package io.opentelemetry.javaagent.instrumentation.apacheelasticjob.v3_0;
77

8+
import org.apache.shardingsphere.elasticjob.api.ShardingContext;
9+
810
public final class ElasticJobProcessRequest {
911
private String jobName;
1012
private String taskId;
@@ -14,7 +16,7 @@ public final class ElasticJobProcessRequest {
1416
private boolean failed;
1517
private String jobType;
1618
private Class<?> userJobClass;
17-
private String userMethodName;
19+
private String userMethodName = "process";
1820

1921
public static ElasticJobProcessRequest create(
2022
String jobName,
@@ -54,6 +56,22 @@ public static ElasticJobProcessRequest createWithUserJobInfo(
5456
return request;
5557
}
5658

59+
public static ElasticJobProcessRequest createFromShardingContext(
60+
ShardingContext shardingContext,
61+
String jobType,
62+
Class<?> userJobClass,
63+
String userMethodName) {
64+
return createWithUserJobInfo(
65+
shardingContext.getJobName(),
66+
shardingContext.getTaskId(),
67+
shardingContext.getShardingItem(),
68+
shardingContext.getShardingTotalCount(),
69+
shardingContext.getShardingParameter(),
70+
jobType,
71+
userJobClass,
72+
userMethodName);
73+
}
74+
5775
public void setFailed() {
5876
this.failed = true;
5977
}

instrumentation/apache-elasticjob-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/apacheelasticjob/v3_0/ElasticJobSingletons.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,48 @@
55

66
package io.opentelemetry.javaagent.instrumentation.apacheelasticjob.v3_0;
77

8+
import io.opentelemetry.api.GlobalOpenTelemetry;
9+
import io.opentelemetry.api.common.AttributeKey;
10+
import io.opentelemetry.api.trace.StatusCode;
11+
import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesExtractor;
12+
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
813
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
14+
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
15+
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
916

1017
public final class ElasticJobSingletons {
1118
private static final String INSTRUMENTATION_NAME = "io.opentelemetry.apache-elasticjob-3.0";
19+
private static final boolean CAPTURE_EXPERIMENTAL_SPAN_ATTRIBUTES =
20+
AgentInstrumentationConfig.get()
21+
.getBoolean("otel.instrumentation.apache-elasticjob.experimental-span-attributes", false);
22+
1223
private static final Instrumenter<ElasticJobProcessRequest, Void> INSTRUMENTER =
13-
ElasticJobInstrumenterFactory.create(INSTRUMENTATION_NAME);
24+
createInstrumenter();
1425
private static final ElasticJobHelper HELPER = ElasticJobHelper.create(INSTRUMENTER);
1526

27+
private static Instrumenter<ElasticJobProcessRequest, Void> createInstrumenter() {
28+
ElasticJobCodeAttributesGetter codeAttributesGetter = new ElasticJobCodeAttributesGetter();
29+
InstrumenterBuilder<ElasticJobProcessRequest, Void> builder =
30+
Instrumenter.<ElasticJobProcessRequest, Void>builder(
31+
GlobalOpenTelemetry.get(),
32+
INSTRUMENTATION_NAME,
33+
new ElasticJobSpanNameExtractor(codeAttributesGetter))
34+
.addAttributesExtractor(CodeAttributesExtractor.create(codeAttributesGetter))
35+
.setSpanStatusExtractor(
36+
(spanStatusBuilder, elasticJobProcessRequest, unused, error) -> {
37+
if (error != null || elasticJobProcessRequest.isFailed()) {
38+
spanStatusBuilder.setStatus(StatusCode.ERROR);
39+
}
40+
});
41+
if (CAPTURE_EXPERIMENTAL_SPAN_ATTRIBUTES) {
42+
builder.addAttributesExtractor(
43+
AttributesExtractor.constant(AttributeKey.stringKey("job.system"), "elasticjob"));
44+
builder.addAttributesExtractor(new ElasticJobExperimentalAttributeExtractor());
45+
}
46+
47+
return builder.buildInstrumenter();
48+
}
49+
1650
public static ElasticJobHelper helper() {
1751
return HELPER;
1852
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.apacheelasticjob.v3_0;
7+
8+
public enum ElasticJobType {
9+
SIMPLE("SIMPLE"),
10+
DATAFLOW("DATAFLOW"),
11+
HTTP("HTTP"),
12+
SCRIPT("SCRIPT"),
13+
UNKNOWN("UNKNOWN");
14+
15+
private final String value;
16+
17+
ElasticJobType(String value) {
18+
this.value = value;
19+
}
20+
21+
public String getValue() {
22+
return value;
23+
}
24+
25+
@Override
26+
public String toString() {
27+
return value;
28+
}
29+
}

0 commit comments

Comments
 (0)