Commit Graph

45 Commits

Author SHA1 Message Date
Laplie Anderson 6cd530a541 Move decorators to bootstrap 2020-03-11 18:41:29 -04:00
Tyler Benson 372ba221d2 Invert the classloader matcher to remove the double negative. 2020-03-05 10:14:33 -08:00
Tyler Benson 7702b0585b Add Classloader precheck to expensive matchers.
Benchmark results:
```
Benchmark                                                             Mode  Cnt   Score   Error  Units
ClassRetransformingBenchmark.WithAgent.testTracedRetransform          avgt       21.933          ms/op
ClassRetransformingBenchmark.WithAgent.testUntracedRetransform        avgt        6.171          ms/op
ClassRetransformingBenchmark.WithAgentMaster.testTracedRetransform    avgt       22.129          ms/op
ClassRetransformingBenchmark.WithAgentMaster.testUntracedRetransform  avgt        6.517          ms/op
ClassRetransformingBenchmark.testTracedRetransform                    avgt        0.876          ms/op
ClassRetransformingBenchmark.testUntracedRetransform                  avgt        0.867          ms/op
```

I also saw a small improvement in application startup time.
2020-03-03 10:29:10 -08:00
Tyler Benson 35e00686b3 Imply not(isInterface()) call for expensive matchers
Also remove from simple named("some.name") matchers to avoid metadata lookup.
2020-02-27 12:13:42 -08:00
Tyler Benson bd82166b58 Rename methods that don't require disambiguation. 2020-02-24 08:35:19 -08:00
Tyler Benson f70c35842d Move matchers to separate package and split matcher classes out 2020-02-24 08:31:12 -08:00
Tyler Benson a4f34f4088 Latest tomcat release seems to have some issues
Instrumentation muzzled: [jsp, jsp-compile] -- datadog.trace.instrumentation.jsp.JasperJSPCompilationContextInstrumentation on jdk.internal.loader.ClassLoaders$AppClassLoader@2c13da15
-- datadog.trace.instrumentation.jsp.JSPDecorator:39 Missing method getServletContext#()Ljavax/servlet/ServletContext;
2020-02-20 20:35:25 -08:00
Laplie Anderson d45ead1284 split matching into safeExtendsClass and safeHasInterface 2020-02-19 21:22:17 -05:00
Nikolay Martynov a04cc15ce8 Fix some tests 2020-02-14 12:59:30 -05:00
Tyler Benson 51bffa2e8a Move agent api classes to bootstrap package so they're not analyzed by muzzle
Also move jdbc classes to bootstrap to reduce size and complexity of those reference checkers.

These changes reduce the total file size of these instrumentation classes by 635k, which should also result in decent memory savings.
2020-02-10 15:09:15 -08:00
Tyler Benson 7cb24f35c0 Better error handling for getClientInfo in JDBCDecorator
An exception there caused a span to be created but then never finished.
2020-01-08 15:10:54 -08:00
Trask Stalnaker 1987e86ebf Normalize tag verification order 2019-11-22 10:59:45 -08:00
Tyler Benson 10b0f35235
Merge pull request #1090 from DataDog/tyler/servlet-path
Add servlet.path tag
2019-11-22 09:18:14 -08:00
dougqh be9743b86b Eliminate class expression to Advice class
Changing Jasper instrumentation to not load the advice class.
This class was missed originally because it doesn't end in Advice.
2019-11-22 09:51:05 -05:00
dougqh 6b096c2240 Replacing Advice.class references
Replacing Advice.class references with string construction.

This stops the JVM from loading the Advice classes which are used as templates for byte buddy and doesn't ever need to be run directly.

This eliminates ~130 class loads at start-up -- and saves 0.5MiB in metaspace
2019-11-18 16:09:30 -05:00
Tyler Benson fdf2241e5f Add servlet.path tag 2019-11-11 15:54:21 -08:00
Tyler Benson 7ae5de1fc6 Refactor Servlet Advice
Moving directory structure around.
Combining advice, trying to make it propagate better.
2019-10-25 10:09:19 -07:00
Trask Stalnaker b53652303c Update jsp-2.3 to new agent api 2019-10-19 16:52:41 -07:00
Tyler Benson 95a294a560 Remove common (redundant) dependencies 2019-08-06 14:51:04 -07:00
Tyler Benson 9681b91f3e Fix test. Format. 2019-07-29 15:27:26 -07:00
Nikolay Martynov 6d5972bce1 Make agent-tooling compile-depend on dd-tracing-ot directly
This ensures that `dd-tracng-ot` gets included into shadow jar.
Before this patch it was included only 'by accident' via some
transitive dependencies of some instrumentations.
2019-06-11 14:49:44 -04:00
Tyler Benson bf05984208 Server tags should report peer, not self hostname/port
Previously this was not obvious and incorrect.
2019-04-16 08:21:01 -07:00
Tyler Benson fc40c9617a Migrate JSP instrumentation to Decorator
Remove span kind and type from generated spans since these classify more as specialized @Trace spans.
2019-02-28 14:30:28 -08:00
Tyler Benson 50279d64fe Span type should only be an attribute and not inherited
Previously we were inheriting from the parent and also often setting as a tag.

Apply default span assertion to verify the spanType is being checked properly. (Include error state too.)
2019-02-28 12:39:51 -08:00
Tyler Benson dfe5cb57b2 Servlet migrate to decorators 2019-02-20 17:35:41 -08:00
Tyler Benson a7ebc9b3db Deprecate WEB_SERVLET type 2019-02-20 08:42:39 -08:00
Tyler Benson bbcd2f6949 Move other Utils to utils package 2019-02-05 11:43:05 -08:00
Tyler Benson fe52180bfc Apply proper generic signature for Instrumenter.Default transformers()
Previously it was missing the MethodDescription portion.
2019-01-04 15:25:12 -08:00
Tyler Benson b58b54dab9 Limit Lettuce/Webflux versions and fix test for tomcat 9+ 2018-11-12 12:33:34 -08:00
Gary a2a194d48a Fix latestDepTest for JSP instrumentation.
Normalize jsp.requestUrl tag value because Tomcat 9 seems to add relative path symbols of jsp files.

Tomcat 9 doesn't automatically create a connector, causing failures in latestDepTest. Tomcat 9 also seems to have small changes that effect some of the tests, such as changing the exception type and also removal of the exception message in one of the tests.
2018-11-12 08:15:24 -08:00
Tyler Benson 9bd2b86d2e Add assertion to ensure latestDepTest dependencies are different from test. 2018-11-12 08:15:24 -08:00
Tyler Benson 432ce89a07 Add assertTraces to AgentTestRunner with implied argument
This will also help with auto complete when writing tests.
2018-10-15 10:19:00 +10:00
Andrew Kent b637f9ef91 Enable and muzzle jsp instrumentation 2018-08-30 15:56:59 -07:00
Tyler Benson e07dfffe5f Migrate tests to new TestHttpServer 2018-08-16 14:23:58 +10:00
Tyler Benson 3f2ec7dc48 Move to separate packages 2018-08-16 12:24:27 +10:00
Tyler Benson 2893eb6035
Merge pull request #435 from DataDog/tyler/jax-rs-improvements
Add span for jax-rs representing controller execution
2018-08-15 14:03:31 +10:00
Tyler Benson 4583d12b31 Cleanup method signatures and servlet 2 instrumentation
adding the abstract servlet instrumentation reduces code duplication and makes it more similar to servlet 3 instrumentation.
2018-08-13 15:14:10 +10:00
Tyler Benson 984bc7563d Add span.origin.type for JSP too.
Might be slightly redundant given `jsp.requestURL` but consistent with other instrumentation.
2018-08-10 12:14:16 +10:00
Nikolay Martynov 6bc1d1ab8e Implement `saveHasSuperType` and use it instead of `hasSuperType`
The idea is to just 'trim' type hierarchy 'up-trees' that we cannot
resolve dring instrumentation instead of failing to instrument completely.
2018-07-31 20:13:59 -04:00
Tyler Benson ff9ef671f3 Apply formatter on groovy files. 2018-07-31 12:09:28 +10:00
Tyler Benson 51919a77bb Apply formatter on java files. 2018-07-31 12:07:43 +10:00
Nikolay Martynov 564b4e9dc3 Increase build stability by increasing some http client timeouts
This makes build more resilient to slow boxes and high parallelism
2018-07-22 00:41:37 -04:00
Nikolay Martynov f1466304e8 Move random port generation to actual usage in tests using listening ports 2018-07-20 11:57:37 -04:00
Andrew Kent 02a3e6a5d3 New Instrumentation API 2018-07-06 17:17:32 -04:00
Gary Huang 46e7036701 fix version scan and test versions 2018-06-25 16:54:45 -04:00