Commit Graph

103 Commits

Author SHA1 Message Date
Laplie Anderson 7cd76ed68b Move ThreadPoolExecutor helper to bootstrap 2020-03-12 18:20:03 -04:00
Laplie Anderson 97b0e7a21f Move concurrent helpers to bootstrap 2020-03-11 18:37:03 -04:00
Nikolay Martynov 4aac30826d Split Runnable and Callable instrumentations
Otherwise `Runnable` may define `call` method leading to
instrumentation exception.
See `org.h2.util.Task` as an example.
2020-03-06 13:49:55 -05:00
Tyler Benson 74ea734f81 Add additional classLoaderMatchers. 2020-03-05 10:45:59 -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 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
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 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
Laplie Anderson d45ead1284 split matching into safeExtendsClass and safeHasInterface 2020-02-19 21:22:17 -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
Laplie Anderson 8ff985afdb Cleaner way to skip netty executor's tasks 2020-01-23 12:04:56 -05:00
Laplie Anderson 4e58643bd0 Initial finatra instrumentation 2020-01-22 18:09:10 -05:00
Trask Stalnaker 1987e86ebf Normalize tag verification order 2019-11-22 10:59:45 -08: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
Trask Stalnaker 9182b64078 Switch to new Tags class in tests 2019-10-24 21:04:57 -07:00
Trask Stalnaker a9d3360701 Remove test dependency on GlobalTracer 2019-10-24 20:53:14 -07:00
Trask Stalnaker 7c954ecc0c Update java-concurrent to new agent api 2019-10-19 16:52:40 -07:00
Tyler Benson 82180c2ea6 Add support for jax-rs AsyncResponse 2019-10-07 14:19:46 +02:00
Tyler Benson 8289ccd085 Skip CompletableFuture case in Java 7 2019-09-20 12:11:30 -07:00
Tyler Benson 363dd38d81 Add CompletableFuture$ThreadPerTaskExecutor to allow list
This allows trace propagation for CompletableFuture’s asyncPool even if `useCommonPool` is disabled.

Also added some additional futures to `WHITELISTED_FUTURES` and sorted list.
2019-09-20 11:08:10 -07:00
Tyler Benson de44a0651c Fix async dispatch for Jetty QueuedThreadPool
Includes additional cleanup to supported executors list (removed anonymous classes).
2019-09-18 20:08:06 -07:00
Tyler Benson cd6dcf393b Apply fixed default operation name for @Trace generated spans
This should help reduce issues with multiple top level spans.
2019-09-05 16:21:27 -07:00
Laplie Anderson 7a41ca7d6e Change whitelist fields from static to instance 2019-08-27 12:06:01 -04:00
Laplie Anderson 25c0d19f23 CodeNarc complains about the unused variable 2019-08-26 11:19:03 -04:00
Laplie Anderson 7b66a31d80 Ensure injected modules can read the helper class module 2019-08-23 19:14:10 -04:00
Tyler Benson f5b73260ed Add instrumentation and tests for Grizzly 2.x Http Server 2019-08-13 16:05:11 -07:00
Luca Abbati 075b30053d
Merge pull request #863 from DataDog/labbati/non-static-config
Avoid usage of static getters when accessing configuration parameters
2019-06-13 18:06:15 +02:00
Luca Abbati e1ceda8f0e
Improve config usage as instance based on CR 2019-06-12 14:00:36 +02:00
Tyler Benson 4469c7fb11 separate out driver subtype
to avoid changing existing service names
2019-06-10 16:17:36 -07:00
Tyler Benson 288add2a60 Fix slickdb test 2019-06-10 15:20:56 -07:00
Luca Abbati ae03abe63c
Adapt tests to the new Config approach instance vs static 2019-06-05 12:17:09 +02:00
Luca Abbati 901efee50e
Remove static usage of low level config methods from outside the config class 2019-06-04 15:13:40 +02:00
Nikolay Martynov 70fa97f8c2 Move code to make java7 happy 2019-05-24 16:55:39 -04:00
Nikolay Martynov a3a325868c Add some rudimetrary tests for CompletableFuture 2019-05-24 16:36:07 -04:00
Tyler Benson cc23fee614 Add config to enable individual executors
Or all executors, bypassing the allow list.

`dd.trace.executor=com.MyCustomExecutor,com.OtherExecutor`
`dd.trace.executors.all=true`

Turns out in many cases, executors that we say we’re skipping, are still being traced because they extend from an already instrumented executor.
2019-05-14 10:03:44 -07:00
Tyler Benson c971c434d1 Fix propagation and add onUnsubscribe handler
Ensures that span is closed when Observable is unsubscribed from.

Also added retransform error logger since retransforms might be missed if an exception is thrown, leading to odd behavior.
2019-04-30 11:52:20 -07:00
Tyler Benson 6414de82d9 Add support for HystrixObservableCommand
This change is slightly breaking for existing hystrixCommand code since the resource name changes from run->execute and getFallback->fallback.  The fallback span is also now a child of the execute span.
2019-04-29 12:04:27 -07:00
Tyler Benson 179b9b69cb Upgrade Byte Buddy to 1.9.12
and a few other minor code changes.
2019-04-25 10:36:35 -07:00
Daryl Robbins e3d97b0984 WIP Twilio SDK Instrumentation
Missed Gradle file

Updates to handle async calls, which have broken all tests

Fixed instrumentation and augmented tests
2019-04-16 13:46:43 -07:00
Nikolay Martynov 65cb8af873 Fix tests that verify that cancelling job cancels continuation 2019-02-28 18:44:39 -05: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 d53d3fe4c8 Add @Retry to tests that fail randomly in CI.
Should eventually revisit this to try and remove them.

Latest failure was on:
```
at ExecutorInstrumentationTest.#poolImpl '#name' reports after canceled jobs(ExecutorInstrumentationTest.groovy:202)
```
2019-02-27 20:56:47 -08:00
Tyler Benson c46909e59f Migrate JDBC instrumentation to Decorator 2019-02-26 11:16:35 -08:00
Nikolay Martynov bae2d7dde8 Allow non-wrapped tasks in disabled executors
Some executors cannot handle tasks that have been wrapped into
`{Runnable,Callable}Wrapper` because they require certain subclass of
`{Callable,Runnable}` in order to work. We have a test that
effectively disables instrumentation for such executors.

This change makes sure that tasks that do not need to be
wrapped (which essentially means anything that is not lambda) still
get traced in such executors. One notable example of affected executor
type is `ScheduledThreadPoolExecutor`.
2019-02-11 11:47:34 -05:00
Nikolay Martynov 3a0a471dd5 Close future's continuation on cancel even if future itself was not cancelled 2019-02-08 20:13:32 -05:00
Nikolay Martynov f8aed7aec7 Provide seprate instrumentation names for Akka and Scala ForkJoin instrumentations 2019-01-28 11:29:59 -05:00
Nikolay Martynov f7844f763c Instrument Akka and Scala ForkJoinTask and ForkJoinPool 2019-01-25 16:15:48 -05:00
Nikolay Martynov 6ab5b121f5 Handle ForkJoinTask in concurrent instrumentation 2019-01-24 17:28:00 -05:00
Nikolay Martynov af15b17f1c Remove unnecessary helper from FutureInstrumentation 2019-01-23 22:31:59 -05:00