diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/tag/Tags.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/tag/Tags.java index 57952778adc48d3ac9774374adda17a5f542b1d6..caa05bf2558ba8699e53aa59ed6941210f00ff88 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/tag/Tags.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/tag/Tags.java @@ -87,6 +87,8 @@ public final class Tags { public static final StringTag LOGIC_ENDPOINT = new StringTag(12, "x-le"); + public static final String VAL_LOCAL_SPAN_AS_LOGIC_ENDPOINT = "{\"logic-span\":true}"; + /** * Creates a {@code StringTag} with the given key and cache it, if it's created before, simply return it without * creating a new one. diff --git a/apm-sniffer/apm-sdk-plugin/elastic-job-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticjob/ElasticJobExecutorInterceptor.java b/apm-sniffer/apm-sdk-plugin/elastic-job-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticjob/ElasticJobExecutorInterceptor.java index da0accdcab221c0833de0423c2dc721b42e52ff6..95bbc7d1f46fb82efd82f0915ef43695cb0c8f9e 100644 --- a/apm-sniffer/apm-sdk-plugin/elastic-job-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticjob/ElasticJobExecutorInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/elastic-job-3.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/elasticjob/ElasticJobExecutorInterceptor.java @@ -19,8 +19,8 @@ package org.apache.skywalking.apm.plugin.elasticjob; import org.apache.shardingsphere.elasticjob.api.listener.ShardingContexts; -import org.apache.skywalking.apm.agent.core.context.ContextCarrier; import org.apache.skywalking.apm.agent.core.context.ContextManager; +import org.apache.skywalking.apm.agent.core.context.tag.Tags; import org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; @@ -36,8 +36,9 @@ public class ElasticJobExecutorInterceptor implements InstanceMethodsAroundInter ShardingContexts shardingContexts = (ShardingContexts) allArguments[0]; Integer item = (Integer) allArguments[1]; String operateName = ComponentsDefine.ELASTIC_JOB.getName() + "/" + shardingContexts.getJobName(); - AbstractSpan span = ContextManager.createEntrySpan(operateName, new ContextCarrier()); + AbstractSpan span = ContextManager.createLocalSpan(operateName); span.setComponent(ComponentsDefine.ELASTIC_JOB); + Tags.LOGIC_ENDPOINT.set(span, Tags.VAL_LOCAL_SPAN_AS_LOGIC_ENDPOINT); span.tag("item", item == null ? "" : String.valueOf(item)); span.tag("shardingTotalCount", Integer.toString(shardingContexts.getShardingTotalCount())); span.tag("taskId", shardingContexts.getTaskId()); diff --git a/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-12.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v12/GraphqlInterceptor.java b/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-12.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v12/GraphqlInterceptor.java index 7f594092de20a11274ae918f890a030fa25e14fe..219db910ec0e4ede2a01efe4c18db2fa5ac100c9 100644 --- a/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-12.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v12/GraphqlInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-12.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v12/GraphqlInterceptor.java @@ -39,7 +39,7 @@ public class GraphqlInterceptor implements InstanceMethodsAroundInterceptor { return; } AbstractSpan span = ContextManager.createLocalSpan(parameters.getField().getSingleField().getName()); - Tags.LOGIC_ENDPOINT.set(span, buildLogicEndpointSpan()); + Tags.LOGIC_ENDPOINT.set(span, Tags.VAL_LOCAL_SPAN_AS_LOGIC_ENDPOINT); span.setComponent(ComponentsDefine.GRAPHQL); } @@ -67,8 +67,4 @@ public class GraphqlInterceptor implements InstanceMethodsAroundInterceptor { span.errorOccurred(); span.log(throwable); } - - private String buildLogicEndpointSpan() { - return "{\"logic-span\":true}"; - } } diff --git a/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v8/GraphqlInterceptor.java b/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v8/GraphqlInterceptor.java index 3777ed2572f4ac0c5c6b3e4b05551883823b014d..3a7607918664fe872e3f9610c084da68b8798a4b 100644 --- a/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v8/GraphqlInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-8.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v8/GraphqlInterceptor.java @@ -48,7 +48,7 @@ public class GraphqlInterceptor implements InstanceMethodsAroundInterceptor { return; } AbstractSpan span = ContextManager.createLocalSpan(parameters.getField().get(0).getName()); - Tags.LOGIC_ENDPOINT.set(span, buildLogicEndpointSpan()); + Tags.LOGIC_ENDPOINT.set(span, Tags.VAL_LOCAL_SPAN_AS_LOGIC_ENDPOINT); span.setComponent(ComponentsDefine.GRAPHQL); } catch (NoSuchFieldException | IllegalAccessException e) { } @@ -98,8 +98,4 @@ public class GraphqlInterceptor implements InstanceMethodsAroundInterceptor { span.errorOccurred(); span.log(throwable); } - - private String buildLogicEndpointSpan() { - return "{\"logic-span\":true}"; - } } diff --git a/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-9.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v9/GraphqlInterceptor.java b/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-9.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v9/GraphqlInterceptor.java index 74ff9f93fbb6c00c18b9550bd26351f2b55767ba..5a6ce5f40f1a19989657a8ad35d20229f9322a06 100644 --- a/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-9.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v9/GraphqlInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/graphql-plugin/graphql-9.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/graphql/v9/GraphqlInterceptor.java @@ -39,7 +39,7 @@ public class GraphqlInterceptor implements InstanceMethodsAroundInterceptor { return; } AbstractSpan span = ContextManager.createLocalSpan(parameters.getField().get(0).getName()); - Tags.LOGIC_ENDPOINT.set(span, buildLogicEndpointSpan()); + Tags.LOGIC_ENDPOINT.set(span, Tags.VAL_LOCAL_SPAN_AS_LOGIC_ENDPOINT); span.setComponent(ComponentsDefine.GRAPHQL); } @@ -67,8 +67,4 @@ public class GraphqlInterceptor implements InstanceMethodsAroundInterceptor { span.errorOccurred(); span.log(throwable); } - - private String buildLogicEndpointSpan() { - return "{\"logic-span\":true}"; - } } diff --git a/test/plugin/scenarios/elasticjob-3.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/elasticjob-3.x-scenario/config/expectedData.yaml index 29886337ba57282afd141205fa9a7a85cfbb8b53..ea88f93ebf24e3f88a4d4bf410a194a0c88ff912 100644 --- a/test/plugin/scenarios/elasticjob-3.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/elasticjob-3.x-scenario/config/expectedData.yaml @@ -43,10 +43,11 @@ segmentItems: endTime: not null componentId: 24 isError: false - spanType: Entry + spanType: Local peer: '' skipAnalysis: false tags: + - {key: x-le, value: '{"logic-span":true}'} - {key: item, value: '0'} - {key: shardingTotalCount, value: '1'} - {key: taskId, value: not null} diff --git a/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/controller/CaseController.java b/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/controller/CaseController.java index 929f7d1ba1cb409ed9193c6f4fcf4db7bcad5c27..c7146cf498e18ec7875a82e40debf18efc5b1f7f 100644 --- a/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/controller/CaseController.java +++ b/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/controller/CaseController.java @@ -18,8 +18,8 @@ package org.apache.skywalking.apm.testcase.elasticjob.controller; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import org.apache.skywalking.apm.testcase.elasticjob.job.DemoSimpleJob; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @@ -28,13 +28,15 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/case") public class CaseController { - private static final Logger logger = LogManager.getLogger(CaseController.class); + @Autowired + private DemoSimpleJob demoSimpleJob; private static final String SUCCESS = "Success"; @RequestMapping("/healthCheck") @ResponseBody public String healthCheck() throws Exception { + demoSimpleJob.getLatchAwait(); return SUCCESS; } diff --git a/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/job/DemoSimpleJob.java b/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/job/DemoSimpleJob.java index af883b96e2db4f84273e9985caed4ee7cff7e98d..a22394f05843ff337a19b32cf105a1225a8eb9c6 100644 --- a/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/job/DemoSimpleJob.java +++ b/test/plugin/scenarios/elasticjob-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/elasticjob/job/DemoSimpleJob.java @@ -30,19 +30,31 @@ import org.springframework.stereotype.Component; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.concurrent.CountDownLatch; @Component public class DemoSimpleJob implements SimpleJob { private final Logger logger = LoggerFactory.getLogger(DemoSimpleJob.class); OkHttpClient client = new OkHttpClient.Builder().build(); - + + private CountDownLatch latch = new CountDownLatch(1); + + public void getLatchAwait() throws InterruptedException { + try { + latch.await(); + } catch (InterruptedException e) { + throw e; + } + } + @Override public void execute(ShardingContext shardingContext) { logger.info("Elastic Job Item: {} | Time: {} | Thread: {} | {}", shardingContext.getShardingItem(), new SimpleDateFormat("HH:mm:ss").format(new Date()), Thread.currentThread().getId(), "SIMPLE"); Request request = new Request.Builder().url("http://localhost:8080/elasticjob-3.x-scenario/case/ping").build(); Response response = null; + latch.countDown(); try { response = client.newCall(request).execute(); } catch (IOException e) {