Enable Servlet request and response dispatcher instrumentation by default.

Change config for Servlet Filter and Service and JDBC DataSource instrumentation so it must be explicitly enabled (won't be enabled by accident if all of servlet is enabled).
This commit is contained in:
Tyler Benson 2020-01-10 12:52:54 -08:00
parent 43fbf28035
commit e440eba9a1
15 changed files with 29 additions and 32 deletions

View File

@ -7,7 +7,7 @@ public class DataSourceDecorator extends BaseDecorator {
@Override @Override
protected String[] instrumentationNames() { protected String[] instrumentationNames() {
return new String[] {"jdbc-beta", "jdbc-datasource"}; return new String[] {"jdbc-datasource"};
} }
@Override @Override

View File

@ -25,7 +25,7 @@ import net.bytebuddy.matcher.ElementMatcher;
@AutoService(Instrumenter.class) @AutoService(Instrumenter.class)
public final class DataSourceInstrumentation extends Instrumenter.Default { public final class DataSourceInstrumentation extends Instrumenter.Default {
public DataSourceInstrumentation() { public DataSourceInstrumentation() {
super("jdbc-beta", "jdbc-datasource"); super("jdbc-datasource");
} }
@Override @Override

View File

@ -5,7 +5,6 @@ import datadog.trace.agent.test.AgentTestRunner
import datadog.trace.api.Config import datadog.trace.api.Config
import datadog.trace.api.DDSpanTypes import datadog.trace.api.DDSpanTypes
import datadog.trace.instrumentation.api.Tags import datadog.trace.instrumentation.api.Tags
import javax.sql.DataSource
import org.apache.derby.jdbc.EmbeddedDataSource import org.apache.derby.jdbc.EmbeddedDataSource
import org.apache.derby.jdbc.EmbeddedDriver import org.apache.derby.jdbc.EmbeddedDriver
import org.h2.Driver import org.h2.Driver
@ -29,7 +28,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
class JDBCInstrumentationTest extends AgentTestRunner { class JDBCInstrumentationTest extends AgentTestRunner {
static { static {
System.setProperty("dd.integration.jdbc-beta.enabled", "true") System.setProperty("dd.integration.jdbc-datasource.enabled", "true")
} }
@Shared @Shared

View File

@ -7,7 +7,7 @@ public class RequestDispatcherDecorator extends BaseDecorator {
@Override @Override
protected String[] instrumentationNames() { protected String[] instrumentationNames() {
return new String[] {"servlet-beta", "servlet-dispatcher"}; return new String[] {"servlet", "servlet-dispatcher"};
} }
@Override @Override

View File

@ -1,5 +1,6 @@
package datadog.trace.instrumentation.servlet.dispatcher; package datadog.trace.instrumentation.servlet.dispatcher;
import static datadog.trace.agent.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE;
import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType;
import static datadog.trace.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.instrumentation.api.AgentTracer.activateSpan;
import static datadog.trace.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.instrumentation.api.AgentTracer.activeSpan;
@ -31,12 +32,7 @@ import net.bytebuddy.matcher.ElementMatcher;
@AutoService(Instrumenter.class) @AutoService(Instrumenter.class)
public final class RequestDispatcherInstrumentation extends Instrumenter.Default { public final class RequestDispatcherInstrumentation extends Instrumenter.Default {
public RequestDispatcherInstrumentation() { public RequestDispatcherInstrumentation() {
super("servlet-beta", "servlet-dispatcher"); super("servlet", "servlet-dispatcher");
}
@Override
public boolean defaultEnabled() {
return false;
} }
@Override @Override
@ -91,15 +87,24 @@ public final class RequestDispatcherInstrumentation extends Instrumenter.Default
// In case we lose context, inject trace into to the request. // In case we lose context, inject trace into to the request.
propagate().inject(span, request, SETTER); propagate().inject(span, request, SETTER);
// temporarily remove from request to avoid spring resource name bubbling up:
request.removeAttribute(DD_SPAN_ATTRIBUTE);
return activateSpan(span, true).setAsyncPropagation(true); return activateSpan(span, true).setAsyncPropagation(true);
} }
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
public static void stop( public static void stop(
@Advice.Enter final AgentScope scope, @Advice.Thrown final Throwable throwable) { @Advice.Enter final AgentScope scope,
@Advice.Argument(0) final ServletRequest request,
@Advice.Thrown final Throwable throwable) {
if (scope == null) { if (scope == null) {
return; return;
} }
// now add it back...
request.setAttribute(DD_SPAN_ATTRIBUTE, scope.span());
DECORATE.onError(scope, throwable); DECORATE.onError(scope, throwable);
DECORATE.beforeFinish(scope); DECORATE.beforeFinish(scope);
scope.close(); scope.close();

View File

@ -7,7 +7,7 @@ public class FilterDecorator extends BaseDecorator {
@Override @Override
protected String[] instrumentationNames() { protected String[] instrumentationNames() {
return new String[] {"servlet-beta", "servlet-filter"}; return new String[] {"servlet-filter"};
} }
@Override @Override

View File

@ -27,7 +27,7 @@ import net.bytebuddy.matcher.ElementMatcher;
@AutoService(Instrumenter.class) @AutoService(Instrumenter.class)
public final class FilterInstrumentation extends Instrumenter.Default { public final class FilterInstrumentation extends Instrumenter.Default {
public FilterInstrumentation() { public FilterInstrumentation() {
super("servlet-beta", "servlet-filter"); super("servlet-filter");
} }
@Override @Override

View File

@ -7,7 +7,7 @@ public class HttpServletDecorator extends BaseDecorator {
@Override @Override
protected String[] instrumentationNames() { protected String[] instrumentationNames() {
return new String[] {"servlet-beta", "servlet-service"}; return new String[] {"servlet-service"};
} }
@Override @Override

View File

@ -32,7 +32,7 @@ import net.bytebuddy.matcher.ElementMatcher;
@AutoService(Instrumenter.class) @AutoService(Instrumenter.class)
public final class HttpServletInstrumentation extends Instrumenter.Default { public final class HttpServletInstrumentation extends Instrumenter.Default {
public HttpServletInstrumentation() { public HttpServletInstrumentation() {
super("servlet-beta", "servlet-service"); super("servlet-service");
} }
@Override @Override

View File

@ -7,7 +7,7 @@ public class HttpServletResponseDecorator extends BaseDecorator {
@Override @Override
protected String[] instrumentationNames() { protected String[] instrumentationNames() {
return new String[] {"servlet-beta", "servlet-response"}; return new String[] {"servlet", "servlet-response"};
} }
@Override @Override

View File

@ -29,12 +29,7 @@ import net.bytebuddy.matcher.ElementMatcher;
@AutoService(Instrumenter.class) @AutoService(Instrumenter.class)
public final class HttpServletResponseInstrumentation extends Instrumenter.Default { public final class HttpServletResponseInstrumentation extends Instrumenter.Default {
public HttpServletResponseInstrumentation() { public HttpServletResponseInstrumentation() {
super("servlet-beta", "servlet-response"); super("servlet", "servlet-response");
}
@Override
public boolean defaultEnabled() {
return false;
} }
@Override @Override

View File

@ -1,4 +1,5 @@
import datadog.trace.agent.test.AgentTestRunner import datadog.trace.agent.test.AgentTestRunner
import javax.servlet.Filter import javax.servlet.Filter
import javax.servlet.FilterChain import javax.servlet.FilterChain
import javax.servlet.FilterConfig import javax.servlet.FilterConfig
@ -11,7 +12,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
class FilterTest extends AgentTestRunner { class FilterTest extends AgentTestRunner {
static { static {
System.setProperty("dd.integration.servlet-beta.enabled", "true") System.setProperty("dd.integration.servlet-filter.enabled", "true")
} }
def "test doFilter no-parent"() { def "test doFilter no-parent"() {

View File

@ -1,18 +1,16 @@
import datadog.trace.agent.test.AgentTestRunner import datadog.trace.agent.test.AgentTestRunner
import groovy.servlet.AbstractHttpServlet import groovy.servlet.AbstractHttpServlet
import spock.lang.Subject
import javax.servlet.ServletOutputStream import javax.servlet.ServletOutputStream
import javax.servlet.http.Cookie import javax.servlet.http.Cookie
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse import javax.servlet.http.HttpServletResponse
import spock.lang.Subject
import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.basicSpan
import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
class HttpServletResponseTest extends AgentTestRunner { class HttpServletResponseTest extends AgentTestRunner {
static {
System.setProperty("dd.integration.servlet-beta.enabled", "true")
}
@Subject @Subject
def response = new TestResponse() def response = new TestResponse()

View File

@ -1,5 +1,6 @@
import datadog.trace.agent.test.AgentTestRunner import datadog.trace.agent.test.AgentTestRunner
import groovy.servlet.AbstractHttpServlet import groovy.servlet.AbstractHttpServlet
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse import javax.servlet.http.HttpServletResponse
@ -8,7 +9,7 @@ import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
class HttpServletTest extends AgentTestRunner { class HttpServletTest extends AgentTestRunner {
static { static {
System.setProperty("dd.integration.servlet-beta.enabled", "true") System.setProperty("dd.integration.servlet-service.enabled", "true")
} }
def req = Mock(HttpServletRequest) { def req = Mock(HttpServletRequest) {

View File

@ -1,4 +1,5 @@
import datadog.trace.agent.test.AgentTestRunner import datadog.trace.agent.test.AgentTestRunner
import javax.servlet.ServletException import javax.servlet.ServletException
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse import javax.servlet.http.HttpServletResponse
@ -7,9 +8,6 @@ import static datadog.trace.agent.test.utils.TraceUtils.basicSpan
import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
class RequestDispatcherTest extends AgentTestRunner { class RequestDispatcherTest extends AgentTestRunner {
static {
System.setProperty("dd.integration.servlet-beta.enabled", "true")
}
def dispatcher = new RequestDispatcherUtils(Mock(HttpServletRequest), Mock(HttpServletResponse)) def dispatcher = new RequestDispatcherUtils(Mock(HttpServletRequest), Mock(HttpServletResponse))