From 494d2a5b65d41288c11fa7ccd427647e27044e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E7=8E=89=E6=A1=94?= Date: Wed, 19 Aug 2020 21:21:09 +0800 Subject: [PATCH] Elastic job plugin use wrong span type (#5347) --- .../apm/agent/core/context/tag/Tags.java | 2 ++ .../elasticjob/ElasticJobExecutorInterceptor.java | 5 +++-- .../apm/plugin/graphql/v12/GraphqlInterceptor.java | 6 +----- .../apm/plugin/graphql/v8/GraphqlInterceptor.java | 6 +----- .../apm/plugin/graphql/v9/GraphqlInterceptor.java | 6 +----- .../config/expectedData.yaml | 3 ++- .../elasticjob/controller/CaseController.java | 8 +++++--- .../apm/testcase/elasticjob/job/DemoSimpleJob.java | 14 +++++++++++++- 8 files changed, 28 insertions(+), 22 deletions(-) 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 57952778ad..caa05bf255 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 da0accdcab..95bbc7d1f4 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 7f594092de..219db910ec 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 3777ed2572..3a76079186 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 74ff9f93fb..5a6ce5f40f 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 29886337ba..ea88f93ebf 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 929f7d1ba1..c7146cf498 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 af883b96e2..a22394f058 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) { -- GitLab