Commit Graph

2338 Commits

Author SHA1 Message Date
Nikolay Martynov 0d34aa2e96 Stop skipping cassandra core instrumentation
Looks like it has lots of runnables sprinkled all over the place
2020-03-06 13:49:55 -05:00
Nikolay Martynov c1c9ffa571 Fix couchbase ignores 2020-03-06 13:49:55 -05:00
Nikolay Martynov 839deb779d Add java-concurrent as a dependency to all instrumentations 2020-03-06 13:49:55 -05:00
Tyler Benson caabb55ed2
Merge pull request #1301 from DataDog/tyler/grpc
Fix grpc tests with java-concurrent.
2020-03-06 10:48:03 -08:00
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