Skip to content

Commit

Permalink
[pinpoint-apm#7654] Add base packgeoption
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed May 7, 2021
1 parent da797ec commit 0c1293a
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 8 deletions.
2 changes: 2 additions & 0 deletions agent/src/main/resources/pinpoint-root.config
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,8 @@ profiler.spandatasender.socket.type=OIO
profiler.spandatasender.write.buffer.highwatermark=16m
profiler.spandatasender.write.buffer.lowwatermark=8m

#profiler.pinpoint.base-package=com/navercorp/pinpoint/
#profiler.pinpoint.exclude-package=web/,sdk/

# Trace Agent active thread info.
profiler.pinpoint.activethread=true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ private static Properties loadProperties(String pinpointConfigFileName) throws I

private List<String> allowJdkClassNames = Collections.emptyList();

@Value("${profiler.pinpoint.base-package}")
private String pinpointBasePackage;
@Value("${profiler.pinpoint.exclude-package}")
private String pinpointExcludePackage;

@Value("${profiler.pinpoint.activethread}")
private boolean traceAgentActiveThread = true;

Expand Down Expand Up @@ -145,6 +150,7 @@ private static Properties loadProperties(String pinpointConfigFileName) throws I
@Value("${profiler.io.buffering.buffersize}")
private int ioBufferingBufferSize = 20;

@Value("profiler.jvm.vendor.name")
private String profileJvmVendorName;
// JVM
@Value("${profiler.os.name}")
Expand Down Expand Up @@ -245,6 +251,16 @@ void setAllowJdkClassNames(String allowJdkClassNames) {
this.allowJdkClassNames = StringUtils.tokenizeToStringList(allowJdkClassNames, ",");
}

@Override
public String getPinpointBasePackage() {
return pinpointBasePackage;
}

@Override
public String getPinpointExcludeSubPackage() {
return pinpointExcludePackage;
}

@Override
public boolean isTraceAgentActiveThread() {
return traceAgentActiveThread;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.navercorp.pinpoint.bootstrap.config.util.ValueResolver;
import com.navercorp.pinpoint.common.annotations.InterfaceAudience;
import com.navercorp.pinpoint.common.annotations.VisibleForTesting;
import com.navercorp.pinpoint.common.util.StringUtils;

import java.util.List;
import java.util.Map;
Expand All @@ -41,6 +42,9 @@ public interface ProfilerConfig {

List<String> getAllowJdkClassName();

String getPinpointBasePackage();
String getPinpointExcludeSubPackage();

boolean isTraceAgentActiveThread();

boolean isTraceAgentDataSource();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
import com.navercorp.pinpoint.bootstrap.instrument.DynamicTransformTrigger;
import com.navercorp.pinpoint.bootstrap.instrument.InstrumentContext;
import java.util.Objects;

import com.navercorp.pinpoint.common.util.StringUtils;
import com.navercorp.pinpoint.profiler.instrument.InstrumentEngine;
import com.navercorp.pinpoint.profiler.instrument.classloading.ClassInjector;
import com.navercorp.pinpoint.profiler.instrument.classloading.DebugTransformerClassInjector;
Expand All @@ -43,6 +45,7 @@
import com.navercorp.pinpoint.profiler.transformer.DefaultClassFileTransformerDispatcher;
import com.navercorp.pinpoint.profiler.transformer.DelegateTransformerRegistry;
import com.navercorp.pinpoint.profiler.transformer.DynamicTransformerRegistry;
import com.navercorp.pinpoint.profiler.transformer.PinpointClassFilter;
import com.navercorp.pinpoint.profiler.transformer.UnmodifiableClassFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -85,9 +88,18 @@ public ClassFileTransformer get() {

final TransformerRegistry transformerRegistry = newTransformerRegistry();

final String classFilterBasePackage = StringUtils.defaultString(profilerConfig.getPinpointBasePackage(), PinpointClassFilter.DEFAULT_PACKAGE);
List<String> excludeSub = StringUtils.tokenizeToStringList(profilerConfig.getPinpointExcludeSubPackage(), ",");
if (excludeSub.isEmpty()) {
excludeSub = PinpointClassFilter.DEFAULT_EXCLUDES;
}

final ClassFileFilter pinpointClassFilter = new PinpointClassFilter(classFilterBasePackage, excludeSub);

final List<String> allowJdkClassName = profilerConfig.getAllowJdkClassName();
final ClassFileFilter unmodifiableFilter = new UnmodifiableClassFilter(allowJdkClassName);
return new DefaultClassFileTransformerDispatcher(unmodifiableFilter, transformerRegistry, dynamicTransformerRegistry, lambdaClassFileResolver);
return new DefaultClassFileTransformerDispatcher(pinpointClassFilter, unmodifiableFilter, transformerRegistry,
dynamicTransformerRegistry, lambdaClassFileResolver);
}

private TransformerRegistry newTransformerRegistry() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,16 @@ public class DefaultClassFileTransformerDispatcher implements ClassFileTransform

private final LambdaClassFileResolver lambdaClassFileResolver;

public DefaultClassFileTransformerDispatcher(ClassFileFilter unmodifiableFilter, TransformerRegistry transformerRegistry,
DynamicTransformerRegistry dynamicTransformerRegistry, LambdaClassFileResolver lambdaClassFileResolver) {
public DefaultClassFileTransformerDispatcher(ClassFileFilter pinpointClassFilter,
ClassFileFilter unmodifiableFilter,
TransformerRegistry transformerRegistry,
DynamicTransformerRegistry dynamicTransformerRegistry,
LambdaClassFileResolver lambdaClassFileResolver) {

this.baseClassFileTransformer = new BaseClassFileTransformer(this.getClass().getClassLoader());

this.classLoaderFilter = new PinpointClassLoaderFilter(this.getClass().getClassLoader());
this.pinpointClassFilter = new PinpointClassFilter();
this.pinpointClassFilter = Objects.requireNonNull(pinpointClassFilter, "pinpointClassFilter");
this.unmodifiableFilter = Objects.requireNonNull(unmodifiableFilter, "unmodifiableFilter");

this.transformerRegistry = Objects.requireNonNull(transformerRegistry, "transformerRegistry");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,17 @@
package com.navercorp.pinpoint.profiler.transformer;

import java.security.ProtectionDomain;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
* @author emeroad
*/
public class PinpointClassFilter implements ClassFileFilter {

private static final String DEFAULT_PACKAGE = "com/navercorp/pinpoint/";
private static final String[] DEFAULT_EXCLUDES = {"web/", "sdk/"};
public static final String DEFAULT_PACKAGE = "com/navercorp/pinpoint/";
public static final List<String> DEFAULT_EXCLUDES = Arrays.asList("web/", "sdk/");

private final String basePackage;
private final String[] excludes;
Expand All @@ -34,9 +36,10 @@ public PinpointClassFilter() {
this(DEFAULT_PACKAGE, DEFAULT_EXCLUDES);
}

public PinpointClassFilter(String basePackage, String[] excludes) {
public PinpointClassFilter(String basePackage, List<String> excludes) {
this.basePackage = Objects.requireNonNull(basePackage, "basePackage");
this.excludes = Objects.requireNonNull(excludes, "excludes");
Objects.requireNonNull(excludes, "excludes");
this.excludes = excludes.toArray(new String[0]);
}

@Override
Expand All @@ -57,4 +60,12 @@ public boolean accept(ClassLoader classLoader, String className, Class<?> classB

return CONTINUE;
}

@Override
public String toString() {
return "PinpointClassFilter{" +
"basePackage='" + basePackage + '\'' +
", excludes=" + Arrays.toString(excludes) +
'}';
}
}

0 comments on commit 0c1293a

Please sign in to comment.