Commit Graph

1585 Commits

Author SHA1 Message Date
Tyler Benson 82f50e22b7
Merge pull request #811 from DataDog/tyler/hystrixobservable
Add support for HystrixObservableCommand
2019-05-02 09:47:09 -07:00
Tyler Benson 793627c167 Fix tests 2019-04-30 15:55:12 -07:00
Tyler Benson c8743fce64 Remove potentially dangerous recursive call. 2019-04-30 14:53:15 -07:00
Tyler Benson ac734ac6ee More classloading issues with Glassfish
Glassfish’s WebappClassLoader caches when a resource or class load fails, so we can’t load as a resource first to see if it is available.

Also add additional logging.
2019-04-30 12:38:54 -07:00
Tyler Benson 2c5ae9f3b1 Make OSGi instrumentation more generic
This should help it work with felix.

Also reduce log noise.
2019-04-30 12:38:54 -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 f74fd347c2
Merge pull request #814 from raphw/frames-fixed
Fixes #813: Only add frames if class file version supports attribute
2019-04-30 11:13:53 -07:00
Tyler Benson 1b38fcc8b4 Apply formatting 2019-04-30 10:08:58 -07:00
Rafael Winterhalter eeaa27af83 Fixes #813: Only add frames if class file version supports attribute 2019-04-30 10:22:27 +02:00
Tyler Benson 54287fa548 Add comment and consistency. 2019-04-29 12:21:05 -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 25d109753d
Merge pull request #809 from DataDog/tyler/httpasyncclient
Add instrumentation for Apache HttpAsyncClient
2019-04-29 08:14:11 -07:00
Tyler Benson 68a68f1057 Ensure that http.url tag doesn’t have query params set
Make handling of it more consistent in decorator.
2019-04-26 09:48:34 -07:00
Tyler Benson 20df3aa18e Add HttpAsyncClient to Elasticsearch for verification. 2019-04-25 17:27:06 -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
Tyler Benson 9ad06a6791 Add instrumentation for Apache HttpAsyncClient
Extract http client tests to shared class.
2019-04-23 17:10:40 -07:00
Tyler Benson 4c79f38a4d A couple other minor changes… 2019-04-19 10:41:13 -07:00
Tyler Benson ec91a75848 Add config allowing classes to be excluded from transformation
Add the following system property or corresponding environment variable:
```
dd.trace.classes.exclude=some.packagename.*,some.classname.MyClass$NestedClass
```
2019-04-19 10:41:13 -07:00
Tyler Benson 746c423199
Merge pull request #775 from darylrobbins/twilio
Twilio SDK Instrumentation
2019-04-19 09:18:40 -07:00
Tyler Benson 2acaeb3dfb Revert minor changes. 2019-04-17 16:23:15 -07:00
Tyler Benson e74941a4d5 Merge branch 'master' into twilio 2019-04-16 17:44:36 -07:00
Tyler Benson b9207133d6 Split async and sync advice and misc cleanup. 2019-04-16 13:56:44 -07:00
Daryl Robbins 315ae67fd2 Merge branch 'twilio' of github.com:darylrobbins/dd-trace-java into twilio
* 'twilio' of github.com:darylrobbins/dd-trace-java:
  Updates to handle async calls, which have broken all tests
  Missed Gradle file
  WIP Twilio SDK Instrumentation

# Conflicts:
#	dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioClientDecorator.java
#	dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioInstrumentation.java
#	dd-java-agent/instrumentation/twilio/src/test/groovy/test/TwilioClientTest.groovy

Merge branch 'twilio' of github.com:darylrobbins/dd-trace-java into twilio
Improved unit testing

* 'twilio' of github.com:darylrobbins/dd-trace-java:
  Updates to handle async calls, which have broken all tests
  Missed Gradle file
  WIP Twilio SDK Instrumentation

# Conflicts:
#	dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioClientDecorator.java
#	dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioInstrumentation.java
#	dd-java-agent/instrumentation/twilio/src/test/groovy/test/TwilioClientTest.groovy

Fix sleep times and choose Java7-friendly test dependencies

Corrected test assertion
2019-04-16 13:56:44 -07:00
Daryl Robbins 13aa267d84 WIP Twilio SDK Instrumentation
Missed Gradle file

Updates to handle async calls, which have broken all tests
2019-04-16 13:56:44 -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
Tyler Benson 0315c976af Fixes for ratpack. 2019-04-16 13:29:26 -07:00
Tyler Benson b343fe4551 Split peer connection details different generic argument 2019-04-16 08:34:43 -07: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 dc2e435de9
Merge pull request #797 from DataDog/tyler/ratpack
Update ratpack instrumentation and remove default disabled.
2019-04-16 08:14:10 -07:00
Luca Abbati f4a17ba4c5
Remove tests that relied on inner knowledge of the class. Feature still tested with cglib test. 2019-04-12 17:12:50 +02:00
Luca Abbati ff021f34db
Add minor fixes to comments and typos as per code reviewer suggestions 2019-04-12 16:51:49 +02:00
Luca Abbati c6863f0ca3
Use groovy class reference style in Spock tests 2019-04-11 16:06:46 +02:00
Luca Abbati e8435b165d
Fixed typo in comment 2019-04-11 15:49:10 +02:00
Luca Abbati 3a6fedda14
Add context getter/setter methods to an object only if not already defined
Class `FieldBackedProvider` uses ByteBuddy to add a field and its respective getters and setters to store the context object.
Assuming that we have a class `A` that implements runnable and that we wrap with a `FieldBackedProvider`
`Runnable` interfaces, if later on we use a cglib's `Enancher` class on `A` then the our mechanism will kick in again and try
to add the methods again. This causes a `java.lang.ClassFormatError: Duplicate method name "get__datadogContext$java$lang$Runnable" with signature "()Ljava.lang.Object;"`
to be thrown because CGLIB already copied over those methods from the original class `A` to the newly created class.

With this commit we now check that method were not previously defined before adding them, and if they were then we avoid adding them
again.

The reason why it wasn't faiing before is that we only checked on context field existence, not methods and cglib do not copy over fields, it copies only methods. E.g.

```
public class Main {

    public static class A {
        private String name = "hey";
        public String getName() {
            return this.name;
        }
    }

    public static void main(String[] args) {
        System.out.println("----- 'A' declared fields -----");
        A s = new A();
        for (Field f : s.getClass().getDeclaredFields()) {
            System.out.println("field: " + f.getName());
        }
        for (Method m : s.getClass().getDeclaredMethods()) {
            System.out.println("method: " + m.getName());
        }

        System.out.println("----- Proxy declared fields -----");
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(A.class);
        enhancer.setCallback((FixedValue) () -> null);
        A proxy = (A) enhancer.create();
        for (Field f : proxy.getClass().getDeclaredFields()) {
            System.out.println("field: " + f.getName());
        }
        for (Method m : proxy.getClass().getDeclaredMethods()) {
            System.out.println("method: " + m.getName());
        }
    }
}
```

Results in:

```
----- 'A' declared fields -----
field: name
method: getName
----- Proxy declared fields -----
field: CGLIB$BOUND
field: CGLIB$FACTORY_DATA
field: CGLIB$THREAD_CALLBACKS
field: CGLIB$STATIC_CALLBACKS
field: CGLIB$CALLBACK_0
field: CGLIB$CALLBACK_FILTER
method: equals
method: toString
method: hashCode
method: clone
method: getName
method: newInstance
method: newInstance
method: newInstance
method: setCallbacks
method: CGLIB$SET_STATIC_CALLBACKS
method: CGLIB$SET_THREAD_CALLBACKS
method: getCallback
method: getCallbacks
method: CGLIB$STATICHOOK1
method: CGLIB$BIND_CALLBACKS
method: setCallback
```
2019-04-11 15:45:43 +02:00
Tyler Benson c4ac5b94ec Fix span relationships and other review issues. 2019-04-10 17:31:22 -07:00
Nikolay Martynov e41769232e Fix AWS instrumentation warning in Idea
Idea complains about duplicates root because we run latest dep tests
and 'later version' tests from the same dir. This is ultimately
TestSetd plugin bug by the looks of it, but we can work around it by
swapping old and new version tests.

Also run both old and new version tests under 'test' task.
2019-04-09 10:50:07 -04:00
Tyler Benson a11b888d7a Update ratpack instrumentation and remove default disabled. 2019-04-08 18:26:08 -07:00
Tyler Benson 229e8ef51b Fix JMXFetch log level 2019-04-08 09:48:49 -07:00
Nikolay Martynov 6fd630831f Stop using `scopeManager().activate(span, true)` 2019-04-08 11:54:47 -04:00
Nikolay Martynov f4791a17df Use decorators in Netty's ChannelFutureListenerInstrumentation 2019-04-08 11:35:13 -04:00
Nikolay Martynov 7b53cebd3d Fix some compiler warnings 2019-04-05 12:58:54 -04:00
Nikolay Martynov a5b5d236e1 Use Scope when opening span in netty instrumentation 2019-04-05 11:13:53 -04:00
Nikolay Martynov e678a62e5b Use scope when opening JMS span 2019-04-05 11:13:53 -04:00
Nikolay Martynov 4119059e70 Jaxrs: use scope when span is opened 2019-04-05 11:13:53 -04:00
Nikolay Martynov 0e7418fde6 AWS v2: use scope when span is created 2019-04-05 11:13:53 -04:00
Nikolay Martynov 480a14b170 OkHttp: rearrange scope code a bit 2019-04-05 11:13:53 -04:00
Nikolay Martynov 1af7487201 Wrap Rabbitmq channel span into scope 2019-04-05 11:13:53 -04:00
Nikolay Martynov 743ab327b0 Wrap GRPC span start into scope 2019-04-05 11:13:53 -04:00
Nikolay Martynov a1e23dfb86 Make sure span is opened and closed with scope in Cassandra 2019-04-05 11:13:53 -04:00
Nikolay Martynov bddee3d6e2 Make sure span is opened and closed with scope in Mongo 2019-04-05 11:13:53 -04:00
Nikolay Martynov f3e1eb4f5d Make sure span is opened and closed with scope in Couchbase 2019-04-05 11:13:53 -04:00
Nikolay Martynov 2bba4c5591 Make sure span is opened and closed with scope in spymemcached 2019-04-05 11:13:53 -04:00
Nikolay Martynov bfb48f31c1 Make sure span is opened and closed with scope in http_url_connection 2019-04-05 11:13:53 -04:00
Nikolay Martynov 997832ba4e Limit hibernate integration tests to 5.x.x since we do not support 6+ 2019-04-05 10:43:16 -04:00
Nikolay Martynov 93621fac17 Specify hibernate latest dep test deps for 4.0 tests 2019-04-05 09:26:14 -04:00
Nikolay Martynov c104be1fa7 Add compile dep on scala to make Idea happy 2019-04-03 13:59:25 -04:00
Nikolay Martynov e3488d23a2 Netty: do not use deprecated constants 2019-04-03 13:58:54 -04:00
Nikolay Martynov a245ec4949 Upgradle gradle 2019-04-03 12:56:15 -04:00
Nikolay Martynov de980c2d52
Merge pull request #787 from DataDog/mar-kolya/compiler-config-fix
Mar kolya/compiler config fix
2019-04-01 09:15:39 -04:00
Nikolay Martynov 212d4d3c71 Provide Java compiler with bootstrap classes for Java7
when compiling Java7-compatible sources.
2019-03-29 13:53:53 -04:00
Luca Abbati 2c282552dc
Fix comment 2019-03-29 17:26:43 +01:00
Luca Abbati ff17ed166b
Fix code style in cassandra integration 2019-03-29 16:38:32 +01:00
Luca Abbati dfecfc8329
Fixed typo in comments (follow-up) 2019-03-29 14:15:25 +01:00
Luca Abbati 1e69fb7234
Have cassandra integration to work with recent versions of Guava.
Recent versions of Guava removed method 'Futures::transform(input, function)' in favor of 'Futures::transform(input, function, executor)'.
This commit manually retrieve the executor as it was done in Guava 20 in the overloaded method.
See: 65f6b4f4b1/guava/src/com/google/common/util/concurrent/AbstractTransformFuture.java (L58)
2019-03-29 13:42:46 +01:00
Nikolay Martynov 3b0e769e88 Fix helper injection in context provider
Currently helpers will not be injected if instrumentation doesn't
apply. Unfortunately it is possible for some classes to have context
fields added even if instrumentation is not allied (i.g. instrumented
classes are not used). Fix this by always injecting all helpers if we
inject context fields.
2019-03-26 15:53:34 -04:00
Tyler Benson 004c44d70c Add tests confirming that Spring Data Repos aren’t working
The hibernate instrumentation doesn’t seem to work with Spring Data JPA.
2019-03-25 11:58:16 -07:00
Tyler Benson a73b8c36f0 Review changes. 2019-03-25 09:56:05 -07:00
Tyler Benson 26a0194b84 Prevent instrumentation’s Context from applying if Muzzle fails
This can cause problems if muzzle prevents an integration from loading because the class for the new field being added may not be injected.  This results in an error:

```
Caused by: java.lang.NoClassDefFoundError: datadog/trace/bootstrap/instrumentation/context/FieldBackedProvider$ContextAccessor$org$hibernate$Session$datadog$trace$bootstrap$instrumentation$hibernate$SessionState
```
2019-03-25 08:19:44 -07:00
Tyler Benson 63b5c094e7 Fix NPE in hibernate instrumentation
Also add each hibernate instrumentation project as a test dependency to the others.  This demonstrates a problem with muzzle and instrumentation context which currently causes the tests to fail.
2019-03-22 17:06:19 -07:00
Tyler Benson b22b11b9b0 Add timeout test for V2
Also make sure span is closed on error.
2019-03-21 18:08:35 -07:00
Tyler Benson 8d96729ae8 Fix instrumentation and add tests to verify. 2019-03-21 18:08:35 -07:00
Nikolay Martynov 3a3705f708 AWS v0: Close span non AWS SDK errors
Looks like AWS SDK doesn't call interceptor when non-sdk exception
occurs. This leads to leaking open spans. Fix that by instrumenting
http client.

Note: currently has no tests.
2019-03-21 18:08:35 -07:00
Tyler Benson e0d95ceb19 Fix cassandra supported version
and limit range check to <4.
The latest release (4.0) is not compatible with our instrumentation.
2019-03-21 17:57:08 -07:00
Will Gittoes c363f64b50
Merge pull request #773 from DataDog/willgittoes-dd/hibernate-fix
Improve selectivity of Hibernate instrumentation application
2019-03-22 10:08:26 +11:00
Will Gittoes af0f37861b
Support Hibernate 3.3 2019-03-21 13:38:16 +11:00
Tyler Benson 07463e04bd
Merge pull request #772 from DataDog/tyler/status-error-mapping
Implement Http Status error mapping via config
2019-03-20 19:14:17 -07:00
Will Gittoes c369fafe8c
Support muzzle testInverse = true 2019-03-21 12:17:24 +11:00
Tyler Benson e5e2c5b9dc
Merge pull request #710 from DataDog/tyler/size-limited-flushes
Change DDAgentWriter to use Disruptor
2019-03-20 11:03:56 -07:00
Will Gittoes f94f22bcba
Dont load hibernate instrumentation unless correct version of hibernate is on the classpath 2019-03-20 15:52:49 +11:00
Tyler Benson 715af67e70 Implement Http Status error mapping via config
Using the following defaults:

* `DD_HTTP_CLIENT_ERROR_STATUSES=400-499`
* `DD_HTTP_SERVER_ERROR_STATUSES=500-599`
2019-03-19 17:11:48 -07:00
Will Gittoes 8c5158f8e9
Restructure hibernate integration 2019-03-20 11:00:42 +11:00
Tyler Benson 7ffcf5ad4d Change DDAgentWriter to use Disruptor
Serialize payloads as they arrive, send to agent when size exceeds 5MB.

If a flood of traces fills up the RingBuffer, we still count the traces that are discarded for stats reporting.

Do we want to allow configuration of the RingBuffer size?
2019-03-19 09:44:23 -07:00
Will Gittoes 4825a113f8
Add a couple of comments about the code structure 2019-03-19 16:28:27 +11:00
Will Gittoes b60c3bcc0a
Decouple common utils used in hibernate tracing from any specific version of hibernate 2019-03-19 14:40:16 +11:00
Will Gittoes 86d14280d2
Exclude hibernate-annotations from 3.5 latestDepTest 2019-03-19 09:56:39 +11:00
Will Gittoes 3b6c688ce8
Support Hibernate 3.5 2019-03-19 09:56:39 +11:00
Will Gittoes 5a04c58c55
Merge pull request #765 from DataDog/willgittoes-dd/hibernate-5
Add support for Hibernate 4.3+ ProcedureCall
2019-03-19 09:56:03 +11:00
Nikolay Martynov 63e0c0f032 Support Unix Domain Socket proxy to send traces 2019-03-15 11:36:44 -07:00
Tyler Benson 071c16a839
Merge pull request #768 from DataDog/tyler/metrics-double
Agent doesn’t like getting floats.
2019-03-15 07:55:25 -07:00
Tyler Benson 472262149c Apply timeout and retry to test
This test seems to hang a lot in java 7.
2019-03-14 15:44:32 -07:00
Tyler Benson 192eb894a4 Fix Trace Search + Analytics integration config key 2019-03-14 10:54:43 -07:00
Will Gittoes 30401bfed8
Fix test 2019-03-13 14:20:58 +11:00
Will Gittoes 54401083ce
Fix version of hsqldb 2019-03-13 14:09:49 +11:00
Will Gittoes 474f196c2f
fix style 2019-03-13 13:57:05 +11:00
Will Gittoes 2ceeb4dc14
Additional instrumentation for hibernate 4.3 and 5.x onwards 2019-03-13 13:52:33 +11:00
Tyler Benson ca708db5da Remove trace injection into AWS requests
I don’t think these are helping us and we may still risk messing up the signed request if this happens too late.
2019-03-12 14:08:27 -07:00
Tyler Benson bb7923571e
Merge pull request #764 from DataDog/tyler/memcache-decorator
Migrate Memcache instrumentation to Decorator
2019-03-12 14:01:47 -07:00
Tyler Benson bca5614508 Migrate Memcache instrumentation to Decorator 2019-03-12 11:47:25 -07:00
Tyler Benson d30d715dc8 Migrate Spring Web{flux} instrumentation to Decorator 2019-03-12 09:38:53 -07:00
Tyler Benson d31965ff5a
Merge pull request #761 from DataDog/tyler/rabbit-decorator
Migrate RabbitMQ instrumentation to Decorator
2019-03-12 08:08:22 -07:00
Will Gittoes 736f1787cc
Merge pull request #703 from DataDog/willgittoes-dd/hibernate-integration
Hibernate integration
2019-03-12 15:00:04 +11:00
Will Gittoes a3925b556c
Get rid of unneeded try/catch block 2019-03-12 14:07:37 +11:00
Tyler Benson 817f5e3f8e
Merge pull request #762 from DataDog/tyler/play-decorator
Migrate Play instrumentation to Decorators
2019-03-11 19:27:03 -07:00
Tyler Benson 69d31cc03a
Restrict derby version
Lastest version requires Java 9+, so we can’t test against it for now.
2019-03-12 11:52:39 +11:00
Will Gittoes e1915c35bf
Merge fixes for Hibernate 2019-03-12 10:46:30 +11:00
Will Gittoes bf110640e8
Merge branch 'master' into willgittoes-dd/hibernate-integration 2019-03-12 09:39:58 +11:00
Tyler Benson ee1d385c7b Restrict derby version
Lastest version requires Java 9+, so we can’t test against it for now.
2019-03-11 14:27:10 -07:00
Tyler Benson d90a3c47ae Restrict derby version
Lastest version requires Java 9+, so we can’t test against it for now.
2019-03-11 14:26:58 -07:00
Tyler Benson 2146678d0a Migrate RabbitMQ instrumentation to Decorator 2019-03-11 14:09:06 -07:00
Tyler Benson b8affc472d Migrate Play instrumentation to Decorators 2019-03-11 11:54:28 -07:00
Tyler Benson e3b871afb5
Merge pull request #758 from DataDog/tyler/okhttp-decorator
Migrate OkHttp Instrumentation to Decorators
2019-03-11 09:46:40 -07:00
Tyler Benson 0d23ab3169
Merge pull request #752 from DataDog/arbll/add-uds-support
Add UDS support for jmxfetch.
2019-03-11 08:22:51 -07:00
Will Gittoes 81f78db0ff
Support hibernate 4.0 2019-03-11 17:22:05 +11:00
Will Gittoes 600f2e267f
Enable integration for hibernate 4.3 2019-03-11 16:20:27 +11:00
Will Gittoes b40483c974
Add "hibernate" as the primary instrumentation name 2019-03-11 14:07:26 +11:00
Tyler Benson c500d4b236 Migrate OkHttp Instrumentation to Decorators 2019-03-08 15:12:29 -08:00
Ben Keith 446591240c Avoid race in TestHttpServer port selection
I notice occasionally some of the instrumentation tests fail due to port
conflicts in TestHttpServer, esp when using the `--parallel` option in
gradle. I think the previous method is subject to a race where two
concurrent workers will both get the same port from `randomOpenPort()`.
2019-03-06 12:55:02 -05:00
Tyler Benson 576e554445 Migrate Mongo to Decorator 2019-03-05 20:50:06 -05:00
Will Gittoes 7ed7ce7518
Fix muzzle 2019-03-06 10:39:46 +11:00
Will Gittoes 01f4666ac4
Simplify testing multiple session implementations 2019-03-06 10:28:18 +11:00
Will Gittoes e05429a9ff
Rename to hibernate-5 2019-03-06 10:12:52 +11:00
Will Gittoes 00865dab88
Review comments: Replace un-needed instrumentation by just propagating scope not spans 2019-03-06 10:05:21 +11:00
Nikolay Martynov d054790161
Merge pull request #754 from DataDog/mar-kolya/increase-docker-timeout
Increase docker container timeout in tests to help with stability on …
2019-03-04 14:40:27 -05:00
Tyler Benson 44919b4dbe
Merge pull request #751 from DataDog/tyler/netty-decorator
Migrate Netty instrumentation to Decorator
2019-03-04 09:26:11 -08:00
Nikolay Martynov 9272f88fe6 Increase docker container timeout in tests to help with stability on underpowered machines running builds 2019-03-04 11:59:41 -05:00
Tyler Benson 084c2eb51f Migrate Netty instrumentation to Decorator 2019-03-04 08:16:25 -08:00
Nikolay Martynov 8594e55530 Upgrade JMXFetch to the latest version 2019-03-04 08:48:04 -05:00
Arthur Bellal 15df2cd8f4 add uds support 2019-03-04 14:18:53 +01:00
Will Gittoes 9e3fda549d
More codenarc fixes 2019-03-01 13:53:51 +11:00
Will Gittoes ffa140f444
codenarc doesnt know how to parse datatables 2019-03-01 13:12:14 +11:00
Will Gittoes 644d26f4a9
Change muzzle tests 2019-03-01 12:53:51 +11:00
Will Gittoes bfc1042c3a
Additional test for OrmClientDecorator 2019-03-01 12:33:57 +11:00
Tyler Benson e098e6bd64 Migrate kafka instrumentation to Decorator. 2019-02-28 16:27:31 -08:00
Will Gittoes e6d593eabe
JAXB deprecated from default Java classpath in later JVMs, but required for tests 2019-03-01 10:49:49 +11:00
Nikolay Martynov 65cb8af873 Fix tests that verify that cancelling job cancels continuation 2019-02-28 18:44:39 -05:00
Tyler Benson 339784c4eb
Merge pull request #744 from DataDog/tyler/jms-decorator
Migrate JMS instrumentation to Decorator
2019-02-28 15:32:31 -08:00
Tyler Benson 1f60904321
Merge pull request #743 from DataDog/tyler/jetty-decorator
Migrate Jetty instrumentation to Decorator
2019-02-28 14:59:45 -08:00
Will Gittoes afc517f0c3
Review comments 2019-03-01 09:42:07 +11: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 5668e6006f Migrate Jetty instrumentation to Decorator 2019-02-28 13:54:37 -08:00
Tyler Benson 50b4e1623e Migrate JMS instrumentation to Decorator 2019-02-28 13:52:29 -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
Nikolay Martynov 3029d3d85c
Merge pull request #741 from DataDog/mar-kolya/tomcat-classloadin-instrumentation
Add instrumentation for Tomcat webapp classloading
2019-02-28 13:48:40 -05:00
Nikolay Martynov aa031cc708 Add instrumentation for Tomcat webapp classloading 2019-02-28 12:58:08 -05: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
Will Gittoes 3334affc42
Add test for OrmClientDecorator 2019-02-28 15:38:25 +11:00
Tyler Benson 133460a79a Stop making hard references in HelperInjector
Also make awaitGC interruptable.
2019-02-27 19:09:01 -08:00
Will Gittoes 093387bb01
Review comments and additional testing 2019-02-28 11:04:31 +11:00
Tyler Benson f7e8980d08 Add null check on span type
Null spanTypes cause the tag to be removed.
2019-02-27 15:35:15 -08:00
Tyler Benson 9c9e74e0d0 Missing helpers 2019-02-27 13:37:03 -08:00
Tyler Benson a413b0d08d Review changes. 2019-02-27 12:39:03 -08:00
Tyler Benson 1644de3969 Migrate Jax-rs client instrumentation to Decorator 2019-02-27 09:40:08 -08:00
Tyler Benson 4e9449db81 Migrate Jax-rs annotation instrumentation to Decorator 2019-02-27 09:40:08 -08:00
Tyler Benson cd9dc94b24 Migrate Hystrix instrumentation to Decorator 2019-02-27 09:40:08 -08:00
Tyler Benson 34242e4849 Migrate method tracing instrumentation to Decorator 2019-02-27 09:40:08 -08:00
Tyler Benson d842612697 Migrate Jedis/Lettuce instrumentation to Decorator 2019-02-27 09:04:52 -08:00
Tyler Benson 9e81bba3fa Review comments 2019-02-27 08:41:32 -08:00
Will Gittoes c0e5baebda
Support stored procedures 2019-02-27 16:17:27 +11:00
Will Gittoes 044ff75e07
Neaten decorator pattern a bit 2019-02-27 09:35:10 +11:00
Tyler Benson c46909e59f Migrate JDBC instrumentation to Decorator 2019-02-26 11:16:35 -08:00
Tyler Benson 99f2d97cd5 review fixes 2019-02-26 08:32:43 -08:00
Tyler Benson a33b6ddaa0 Implement trace origin header and propagation support 2019-02-26 08:26:31 -08:00
Nikolay Martynov 2c2f81ea34
Merge pull request #733 from DataDog/mar-kolya/remove-unused-function
Remove unused testing function
2019-02-26 11:18:11 -05:00
Tyler Benson e17e029540
Merge pull request #732 from DataDog/tyler/httpurlconnection-decorator
Migrate HttpURLConnection instrumentation to Decorator
2019-02-26 08:13:46 -08:00
Tyler Benson 0aba752787
Merge pull request #726 from blockmar/hystrix-tags
Hystrix metadata added to tags and Command Group included in resource name
2019-02-26 08:05:56 -08:00
Nikolay Martynov 15bca28539 Remove unused testing function 2019-02-26 10:31:31 -05:00
Will Gittoes 079fcd6a56
Use a Dectorator for the Hibernate instrumentation 2019-02-26 17:31:42 +11:00
Will Gittoes 8985d6fd07
Merge branch 'master' into willgittoes-dd/hibernate-integration 2019-02-26 12:03:08 +11:00
Will Gittoes 8ffb9a63b0
Add hibernate.Criteria instrumentation 2019-02-26 12:02:40 +11:00
Tyler Benson 678df7b43d Migrate HttpURLConnection instrumentation to Decorator 2019-02-25 14:48:15 -08:00
Tyler Benson adb2eb9b55 Migrate gRPC instrumentation to Decorator 2019-02-25 13:17:28 -08:00
Anders Blockmar 8d601b7f0d Get methodName directly by annotation. Applied Google formatting. 2019-02-25 09:45:10 +01:00
Will Gittoes b95ff2eb8e
Hibernate: instrument querying 2019-02-25 10:17:14 +11:00
Tyler Benson 2f3f2d4e04
Merge pull request #728 from DataDog/tyler/static-import-decorators
Rename and static import decorators instance
2019-02-22 15:51:21 -08:00
Tyler Benson 461e01270c
Merge pull request #729 from DataDog/tyler/license-cleanup
Remove unnecessary license checker
2019-02-22 15:28:02 -08:00
Tyler Benson 93e38f6f0d Rename and static import decorators instance
In the instrumentation it reads better.
2019-02-22 13:44:34 -08:00
Tyler Benson 7e82f5b197 Remove unnecessary license checker 2019-02-22 13:42:43 -08:00
Tyler Benson db47fde8d1 Group Elasticsearch instrumentation into common folder
Also migrate to decorator.
2019-02-22 13:28:11 -08:00
Tyler Benson f04d113ecb Make decorators public and add tests 2019-02-22 09:42:53 -08:00
Anders Blockmar 5c9ddd6923 POC for hystrix metadata as tags in Hystrix Instrumentation 2019-02-22 15:59:32 +01:00
Tyler Benson dd35372a72 Add Cassandra decorator 2019-02-21 15:43:12 -08:00
Tyler Benson 9c8e689b6d Add decorator for couchbase instrumentation 2019-02-21 15:27:26 -08:00
Tyler Benson 2e4d8e94d6
Merge pull request #724 from DataDog/tyler/exclude-macro
Exclude groovy macro package from instrumentation
2019-02-21 12:37:22 -08:00
Tyler Benson 8f9ea87ef6
Merge pull request #723 from DataDog/tyler/aws-decorators
Migrate AWS SDK instrumentation to decorators
2019-02-21 12:37:05 -08:00
Tyler Benson 0d9e6ad97a
Merge pull request #722 from DataDog/tyler/akka-apache-decorators
Akka and Apache HttpClient migrate to decorators
2019-02-21 12:27:53 -08:00
Tyler Benson fb304a110d Migrate AWS SDK instrumentation to decorators 2019-02-21 12:11:42 -08:00
Tyler Benson 49faeca145 Exclude groovy macro package from instrumentation
It generates a lot of noise when running tests and likely shouldn’t be instrumented.
2019-02-21 11:35:21 -08:00
Tyler Benson dfe5cb57b2 Servlet migrate to decorators 2019-02-20 17:35:41 -08:00
Tyler Benson 13e708ec42 Akka and Apache HttpClient migrate to decorators 2019-02-20 17:02:05 -08:00
Tyler Benson a98c22ac3a Introduce base decorators 2019-02-20 16:11:18 -08:00
Tyler Benson 4dd4ee0c05 Trace Analytics Config
Also make the instrumentation names a sorted list so the evaluation order is consistent.
2019-02-20 10:56:14 -08:00
Tyler Benson a7ebc9b3db Deprecate WEB_SERVLET type 2019-02-20 08:42:39 -08:00
Tyler Benson 8512b841e6 Fix how we evaluate if customlogger is on classpath
Resources must replace `.` -> `/` and add `.class` to the end.
2019-02-15 15:00:25 -08:00
Nikolay Martynov 2d0636e158
Merge pull request #712 from DataDog/mar-kolya/limit-es-rest-tests
Limit ES-rest tests to 6.x.x versions
2019-02-15 09:54:34 -05:00
Tyler Benson 8d5aed7512
Merge pull request #705 from DataDog/tyler/synthetic-ignore
Exclude several type identifications from instrumentation
2019-02-14 16:46:59 -08:00
Nikolay Martynov dd7981871f Limit ES-rest tests to 6.x.x versions
It looks like beta 7.x.x was released and our instrumentation doesn't
work with it at the moment.
2019-02-14 17:43:44 -05:00
Nikolay Martynov 62e127896a
Merge pull request #706 from DataDog/mar-kolya/webflux-fixes
Improve webflux instrumentation
2019-02-14 17:41:59 -05:00
Nikolay Martynov 8e1382b4e4 Improve webflux integration
Add support for tracing Mono/Flux
2019-02-14 16:59:59 -05:00
Nikolay Martynov 13005d72cb Add reactor-core instrumentation 2019-02-14 16:59:56 -05:00
Tyler Benson c65c79207a Remove `isSynthetic()` ignore
There’s concern that this will cause classes to be skipped that we do want to instrument.
2019-02-14 08:45:02 -08:00
Will Gittoes 7481a141c4
Added instrumentation to attach State to all Query objects, so they can be instrumented 2019-02-13 22:13:32 +11:00
Will Gittoes b68563f5d1
Make tests work for StatelessSession as well as Session 2019-02-13 15:08:53 +11:00
Tyler Benson e019fcbda5 Instrument SharedSessionContract instead of Session 2019-02-12 16:53:09 -08:00
Will Gittoes 180ba619a2
Move SessionFactory instrumentation into its own class 2019-02-13 10:32:09 +11:00
Will Gittoes 984f6aff68
Tests for Session methods 2019-02-12 17:22:43 +11:00
Will Gittoes cd2467c76b
Use a generic Session MethodAdvice to instrument all synchronous Session methods; also support re-entrant Session methods 2019-02-12 17:01:37 +11:00
Tyler Benson ccee63574d Exclude several type identifications from instrumentation
I considered excluding Interfaces too, but that would break people that added `@Trace` to their default methods.

Just a hunch, but I don’t think we want to instrument classes marked as synthetic, for example proxies.  We may want to extend this to our method matchers (and maybe exclude native methods too).

We might want to instrument enums/annotations, but that seems unlikely.
2019-02-11 16:23:08 -08:00
Tyler Benson 5bc3ec82c2
Merge pull request #697 from DataDog/tyler/gradle-upgrade
Upgrade Gradle to 4.10.3
2019-02-11 16:01:35 -08:00
Nikolay Martynov 05731c3c45 Log when test starts
This is helpful to see what logs belong to what test
2019-02-11 12:21:20 -05: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
Will Gittoes 724a59c347
Get initial hibernate tests working 2019-02-11 20:55:28 +11:00
Will Gittoes e8f0eaf85e
Add basic Hibernate integration 2019-02-11 14:47:21 +11: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 9d830a3dab Do not close parent scope when closing continuation in concurrent execution state 2019-02-08 20:13:32 -05:00
Tyler Benson 0802bb864c
Merge pull request #696 from DataDog/tyler/jmxfetch-config
JMXFetch bundled integrations disabled by default
2019-02-07 09:48:32 -08:00
Nikolay Martynov 931e6ff8af
Merge pull request #688 from DataDog/mar-kolya/webflux-fixes
Fix webflux integration to not rely in active span
2019-02-07 12:45:50 -05:00
Tyler Benson 000c0e4644 Upgrade Gradle to 4.10.3
Also try to improve build time performance by reducing the required configuration:
https://blog.gradle.org/preview-avoiding-task-configuration-time
2019-02-07 09:43:36 -08:00
Tyler Benson 4414dc2ad5 JMXFetch bundled integrations disabled by default
Enable each individually by setting `-Ddd.integration.<integration_name>.enabled=true`.
2019-02-06 13:00:52 -08:00
Nikolay Martynov 6de4f1b0ba
Merge pull request #694 from DataDog/mar-kolya/split-service-http-client-suggestions
Mar kolya/split service http client suggestions
2019-02-05 16:07:54 -05:00
Nikolay Martynov a46d6a2e8f Use config inheritance in `withConfigOverride`.
This moves us forward to abstract 'Config' and away from depending in
specific config data source (e.g. system properties).
2019-02-05 15:51:05 -05:00
Tyler Benson 65cece6741 Fix code coverage ignores. 2019-02-05 12:15:14 -08:00
Tyler Benson 12e7efc0b9 Review fixes 2019-02-05 11:58:36 -08:00
Tyler Benson bbcd2f6949 Move other Utils to utils package 2019-02-05 11:43:05 -08:00
Tyler Benson 6aa371d790 Encapsulate config override reflection 2019-02-05 11:30:07 -08:00
Tyler Benson 6cebabbada Move integrations config to Config class. 2019-02-05 08:20:49 -08:00
Tyler Benson 1a54e8179a Add setting to set service name by domain for http clients
This will allow better metric collection and identification of trends for individual services/hosts.

This is not enabled by default because it can result in a high cardinality of services.
2019-02-05 08:20:49 -08:00
Nikolay Martynov a086f38f2f Fix webflux integration to not rely in active span
Netty event loop instrumentation doesn't allow us to attribute work to
correct span so we have to maintain that manually.
2019-02-05 10:38:21 -05:00
Nikolay Martynov f84e510f3e Increase timeouts in JMS test to try to make it more stable 2019-02-05 10:10:49 -05:00
Nikolay Martynov f3d3d1269a
Merge pull request #692 from DataDog/mar-kolya/netty-4.0-improve-test
Make test results in netty-4.0 client tests more readable
2019-02-05 09:35:55 -05:00
Nikolay Martynov b25784e7a2 Make test results in netty-4.0 client tests more readable 2019-02-04 15:39:42 -05:00
Daniel Solano Gómez 4953a6c417 Skip clojure.lang.DynamicClassLoader
Not doing this seems to cause issues with Clojure protocols.
An application instrumented with the dd-java-agent that will
otherwise run fine will fail with ClassNotFoundException for
classes pertaining to Clojure protocols.
2019-02-04 07:12:29 -06:00
Tyler Benson 9353f82063
Merge pull request #686 from DataDog/tyler/jboss-jmxfetch
Initialize JMXFetch if configured log manager is on sys classpath
2019-01-31 15:24:55 -08:00
Tyler Benson 88d190d95b Test for customlogmanager=false 2019-01-31 14:53:58 -08:00
Will Gittoes 558cd9a3b7
Merge pull request #683 from DataDog/willgittoes-dd/hystrix-operation-name
Hard-code Hystrix operation (span) name, leaving the resource name dynamic
2019-02-01 09:44:29 +11:00
Will Gittoes 99e4e52600
Fix style 2019-02-01 09:29:05 +11:00
Tyler Benson e293ed477d Fix tests. 2019-01-31 14:25:19 -08:00
Tyler Benson f7abb2ac04 Initialize JMXFetch if configured log manager is on sys classpath
Some applications set java.util.logging.manager but never actually initialize the logger.
Check to see if the configured manager is on the system classpath.
If so, it should be safe to initialize jmxfetch which will setup the log manager.
2019-01-31 13:31:48 -08:00
Tyler Benson c89b00f682 Elaborate on comment. 2019-01-31 11:14:06 -08:00
Tyler Benson ea0dedcee7 Allow setting dd.app.customlogmanager=false to disable jboss check 2019-01-31 10:53:20 -08:00
Tyler Benson ee8a26d4dc Replace jboss classpath check with ENV check for jmxfetch delay
Some applications seem to have this jboss class on the classpath, but don’t actually use it.  When coupled with not actually using JUL, this means that we may never actually start JMXFetch.

Checking for JBOSS_HOME instead should be safer.
2019-01-31 10:42:43 -08:00
Will Gittoes a44b59bb14
Hard-code Hystrix operation (span) name, leaving the resource name dynamic 2019-01-31 14:30:08 +11:00
Will Gittoes 5941a93ad4
Merge pull request #679 from DataDog/willgittoes-dd/es-rest-6.4
Add support for Elasticsearch rest client 6.3 and above
2019-01-31 11:02:59 +11:00
Will Gittoes 57bae1688e
Review comments 2019-01-31 09:15:30 +11:00
Tyler Benson bb2fbb30b8 Add logging to JMXFetch initialization delay
Otherwise it’s difficult to determine why JMXFetch isn’t being initialized.
2019-01-30 10:39:29 -08:00
Will Gittoes 56aaccb0c2
Remove commented code 2019-01-30 17:42:41 +11:00
Will Gittoes f15a2ffd79
Add support for ES rest client 6.3 and above 2019-01-30 17:39:20 +11:00
Tyler Benson 2971d1b0d3 Ensure the copyMetricConfigs task runs after processResources
Otherwise there seems to be a race condition which results in the metric config files being overwritten.
2019-01-28 13:43:07 -08:00
Nikolay Martynov ee3788bfdc
Merge pull request #672 from DataDog/mar-kolya/more-forkjoin-instrumentations
More ForkJoin instrumentations
2019-01-28 14:01:03 -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