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 57952778a..caa05bf25 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 da0accdca..95bbc7d1f 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 7f594092d..219db910e 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 3777ed257..3a7607918 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 74ff9f93f..5a6ce5f40 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 29886337b..ea88f93eb 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 929f7d1ba..c7146cf49 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 af883b96e..a22394f05 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) {