Dont instrument `@Decorator`s or CDI breaks

This commit is contained in:
Laplie Anderson 2019-10-16 17:10:50 -04:00
parent 6512c4b1bb
commit 6e0af7cdeb
4 changed files with 49 additions and 0 deletions

View File

@ -1,7 +1,9 @@
package datadog.trace.agent.tooling;
import static datadog.trace.agent.tooling.ClassLoaderMatcher.skipClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.annotationType;
import static net.bytebuddy.matcher.ElementMatchers.any;
import static net.bytebuddy.matcher.ElementMatchers.hasAnnotation;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
import static net.bytebuddy.matcher.ElementMatchers.nameMatches;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
@ -130,6 +132,7 @@ public class AgentInstaller {
.or(nameContains("javassist"))
.or(nameContains(".asm."))
.or(nameMatches("com\\.mchange\\.v2\\.c3p0\\..*Proxy"))
.or(hasAnnotation(annotationType(named("javax.decorator.Decorator"))))
.or(matchesConfiguredExcludes());
for (final AgentBuilder.Listener listener : listeners) {

View File

@ -0,0 +1,22 @@
apply from: "${rootDir}/gradle/java.gradle"
apply plugin: 'org.unbroken-dome.test-sets'
testSets {
latestDepTest {
dirName = 'test'
}
}
dependencies {
testCompile project(':dd-java-agent:instrumentation:java-concurrent')
testCompile group: 'org.jboss.weld', name: 'weld-core', version: '2.3.0.Final'
testCompile group: 'org.jboss.weld.se', name: 'weld-se', version: '2.3.0.Final'
testCompile group: 'org.jboss.weld.se', name: 'weld-se-core', version: '2.3.0.Final'
// Beyond 2.x is CDI 2+ and requires Java 8
latestDepTestCompile group: 'org.jboss.weld', name: 'weld-core', version: '2.+'
latestDepTestCompile group: 'org.jboss.weld.se', name: 'weld-se', version: '2.+'
latestDepTestCompile group: 'org.jboss.weld.se', name: 'weld-se-core', version: '2.+'
}

View File

@ -0,0 +1,23 @@
import datadog.trace.agent.test.AgentTestRunner
import org.jboss.weld.environment.se.Weld
import org.jboss.weld.environment.se.WeldContainer
import org.jboss.weld.environment.se.threading.RunnableDecorator
class CDIContainerTest extends AgentTestRunner {
def "CDI container starts with agent"() {
given:
Weld builder = new Weld()
.disableDiscovery()
.decorators(RunnableDecorator)
when:
WeldContainer container = builder.initialize()
then:
container.isRunning()
cleanup:
container?.shutdown()
}
}

View File

@ -28,6 +28,7 @@ include ':dd-java-agent:instrumentation:apache-httpasyncclient-4'
include ':dd-java-agent:instrumentation:apache-httpclient-4'
include ':dd-java-agent:instrumentation:aws-java-sdk-1.11.0'
include ':dd-java-agent:instrumentation:aws-java-sdk-2.2'
include ':dd-java-agent:instrumentation:cdi-1.2'
include ':dd-java-agent:instrumentation:couchbase-2.0'
include ':dd-java-agent:instrumentation:couchbase-2.6'
include ':dd-java-agent:instrumentation:datastax-cassandra-3'