Commit Graph

2434 Commits

Author SHA1 Message Date
Tyler Benson 7c73546ba1 One more change.
This should fix the issues in latestDepTest.
2020-03-06 09:56:19 -08:00
Tyler Benson 206fbb944c Fix comments
[skip ci]
2020-03-06 09:24:50 -08:00
Tyler Benson 2e86ca2141 disable async propagation for InProcess communication. 2020-03-06 09:20:00 -08:00
Laplie Anderson 5538021ea6 classLoaderHasNoResources -> hasClassesNamed 2020-03-06 10:51:35 -05:00
Laplie Anderson a7a7501f40 Rename to commons-httpclient-2 2020-03-06 10:47:41 -05:00
Laplie Anderson 66e14d9256 Surprisingly, everything works with 2.0 2020-03-06 10:47:41 -05:00
Laplie Anderson d99c2ad240 Remove aws-sdk check 2020-03-06 10:47:41 -05:00
Laplie Anderson c13436d5e4 Add commons-httpclient integration 2020-03-06 10:47:41 -05:00
Tyler Benson ca043a67b5
Merge pull request #1298 from DataDog/tyler/classloader-matcher
ClassLoader matcher cleanup
2020-03-05 20:00:09 -08:00
Tyler Benson cea0bc8a52 Fix grpc tests with java-concurrent. 2020-03-05 19:59:21 -08:00
Tyler Benson 7bf85dbb97 Restrict dispatcher instrumentation to 2 arguments
To reduce risk of duplicate spans when delegating to a 2+ arg method.
2020-03-05 16:01:53 -08:00
Tyler Benson d25ace6627
Merge pull request #1292 from DataDog/tyler/add-test-retrys
Attempt to improve test reliability
2020-03-05 14:40:41 -08:00
Tyler Benson b1f8787ae5 Add a couple more... 2020-03-05 13:52:16 -08:00
Tyler Benson 2802009e01 Stop creating a "top level" servlet span when in a forward/include situation.
Effectively reverting 6703bd96bb

The expectation is that these are not really separate external requests, but a semantic way of processing a single request.
2020-03-05 12:52:13 -08:00
Tyler Benson cb782fdd0e Fix muzzle for trace-annotation. 2020-03-05 12:00:18 -08:00
Tyler Benson 74ea734f81 Add additional classLoaderMatchers. 2020-03-05 10:45:59 -08:00
Tyler Benson 372ba221d2 Invert the classloader matcher to remove the double negative. 2020-03-05 10:14:33 -08:00
Laplie Anderson 0f65b4db76
Merge pull request #1286 from DataDog/landerson/play-streaming
Fix Play-ws stream() bug
2020-03-05 10:42:54 -05:00
Tyler Benson ee5cf2cf24 Attempt to improve test reliability
Add timeouts (to avoid a gradle level timeout) and retries (since we're doing it manually anyway).

I realize this is a band aid...
2020-03-04 19:02:41 -08:00
Laplie Anderson d14adcf712 Chunked encoding didnt work as expected 2020-03-04 18:08:32 -05:00
dougqh 7a183e755e Switching to per-injection temp dir to avoid race
Upon review, we realized that there was a race not just between processes but also with multiple threads in the same process.

This race happens because of the effort to proactively clean-up directories.

This left two choices...
- assume per-process exclusivity -- and resolve the race with reference counting
- move to a temp dir per injection

This change uses the later strategy which is potentially more expensive but safest.
2020-03-04 15:14:07 -05:00
Trask Stalnaker 166d951a10 Cache is not needed anymore 2020-03-04 09:47:15 -08:00
Trask Stalnaker c63c981221 Remove non-delegating class loader check
This is not needed anymore now that loadClass() is being instrumented to
deal with non-delegating class loaders.
2020-03-04 09:46:20 -08:00
Laplie Anderson d6638f4ff5 Manual merge of tyler/classloader-precheck 2020-03-04 10:42:13 -05:00
Laplie Anderson 47fb25a8f8 Accidentally bumped the base test version up 2020-03-04 10:38:36 -05:00
Laplie Anderson fd0e10f0cb Returned a StreamedAsyncHandler instance where appropriate 2020-03-04 10:38:36 -05:00
Laplie Anderson 0c74cf031e Extract common play-ws code and add stream tests 2020-03-04 10:38:36 -05:00
Laplie Anderson 525738b177 Add http client test for chunked responses 2020-03-04 10:34:46 -05:00
Tyler Benson 95534b7bb8
Merge pull request #1283 from DataDog/tyler/classloader-precheck
Add Classloader precheck to expensive matchers.
2020-03-03 20:39:39 -08:00
Tyler Benson 4795695c43
Merge pull request #1287 from DataDog/tyler/trace-instrumentation-name
Add instrumentation name to allow configuring `@Trace`
2020-03-03 20:37:19 -08:00
Nikolay Martynov 11f281edb9
Merge pull request #1282 from DataDog/mar-kolya/add-additional-ignores
Add additional ignores
2020-03-03 21:43:55 -05:00
Tyler Benson 34b7225a13 Add instrumentation name to allow configuring `@Trace`
Specifically, this allows annotated/configured methods to be reported to App Analytics:
- System Property: `-Ddd.trace-annotation.analytics.enabled=true`
- Environment Variable: `DD_TRACE_ANNOTATION_ANALYTICS_ENABLED=true`
or
- System Property: `-Ddd.trace-config.analytics.enabled=true`
- Environment Variable: `DD_TRACE_CONFIG_ANALYTICS_ENABLED=true`
2020-03-03 15:11:11 -08:00
Tyler Benson 4cf39b7a99
Merge pull request #1281 from jpbempel/jpbempel/jmxfetch035
Update JMXFetch to 0.35
2020-03-03 14:45:23 -08:00
dougqh 4ad51dd9fa Introducing TempDir helper
Introduces a TempDir helper class

This was done to help handle an oversight in the prior per-process temp dir change.  The fallback mode is to use the shared java.io.tmpdir directly.

When using java.io.tmpdir, we don't want to be creating and destorying, since it may be shared.

The new TempDir object is constructed knowing whether the TempDir is per-process or shared -- and the behavior of its prepare and cleanup method change accordingly.

When using a per-process temp dir, the dir is creating and deleted regularly.  When using a shared temp dir, those methods become nops.

Creating TempDir also made it easy to avoid repeatedly calling deleteOnExit in the event that delete fails, so I made that change as well.
2020-03-03 16:08:37 -05:00
dougqh d2ecce477e Switching to per-process temp dir
Switching to create a per-process temp dir as protection against file name collisions.  This is done by introduced TEMP_DIR which is calculated during class initialization.

The current selection process generates a random directory name and sees if that name is availabe in java.io.tmpdir.  If it is that name is selected; otherwise, another name is generated.

If no unique name is found after 10 rounds of generation, the code falls back to the old behavior of writing directly to java.io.tmpdir.
2020-03-03 16:08:29 -05:00
dougqh c50899f184 Creating helper methods for injection
Create helper methods injectBootstrapClassLoader & injectClassLoader.

The directory creation and retry logic that will be added to the handling of the bootstrap will complicated the code.

To keep the code readable, I broke the bootstrap handling into its own method.  To keep the level abstraction consistent, I did the same with injectClassLoader.
2020-03-03 16:08:19 -05:00
dougqh 3417fd8940 Improving debuggability by requestingName
This change adds a requestingName field to help in diagnosing the source of any injection failures.

Usually, the requestingName is the simple class name of the Instrumenter; however, this change doesn't propagate the Instumeneter named through FieldBackedProvider.
2020-03-03 16:08:09 -05:00
Nikolay Martynov a62db5bcad Ignore more spring 2020-03-03 14:51:25 -05:00
Nikolay Martynov 9f1c821d37 Ignore javax.el 2020-03-03 14:51:25 -05:00
Nikolay Martynov 33c8fc0f3a Ignore snakeyaml 2020-03-03 14:51:23 -05:00
Nikolay Martynov 864e2884eb Ignore lucene 2020-03-03 14:51:22 -05:00
Nikolay Martynov e8c31e9dd6 Ignore lagom: we do not instrument it directly 2020-03-03 14:51:22 -05:00
Nikolay Martynov dea3d72cc6 Ignore jsonpath 2020-03-03 14:51:22 -05:00
Nikolay Martynov d5ea1167a6 Ignore h2 2020-03-03 14:51:19 -05:00
Tyler Benson 042f49d800 fix muzzle and retry tests 2020-03-03 11:03:01 -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
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
dougqh faeb069424 Adjusting capacity check again 2020-01-30 18:08:49 -05:00
dougqh 235a6470fb googleJavaFormat 2020-01-30 17:45:40 -05:00
dougqh 0f095f0adb Final clean-up
- Removed unused method from earlier version
- Corrected previously overlooked comments that were remnant of prior version
2020-01-30 17:44:24 -05:00
Laplie Anderson 37a279069b Add server tests 2020-01-30 15:23:26 -05:00