Fix the default ignore mechanism isn't accurate enough bug (#5839)

Co-authored-by: huliang <hl@yumeitech.com.cn>
Co-authored-by: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
This commit is contained in:
huliang 2020-11-16 10:23:05 +08:00 committed by GitHub
parent 7220643cbf
commit 832582427a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 67 additions and 2 deletions

View File

@ -19,6 +19,7 @@ Release Notes.
* Fix NPE in the nutz plugin.
* Provide Apache Commons DBCP 2.x plugin.
* Add the plugin for mssql-jtds 1.x plugin.
* Fix the default ignore mechanism isn't accurate enough bug.
#### OAP-Backend
* Add the `@SuperDataset` annotation for BrowserErrorLog.

View File

@ -27,8 +27,13 @@ import org.apache.skywalking.apm.agent.core.remote.GRPCChannelManager;
import org.apache.skywalking.apm.agent.core.remote.GRPCChannelStatus;
import org.apache.skywalking.apm.agent.core.sampling.SamplingService;
import java.util.Arrays;
@DefaultImplementor
public class ContextManagerExtendService implements BootService, GRPCChannelListener {
private String[] ignoreSuffixArray = new String[0];
private volatile GRPCChannelStatus status = GRPCChannelStatus.DISCONNECT;
@Override
@ -38,7 +43,7 @@ public class ContextManagerExtendService implements BootService, GRPCChannelList
@Override
public void boot() {
ignoreSuffixArray = Config.Agent.IGNORE_SUFFIX.split(",");
}
@Override
@ -61,7 +66,7 @@ public class ContextManagerExtendService implements BootService, GRPCChannelList
}
int suffixIdx = operationName.lastIndexOf(".");
if (suffixIdx > -1 && Config.Agent.IGNORE_SUFFIX.contains(operationName.substring(suffixIdx))) {
if (suffixIdx > -1 && Arrays.stream(ignoreSuffixArray).anyMatch(a -> a.equals(operationName.substring(suffixIdx)))) {
context = new IgnoredTracerContext();
} else {
SamplingService samplingService = ServiceManager.INSTANCE.findService(SamplingService.class);

View File

@ -0,0 +1,59 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.skywalking.apm.agent.core.context;
import org.apache.skywalking.apm.agent.core.boot.ServiceManager;
import org.apache.skywalking.apm.agent.core.conf.Config;
import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.Assert;
public class ContextManagerExtendServiceTest {
@Rule
public AgentServiceRule serviceRule = new AgentServiceRule();
@BeforeClass
public static void beforeClass() {
Config.Agent.KEEP_TRACING = true;
}
@AfterClass
public static void afterClass() {
Config.Agent.KEEP_TRACING = false;
ServiceManager.INSTANCE.shutdown();
}
@Test
public void testRequestUrlCreateTraceContext() {
ContextManagerExtendService extendService = ServiceManager.INSTANCE.findService(ContextManagerExtendService.class);
AbstractTracerContext tracerContext = extendService.createTraceContext("/app/demo/index.html", false);
String traceId = tracerContext.getReadablePrimaryTraceId();
Assert.assertEquals("Ignored_Trace", traceId);
tracerContext = extendService.createTraceContext("/app/demo/index.htm", false);
traceId = tracerContext.getReadablePrimaryTraceId();
Assert.assertNotEquals("Ignored_Trace", traceId);
}
}