Commit Graph

2338 Commits

Author SHA1 Message Date
Nikolay Martynov 89be6b5c06 Ignore majority of google api
And several other google libraries
2020-03-03 11:45:22 -05:00
Nikolay Martynov d029713740 Ignore org json simple 2020-03-03 11:45:22 -05:00
Nikolay Martynov 78268d1f0f Fix logback 2020-03-03 11:45:22 -05:00
Nikolay Martynov 8cdde847f9 Ignore mustachejava 2020-03-03 11:45:22 -05:00
Nikolay Martynov d74d65175b Ignore majority of cassandra classes 2020-03-03 11:45:22 -05:00
Nikolay Martynov 22e7fe8f82 Add exception for instrumented runnable in logback 2020-03-03 11:45:22 -05:00
Nikolay Martynov 52e6f42f03 Codehale metrics provides servlets that we instrument 2020-03-03 11:45:22 -05:00
Nikolay Martynov bcec89895e Ignore couchbase packaged deps 2020-03-03 11:45:22 -05:00
Nikolay Martynov 4960e0630d Ignore carrotsearch.hppc and codahale.metrics 2020-03-03 11:45:22 -05:00
Nikolay Martynov 9d76281ddf Ignore jcommander 2020-03-03 11:45:22 -05:00
Nikolay Martynov 646bf5bb05 Ignore logback 2020-03-03 11:45:22 -05:00
Nikolay Martynov e92ad38cc8 Tighten up aws instrumentation matcher a bit 2020-03-03 11:45:22 -05:00
Nikolay Martynov 31a4c9a427 Ignore kotlin runtime 2020-03-03 11:45:22 -05:00
Nikolay Martynov a59ab43efc Ignore org.objectweb.asm. 2020-03-03 11:45:22 -05:00
Nikolay Martynov dad9e72af7 Ignore more groovy classes 2020-03-03 11:45:22 -05:00
Nikolay Martynov dedfc7dd0b Make ignired classes test assertion more informative 2020-03-03 11:45:22 -05:00
Nikolay Martynov fc5e2cc747 Ignore apache xml tools 2020-03-03 11:45:22 -05:00
Nikolay Martynov fe9cf09249 Ignore jackson and cglib 2020-03-03 11:45:22 -05:00
Nikolay Martynov 73abe16c26 Add a comment 2020-03-03 07:29:22 -05:00
jean-philippe bempel 14dd0f1147 Update JMXFetch to 0.35
Includes many improvements regarding memory footprint and allocations
2020-03-03 08:49:51 +01:00
Nikolay Martynov e22ce02762 Add test for ignore matchers for libraries 2020-03-02 16:37:39 -05:00
Nikolay Martynov a1a3957ca8 Rename variable 2020-03-02 16:37:39 -05:00
Nikolay Martynov 5b4c7f8c92
Merge pull request #1273 from DataDog/mar-kolya/profile-force-early
Add an option to force profiling right in the beginning of premain
2020-03-02 22:18:05 +01:00
Nikolay Martynov d46a3be123 Reduce log verbocity 2020-03-02 15:26:04 -05:00
Nikolay Martynov b73bf22f2d
Merge pull request #1279 from DataDog/mar-kolya/make-profiling-test-more-resilient
Make profiling controller test more resilient to delays
2020-03-02 19:43:02 +01:00
Tyler Benson f0e59edb5e
Merge pull request #1274 from DataDog/tyler/matcher-hashcode-equals
Add proper hashcode/equals methods to our matchers
2020-03-02 10:37:51 -08:00
Nikolay Martynov 6ff723e191 CR changes 2020-03-02 12:25:20 -05:00
Nikolay Martynov 2eb7aa7d20 Increase CleanerTest timeout to help IBM JVM to cope 2020-03-02 12:11:11 -05:00
Nikolay Martynov ba55f0ed10 Make profiling controller test more resilient to delays 2020-03-02 11:48:21 -05:00
Tyler Benson abd115cff5
Merge pull request #1275 from trask/fix-class-loading-instrumentation
Fix class loading instrumentation
2020-03-02 08:17:24 -08:00
Nikolay Martynov a1f6ca1ee7 Make lz4 default compression
Also do some renaming in compression settings
2020-03-02 10:12:47 -05:00
Nikolay Martynov b3d81281f6 Merge branch 'master' into mar-kolya/profiling-lz4 2020-03-02 10:02:09 -05:00
Trask Stalnaker 0984ac2a61 Fix class loading instrumentation 2020-02-29 15:28:50 -08:00
Nikolay Martynov 2c33f0ace7 Add an option to force profiling right in the beginning of premain
Currently this blows up JVMs before 14
2020-02-29 00:36:50 +01:00
Tyler Benson 80f13bc670 Add proper hashcode/equals methods to our matchers
I copied over the methods that would have been generated had the `HashCodeAndEqualsPlugin` actually been working.

Also updated the matcher tests to use the TypePool for more realistic values.
2020-02-28 14:13:18 -08:00
Tyler Benson 55276148b9
Merge pull request #1251 from DataDog/devinsba/fast-reference-matcher
Fail fast in the matcher, let the debug outputs use the cache
2020-02-28 09:56:45 -08:00
Nikolay Martynov cf5fe9feff Merge branch 'master' into mar-kolya/speedup-context-injection-matchers 2020-02-28 02:07:37 +01:00
Nikolay Martynov 3d4ab93888 Merge branch 'master' into mar-kolya/speedup-context-injection-matchers 2020-02-28 02:01:33 +01:00
Nikolay Martynov 0b196ed3ec Merge branch 'master' into mar-kolya/constantify-decorator-matcher 2020-02-28 01:41:02 +01:00
Lev Priima 885212ee36 ClassLoaderHasNoResourceMatcher: put to cache outside critical section 2020-02-27 13:12:23 -08:00
Tyler Benson 68e4bf8375
Merge pull request #1266 from DataDog/tyler/imply-not-interface
Imply not(isInterface()) call for expensive matchers
2020-02-27 12:54:15 -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
dougqh 7c68238f6a Merge branch 'master' of github.com:DataDog/dd-trace-java 2020-02-27 14:50:11 -05:00
Tyler Benson ed061b6979
Merge pull request #1268 from DataDog/tyler/aws-uri
Remove conversion from URI to String back to URI
2020-02-27 11:17:00 -08:00
Tyler Benson 4e8e098330
Merge pull request #1257 from DataDog/tyler/caching-typedescription
Return TypePool.Resolution that caches TypeDescription calls.
2020-02-27 11:12:40 -08:00
Laplie Anderson 6ed5f56bb7
Merge pull request #1255 from DataDog/landerson/spring-blacklist
Add list of blacklisted spring classes
2020-02-27 14:07:42 -05:00
Tyler Benson 300c795e72 Remove conversion from URI to String back to URI
Apply same change as here: https://github.com/open-telemetry/opentelemetry-auto-instr-java/pull/191
2020-02-27 10:21:06 -08:00
Nikolay Martynov 2f71ad850f Constantify non decorator matcher 2020-02-27 17:52:20 +01:00
Nikolay Martynov d53c138016 Make FieldBackedProvider inject fields only once 2020-02-27 16:24:01 +01:00
Nikolay Martynov 6e10eee6ee Use isEmpty 2020-02-27 15:53:48 +01:00
Nikolay Martynov 70bed6f4ac Remove javadoc from some inappropriate places 2020-02-27 15:53:47 +01:00
Nikolay Martynov 5a17e57e99 Provide `toString` for SafeExtendsClassMatcher 2020-02-27 15:53:46 +01:00
Nikolay Martynov 06b052c4d9 Minor cleanup 2020-02-27 15:53:45 +01:00
dougqh 7511dede5d Merge branch 'master' of github.com:DataDog/dd-trace-java 2020-02-26 15:57:39 -05:00
Tyler Benson f431d5285a Return TypePool.Resolution that caches
Caching focused on the expensive calls primarily used by our instrumentation.
2020-02-26 12:47:48 -08:00
Laplie Anderson 84c7be64b5 Add blacklist directly to global ignores 2020-02-26 11:59:21 -05:00
Tyler Benson 2ec0c1acb7
Merge pull request #1258 from DataDog/tyler/fix-whitelist-logging
Apply matcher if debug logging enabled to avoid confusing log output.
2020-02-26 08:57:17 -08:00
Brian Devins-Suresh 30e1d56023 Address comments 2020-02-26 09:14:49 -05:00
Tyler Benson eb8de0d3ab Apply matcher if debug logging enabled to avoid confusing log output.
Otherwise it was "Skipping" every unrelated class.
2020-02-25 18:04:27 -08:00
Laplie Anderson fa3f449ec4 Add list of blacklisted spring classes 2020-02-25 16:33:39 -05:00
Nikolay Martynov 96f74d0fef Compare loader hashes 2020-02-25 21:53:12 +01:00
Nikolay Martynov 82dd2aa1b3 Revert "Make sure that same classloaders get same weak ref"
This reverts commit 50793e5244.
2020-02-25 21:47:42 +01:00
Brian Devins-Suresh 815bd0e9f6 Fix comment 2020-02-25 10:31:52 -05:00
Brian Devins-Suresh 2441ca3332 No more arraylist(0) 2020-02-25 10:02:53 -05:00
dougqh 65c6d17df6 Merge branch 'master' of github.com:DataDog/dd-trace-java 2020-02-25 09:41:40 -05:00
Brian Devins-Suresh 3b78d4593f Don't need to collect mismatches in the critical path 2020-02-25 09:36:00 -05:00
Nikolay Martynov 50793e5244 Make sure that same classloaders get same weak ref 2020-02-25 14:32:35 +01:00
Nikolay Martynov aefcc477cb Simplify TypePoolCacheKey equals
We have to check string equivalence regardless of classloader state
2020-02-25 11:58:18 +01:00
Nikolay Martynov 31b5652d10 Remove reference check from TypeCacheKey 2020-02-25 10:19:47 +01:00
Nikolay Martynov 41db97ea0f Merge branch 'master' into mar-kolya/improve-hash-calclulation-cache-pool 2020-02-25 10:18:25 +01:00
Brian Devins-Suresh 5ebc13cafa Increase performance on java 8 2020-02-24 17:10:41 -05:00
Brian Devins-Suresh af67dfa720 Need to cache the boolean. The list can be taken later as debug is expected to be slower 2020-02-24 14:39:17 -05:00
Brian Devins-Suresh 75af71584c Refactor an agent usage, and fix logic issue 2020-02-24 14:39:17 -05:00
Brian Devins-Suresh e65177a143 Fail fast in the matcher, let the debug outputs use the cache 2020-02-24 14:39:17 -05:00
Tyler Benson c13cb2e60f Move a few other classes. 2020-02-24 08:35:19 -08:00
Tyler Benson 3559ffb21c Add unit tests for matchers 2020-02-24 08:35:19 -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
Nikolay Martynov 833f67816e
Merge pull request #1248 from DataDog/mar-kolya/reduce-superclass-matcher-exposure
Avoid calling superclass matcher where possible
2020-02-21 21:16:52 -05:00
Tyler Benson b27b30d913
Merge pull request #1247 from DataDog/tyler/bb-raw
Set ByteBuddy raw setting at startup
2020-02-21 16:30:24 -08:00
Nikolay Martynov b6d374e3a0 Avoid calling superclass matcher where possible
Saves about 100ms of startup time on test app
2020-02-21 15:08:39 -05:00
Tyler Benson ecf9bcc655
Make sure CallDepthThreadLocalMap is always reset (#1227)
Make sure CallDepthThreadLocalMap is always reset
2020-02-21 11:03:51 -08:00
Tyler Benson faccb0d483 Set ByteBuddy raw setting at startup
This reduces the complexity of TypeDefinitions.
```
Benchmark                                                             Mode  Cnt   Score   Error  Units
ClassRetransformingBenchmark.WithAgent.testTracedRetransform          avgt       22.450          ms/op
ClassRetransformingBenchmark.WithAgent.testUntracedRetransform        avgt        6.842          ms/op
ClassRetransformingBenchmark.WithAgentMaster.testTracedRetransform    avgt       23.188          ms/op
ClassRetransformingBenchmark.WithAgentMaster.testUntracedRetransform  avgt        7.009          ms/op
```
It also improved startup time by about 1 sec.
2020-02-21 10:35:20 -08:00
Nikolay Martynov 1f8acafc42
Merge pull request #1245 from DataDog/mar-kolya/single-ignores-matcher
Single ignores matcher
2020-02-21 12:42:18 -05:00
Tyler Benson e4d29e37ef
Update JMH benchmarks (#1242)
Update JMH benchmarks
2020-02-21 09:38:34 -08:00
Nikolay Martynov 00c268e6d8 Add equivalence check to TypeCacheKey 2020-02-21 12:24:53 -05:00
Nikolay Martynov d4c6d86e6d Do not use zero for hashcode
Seems like this may have odd sideeffects
2020-02-21 12:24:09 -05:00
Nikolay Martynov f736c425ff TypeCacheKey are different if hash codes are different
And this is very easy to check
2020-02-21 12:23:41 -05:00
Nikolay Martynov 9d7682f776 Fix hashcode calculation in TypeCacheKey
Using potentially very large number for a mod is probably not very effective
2020-02-21 12:22:51 -05:00
Nikolay Martynov 27842d8479 Ignore cglib packaged with springboot 2020-02-21 11:56:45 -05:00
Nikolay Martynov 0c659770cc Collect all ignore matchers into one
This should allow us to optimize this as a single function later
2020-02-21 11:48:40 -05:00
Nikolay Martynov b1d314aff1 Specify types in jaxrs mtcher to help Idea with type inference 2020-02-21 11:34:25 -05:00
Lev Priima 37bcb4e288 ClassLoaderMatcher switch to Guava Cache 2020-02-21 03:58:02 -08:00
Lev Priima 52e0eb9d37 SkipClassLoaderMatcher use str-switch in shouldSkipClass(ClassLoader) 2020-02-20 21:02:42 -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
Tyler Benson 5e37ca02f1
Merge pull request #1240 from DataDog/tyler/executor-matcher-reorder
Reorder java-concurrent matchers
2020-02-20 17:54:39 -08:00
Tyler Benson 660921517c
Remove costly matchers from ignore list (#1233)
Remove costly matchers from ignore list
2020-02-20 17:52:43 -08:00
Tyler Benson e1964e526e Update JMH benchmarks
Benchmark is run with `./gradlew :dd-java-agent:benchmark:jmh` -- after updating the absolute paths to the various agents in `ClassRetransformingBenchmark`.  Unfortunately I was unable to have it launch correctly with a relative path.
2020-02-20 17:30:36 -08:00
Trask Stalnaker 8949d6c05f Make sure CallDepthThreadLocalMap is always reset 2020-02-20 16:53:57 -08:00
heathkd b7b46caaa8 create AgentBuilder instance with logging listeners only if debug mode is enabled 2020-02-20 16:29:27 -05:00
Tyler Benson b80e9857d2 Reorder java-concurrent matchers
Move the expensive matcher to last.

In theory this should help, but did not seem to make a significant difference in basic startup benchmarks.
2020-02-20 11:34:39 -08:00
Tyler Benson e4a454549d
Split interface and class "supertype matching" (#1232)
Split interface and class "supertype matching"
2020-02-20 11:08:39 -08:00
Nikolay Martynov f4d8b6b1f2 Avoid creating context provider for intrumentations that do not need that
This should reduce number of allocations
2020-02-20 08:28:25 -05:00
Laplie Anderson 43487fcfb5 Fix the logic 2020-02-19 21:22:17 -05:00
Laplie Anderson 92b9c07018 Add interfaces only code 2020-02-19 21:22:17 -05:00
Laplie Anderson 147b4a64f1 Add matcher for only concrete classes 2020-02-19 21:22:17 -05:00
Laplie Anderson d45ead1284 split matching into safeExtendsClass and safeHasInterface 2020-02-19 21:22:17 -05:00
Tyler Benson 6e4b55304e Add special handling for ignoring `javax.decorator.Decorator` annotated classes. 2020-02-19 16:24:23 -08:00
Tyler Benson 88aa31b63e Remove costly matchers from ignore list
Removing these matchers caused the time spent matching ignores to go from greater than 1 second to less than 100 ms.
2020-02-19 16:24:23 -08:00
Nikolay Martynov d49c08691e
Merge pull request #1229 from DataDog/mar-kolya/fix-jaxrs-matching
Fix JaxRs matching
2020-02-19 07:01:21 -05:00
Nikolay Martynov 02fb8d8888 Fix JaxRs matching
Paranthesys was missplaced leading to more complicated matcher than needed
2020-02-18 18:42:36 -05:00
Heather D'Souza a81f4dc223
Merge pull request #1192 from DataDog/heather.dsouza/scheduling_annotation
Add support for Spring Scheduling
2020-02-18 14:07:06 -05:00
Jean-Philippe Bempel efe8ee375b
Merge pull request #1226 from jpbempel/jpbempel/reuseKeys
Enable reuseKeys on WeakConcurrentMap
2020-02-18 19:09:05 +01:00
heathkd 917deb19be change imports to use bootstrap api package 2020-02-14 20:48:18 -05:00
heathkd f3537e1665 change module and file names to match version of earliest supported version of spring-context 2020-02-14 20:47:16 -05:00
heathkd 9eb51248cd address PR comments 2020-02-14 20:47:16 -05:00
heathkd b21e361591 add test for interval task and trigger task 2020-02-14 20:46:26 -05:00
heathkd cc1aaf5fc5 replace Trace annotation with regular API interaction 2020-02-14 20:46:26 -05:00
heathkd 68c323ac56 create ScheduledTasks bean and application context config 2020-02-14 20:46:00 -05:00
Nikolay Martynov a04cc15ce8 Fix some tests 2020-02-14 12:59:30 -05:00
Nikolay Martynov fd75575796 Disable peer hostname tag for http servers
Getting peer hostname makes DNS request
2020-02-14 11:25:07 -05:00
jean-philippe bempel 58b1cff62e Enable reuseKeys on WeakConcurrentMap
for each call to get method in WeakConcurrentMap, a LatentKey is
created. Considering the frequency of call it's significant.
Also, the classloader of the tracer can be considered as permanent
through the lifecycle of the JVM which is a prerequisite to be able
to reuse keys (otherwise classloader leak).
2020-02-14 14:52:59 +01:00
Tyler Benson 618780b62f
More general class loading instrumentation (#1218)
More general class loading instrumentation
2020-02-13 11:54:25 -08:00
Trask Stalnaker 94dd781e50 Better naming 2020-02-13 11:31:47 -08:00
Trask Stalnaker 4dfd9534e8 Add optimization for IBM JVM 2020-02-13 11:31:47 -08:00
Trask Stalnaker a0224e2ad7 Fix for test failure on IBM JVM 2020-02-13 11:31:47 -08:00
Trask Stalnaker bfc7a0de55 More general class loading instrumentation 2020-02-13 11:31:45 -08:00
Giuseppe Cafarelli f94f76488f Add test for elasticsearch 2 TransportActionListener 2020-02-13 14:34:21 +01:00
Nikolay Martynov ef9ebffc54 Simplify unknown compression handling 2020-02-12 15:08:25 -05:00
Nikolay Martynov ca9f623d05 Add profiling lz4 compression support
Gzip is still the default
2020-02-12 15:00:02 -05:00
Giuseppe Cafarelli 8f552993a6 Fix NPE on TransportActionListener for elasticsearch 2 2020-02-12 12:14:57 +01:00
Nikolay Martynov fd58187994 Support JFR profiling 2020-02-11 14:55:19 -05:00
Laplie Anderson 9023c6e1c7 Fix a couple tests using the wrong arguments 2020-02-11 11:44:46 -05:00
Laplie Anderson 01b0bebc93 minor formatting 2020-02-11 11:44:46 -05:00
Laplie Anderson 0cb0ae0a48 Less repetition in gradle files 2020-02-11 11:44:46 -05:00
Laplie Anderson c79fe3a459 Create shared internal jar 2020-02-11 11:44:46 -05:00
Laplie Anderson 3c0877e38a Create a shared parent classloader 2020-02-11 11:42:39 -05:00
Tyler Benson 032f22f5a6
Reduce tracer thread count by combining scheduled executors int… (#1200)
Reduce tracer thread count by combining scheduled executors into a single executor.
2020-02-11 08:18:59 -08: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 486d98135e Code review changes 2020-02-10 11:37:36 -08:00
Tyler Benson e5980d4812 Fix muzzle 2020-02-10 10:45:58 -08:00
Tyler Benson 75c7769192 Reduce tracer thread count by combining scheduled executors into a single executor.
Pulls out utility classes for reuse by other projects.

This also meant the dependency had to be bundled with dd-trace-ot since it isn't published as a separate dependency.
2020-02-10 10:45:58 -08:00
heathkd 7e62bca7fe limit hibernate latest dependency test to 5.x 2020-02-07 17:57:34 -05:00
Lev Priima 5265a43c6d Reduce use of Thread::setContextClassLoader 2020-02-06 22:53:04 -05:00
Tyler Benson 14b5576cd8
Merge pull request #1201 from DataDog/tyler/upgrade-okhttp
Upgrade OkHttp client to 3.12.8
2020-02-04 15:55:36 -08:00
Tyler Benson cab139e905 Upgrade OkHttp client to 3.12.8 2020-02-04 15:06:44 -08:00
Laplie Anderson a811c027ce
Merge pull request #1188 from DataDog/landerson/finatra
Finatra Instrumentation
2020-02-04 17:36:47 -05:00
Tyler Benson daae198b08 Set dispatcher span on request instead of clear
Clearing the span caused traces to be broken up and reported independently when calling forward/include.
2020-01-30 21:55:16 -05:00
Douglas Q Hawkins 53d32b4324
Merge pull request #1189 from DataDog/dougqh/type-caching2
Revised type cache
2020-01-30 18:47:02 -05:00
Laplie Anderson ed12af6994 Assume parent span is netty 2020-01-30 18:21:49 -05:00