Commit Graph

308 Commits

Author SHA1 Message Date
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 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 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 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
Tyler Benson a11b888d7a Update ratpack instrumentation and remove default disabled. 2019-04-08 18:26:08 -07: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 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 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
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
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
Nikolay Martynov 63e0c0f032 Support Unix Domain Socket proxy to send traces 2019-03-15 11:36:44 -07:00
Tyler Benson 192eb894a4 Fix Trace Search + Analytics integration config key 2019-03-14 10:54:43 -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 bf110640e8
Merge branch 'master' into willgittoes-dd/hibernate-integration 2019-03-12 09:39:58 +11:00
Tyler Benson 2146678d0a Migrate RabbitMQ instrumentation to Decorator 2019-03-11 14:09:06 -07:00
Tyler Benson c500d4b236 Migrate OkHttp Instrumentation to Decorators 2019-03-08 15:12:29 -08:00
Tyler Benson 084c2eb51f Migrate Netty instrumentation to Decorator 2019-03-04 08:16:25 -08:00
Will Gittoes ffa140f444
codenarc doesnt know how to parse datatables 2019-03-01 13:12:14 +11:00
Will Gittoes bfc1042c3a
Additional test for OrmClientDecorator 2019-03-01 12:33:57 +11:00
Tyler Benson 50b4e1623e Migrate JMS instrumentation to Decorator 2019-02-28 13:52:29 -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
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 a413b0d08d Review changes. 2019-02-27 12:39:03 -08:00
Tyler Benson 4e9449db81 Migrate Jax-rs annotation 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 9e81bba3fa Review comments 2019-02-27 08:41:32 -08:00
Tyler Benson c46909e59f Migrate JDBC instrumentation to Decorator 2019-02-26 11:16:35 -08:00
Will Gittoes 079fcd6a56
Use a Dectorator for the Hibernate instrumentation 2019-02-26 17:31:42 +11: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 f04d113ecb Make decorators public and add tests 2019-02-22 09:42:53 -08:00
Tyler Benson 9c8e689b6d Add decorator for couchbase instrumentation 2019-02-21 15:27:26 -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 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 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
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 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 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
Tyler Benson 6cebabbada Move integrations config to Config class. 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
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 03bcdc97cc Move awaitGC to common utility package 2019-01-25 10:32:09 -08:00
Nikolay Martynov b3ad700b34
Merge pull request #666 from DataDog/mar-kolya/aws-sdk2
Initial AWS2 SDK instrumentation
2019-01-25 13:01:32 -05:00
Nikolay Martynov 6563a711c2
Merge pull request #671 from DataDog/osgi-fix
Improve OSGi class loader instrumentation
2019-01-25 12:48:45 -05:00
Nikolay Martynov 04fbb5085f Improve OSGi class loader instrumentation
It turns out that Eclipse's OSGi implementation has two problems:
* It doesn't respect system properties by default
* It has tricky classloader implementation that loads bootstrap
  classes from the classloader-has-delegation-to-bootstrap check but
  doesn't load bootstrap classes from 'normal' code.

This should address second problem and make Eclipse's OSGi
implementation 'safe' by default.
2019-01-25 08:52:07 -05:00
Tyler Benson 146a16df25 Upgrade weak-lock-free to 0.15 2019-01-24 11:44:28 -08:00
Nikolay Martynov 6471a1a81e Add $ separate to state field name 2019-01-23 22:32:00 -05:00
Andrew Kent 097c557651 Delay jmxfetch init when custom log manager is used by client's app 2019-01-16 12:18:29 -08:00
Andrew Kent cc8db0b11f Workaround module bug by skipping LogManager$Cleaner instrumentation 2019-01-09 15:03:43 -08:00
Tyler Benson fe52180bfc Apply proper generic signature for Instrumenter.Default transformers()
Previously it was missing the MethodDescription portion.
2019-01-04 15:25:12 -08:00
Andrew Kent 2861d87071 slf4j MDC autoinjection integration 2018-12-19 17:09:00 -08:00
Andrew Kent 4dc3528097 Add post-match hook to default instrumenter api 2018-12-19 17:07:43 -08:00
Andrew Kent d0f3cfa3d6 Use asm bundled by bytebuddy in field-backed provider
JVM's ASM is not bundled with the agent and may not be present at runtime.
2018-12-19 12:37:47 -08:00
Andrew Kent 0b92413d4a Move JvmBootstrapTest into a fork inside a groovy test 2018-12-12 20:17:48 -08:00
Andrew Kent 0240ad5154 Move default instrumentation declarations to Instrumenter.Default 2018-12-11 18:01:40 -08:00
Andrew Kent 1004ee4ef7 Patch java.util.logging.Logger for safe use with jmxfetch 2018-12-11 17:26:02 -08:00
Nikolay Martynov 3225c8fd03 Fix wildfly startup by injecting context classes into bootstrap package 2018-12-07 09:56:04 -05:00
Nikolay Martynov 600674b03a Put back muzzle check for 'dd-' threads 2018-12-05 17:20:50 -05:00
Nikolay Martynov 4deb68bfd7 Fix memory leak in WeakMapSuppliers.WeakConcurrent
The problem there is that it references JVM shutdown hook that keeps
reference to cleanup executor which potentially can keep references to
all sort of things - and this doesn't get cleaned up untill JVM
shutdown.

Solution is to remove shutdown hook when supplier is being GCed.
2018-12-05 15:02:40 -05:00
Nikolay Martynov ad98ebc01f Add some comments and some other minor CR tweaks 2018-11-29 15:18:46 -08:00
Nikolay Martynov 1509286b15 Remove MapBackedProvider 2018-11-29 15:18:46 -08:00
Nikolay Martynov 118a61cc67 Add field backed context provider 2018-11-29 15:18:46 -08:00
Nikolay Martynov b89e73b3c0 Switch executor instrumentation to use context storage 2018-11-29 15:18:46 -08:00
Andrew Kent 3c4b480a18 Share tooling loader across muzzle runs 2018-11-28 13:01:01 -08:00
Andrew Kent 6ee5fd27b0 Guard against invoking WeakConcurrent constructor 2018-11-28 12:05:47 -08:00
Gary 50c2af9abb
remove classloader matcher 2018-11-26 16:57:12 -05:00
Gary bf30d73746
remove skipping of ratpack helper checks 2018-11-26 16:55:36 -05:00
Andrew Kent 1667e590b9 Log Java and JVM version info. 2018-11-02 17:12:00 -07:00
Nikolay Martynov 3c0ba56d2c Make context maps 'global' for a given key class name
This ensures that different instrumenters using same key class can see
each others state
2018-11-02 12:59:30 -04:00
Nikolay Martynov 98df97af3e First iteration on a better context store api
Separate context storage from actual fetching/putting
2018-11-02 10:46:57 -04:00
Andrew Kent d0b00e0dc0 Inject all map holder classes into the bootstrap 2018-11-01 15:05:20 -07:00
Andrew Kent 5f0f6f1474 Inject dynamic classes into topmost class loader 2018-10-31 16:11:52 -07:00
Andrew Kent 5824eb83b8
Merge pull request #537 from DataDog/ark/instrumentation-context-outline
instrumentation context map-backed impl
2018-10-29 18:48:23 +00:00
Andrew Kent b89aa54a93 Move ASM visiting method into context-store impl 2018-10-26 14:06:57 -07:00
Andrew Kent cc27f1507e Javadoc for map-backed context store. Type info on context store api 2018-10-26 13:41:24 -07:00
Nikolay Martynov fc13d7db2b Reorganize WeakConcurrent implementation to allow cleanup thread GC when map is out of scope 2018-10-23 16:30:51 -04:00
Tyler Benson 13c91d11e5 Upgrade shadow to 4.0.1 and exclude module-info.class files. 2018-10-22 10:44:04 +10:00
Tyler Benson 192b0fd478 misc minor changes 2018-10-22 10:44:04 +10:00
Andrew Kent 7547e0fc5e Cleanup and javadoc 2018-10-19 13:07:11 -07:00
Andrew Kent 131074c255 Move InstrumentationContext api to bootstrap 2018-10-18 10:16:15 -07:00
Andrew Kent b02ed4e813 Initial Map-backed implementation and test 2018-10-17 15:29:59 -07:00
Andrew Kent f098b8027e Basic implementation outline and happy-path test 2018-10-16 10:22:36 -07:00
Andrew Kent 7330ceaf4e Instrumentation Context outline for HttpURLConnection as an example 2018-10-15 11:05:23 -07:00
Andrew Kent 13c96bba33 Additional test for shared field 2018-10-10 10:40:04 -07:00
Tyler Benson 330e09d0b3
Merge pull request #477 from DataDog/tyler/bb-upgrade
Upgrade Byte Buddy to 1.9.0
2018-10-02 11:31:11 -04:00
Tyler Benson 6b8eb60ca2 Upgrade Byte Buddy to 1.9.0 2018-10-01 13:31:03 -04:00
Andrew Kent 5864dd90e7 Allow instrumenting com.sun.messaging. namespace 2018-09-28 14:37:32 -07:00
Tyler Benson 3d78afbc2c Disable Executor instrumentation ThreadPoolExecutor instances
If we can’t add generic runnables to the queue.

This won’t solve the problem for all cases, but it will help with some.

Tests forthcoming.
2018-09-20 16:06:01 +10:00
Tyler Benson f9f0438e85 Initialize WeakMapProvider even earlier
It is used by classes delcared as static fields in AgentInstaller, so there were some cases where the fallback is being used.
2018-09-19 08:37:08 +10:00
Tyler Benson 296f9adfc2 Ignore byte buddy classes
not having this produced the following error on startup:

```
Cannot resolve type description for net.bytebuddy.dynamic.Nexus
```
2018-09-18 17:20:36 +10:00
Tyler Benson 8061bd2471 Add comment. 2018-08-31 16:27:31 +10:00
Tyler Benson 2d04ef292e
Merge pull request #468 from DataDog/tyler/evict-typepool
Add eviction to a TypePool.CacheProvider’s cache
2018-08-31 08:57:18 +10:00
Tyler Benson 6b0f20fc05 Add eviction to a TypePool.CacheProvider’s cache
Most items loaded are probably not often used.  Puts an upper limit on the size and evicts unused Resolution’s over time.
2018-08-30 11:56:53 +10:00
Andrew Kent 61aaebfc97 Create muzzle references from ldc instructions 2018-08-29 17:18:11 -07:00
Andrew Kent 7154b54e10 Rename TracerBridge and Provider 2018-08-27 12:04:26 -07:00
Andrew Kent 9f1d22ea6b Register TracerBridge in TracerInstaller instead of DDTracer init 2018-08-27 12:04:26 -07:00
Andrew Kent c6841c9d06 Add maven version scanning to muzzle 2018-08-24 10:47:37 -07:00
Tyler Benson 36b49c7de3
Merge pull request #451 from DataDog/tyler/netty-client-fixes
Allow trace to persist across netty connect.
2018-08-23 16:03:58 +10:00
Tyler Benson 898647e000 Allow trace to persist across netty connect.
Also create span with error on connection failure.

Add tests for connection failure.
2018-08-22 09:45:33 +10:00
Nikolay Martynov c95baef487 Wait for given reference to get GCed in `waitGC`
This should help to make sure that object we are interested in
actually gets GCed.

This change also improves tests for PendingTrace and ScopeManager to
make sure that trace gets cleaned up.
2018-08-21 10:05:10 -04:00
Nikolay Martynov 138f78ce4b Make Muzzle log class being instrumented 2018-08-16 17:28:32 -04:00
Andrew Kent 3c1bf569ea Add reference pretty-printer to muzzle plugin 2018-08-15 10:01:19 -07:00
Andrew Kent c351a4825e Regenerate muzzle bytecode when run multiple times 2018-08-15 09:49:50 -07:00
Nikolay Martynov 36ec5d51e5 SafeHasSuperTypeMatcher: handle exceptions when getting class erasure 2018-08-15 09:49:50 -07:00
Andrew Kent a7c63b9261 Clarify comment for safe interface iteration. 2018-08-15 09:49:50 -07:00
Andrew Kent 57e85d4a13 Catch and log instrumentation matcher exception
Catching instrumentation matcher exceptions at the Instrumenter level
allows other, unrelated instrumentation to match.
2018-08-15 09:49:50 -07:00
Andrew Kent d64b162539 Remove safeMatch from element matcher and document bb cache class 2018-08-15 09:49:50 -07:00
Andrew Kent 260e3520aa Fix classloading integration tests 2018-08-15 09:49:50 -07:00
Andrew Kent 35c6fa2343 More error catching in safe matcher and reduce log level 2018-08-15 09:49:50 -07:00
Andrew Kent 75a6cee068 Add DDCachingPoolStrategy to reuse type descriptions 2018-08-15 09:49:50 -07:00
Ark f01c8349cc Deep-merge Reference fields and methods
Plus misc cleanup.
2018-08-15 09:49:50 -07:00
Andrew Kent e7bb7cfb3e Remove findLoadedClass 2018-08-15 09:49:50 -07:00
Andrew Kent 50c5a57c49 Replace UnloadedType with ByteBuddy TypeDescription 2018-08-15 09:49:50 -07:00
Andrew Kent 27cade057c Delegate bootstrap resource loading for unloaded types 2018-08-15 09:49:37 -07:00
Andrew Kent f8f45d7f14 Muzzle field matching 2018-08-15 09:49:37 -07:00
Andrew Kent c4daf007e3 Muzzle method and access matching 2018-08-15 09:49:37 -07:00
Andrew Kent 4887822eba Muzzle method ref creation and matching 2018-08-15 09:46:30 -07:00
Andrew Kent 0f6761dd4b Optimize Instrumenter logging 2018-08-15 09:46:30 -07:00
Andrew Kent 55a0abce68 Add notes of potential references to ReferenceCreator 2018-08-15 09:46:30 -07:00
Tyler Benson 84d38a8270
Merge pull request #439 from DataDog/tyler/method-signatures
Cleanup method signatures and servlet 2 instrumentation
2018-08-13 17:29:02 +10:00
Tyler Benson f801cbd466
Merge pull request #428 from DataDog/tyler/use-WeakConcurrentMap
Use WeakConcurrentMap
2018-08-13 16:44:16 +10:00
Tyler Benson 232708e457 Prevent abstract classes from going through the muzzle plugin. 2018-08-13 15:35:46 +10:00
Tyler Benson 4583d12b31 Cleanup method signatures and servlet 2 instrumentation
adding the abstract servlet instrumentation reduces code duplication and makes it more similar to servlet 3 instrumentation.
2018-08-13 15:14:10 +10:00
Nikolay Martynov fc8cc47f85 WeakMap improvements
* Improve tests to not depend on thread schedulting
* Test all underlying implementations
* Reduce number of static values
2018-08-10 22:16:21 -07:00
Tyler Benson 6cef9b89b0 Make some things non-static 2018-08-10 15:41:26 +10:00
Tyler Benson b220309a68 PR review changes. 2018-08-10 12:23:13 +10:00
Tyler Benson a3875aff2c Logging improvements and other misc
from reviewing a customer’s logs.
2018-08-09 15:59:59 +10:00
Tyler Benson eacc2d6402 Restructure how WeakMap is implemented
Use an interface.
Use a provider/supplier to avoid loading more onto the bootstrap classpath.
2018-08-08 16:54:44 +10:00
Tyler Benson 5e55defeb3 Fix bootstrap classpath. 2018-08-07 17:11:42 +10:00
Tyler Benson 847484cd47 Use WeakConcurrentMap
Instead of `Collections.synchronizedMap(new WeakHashMap<>())`.
2018-08-06 14:14:57 +10:00
Tyler Benson 064ae4c238 Separate span for input and output streams. 2018-08-03 15:41:16 +10:00
Nikolay Martynov 7ad9305927 Add some integration tests to check ByteBuddy's behavoir on class loading and parsing 2018-08-01 14:17:12 -04:00
Nikolay Martynov bb2126bd9a Improve ByteBuddyElementMatchers javadoc 2018-07-31 20:14:03 -04:00
Nikolay Martynov 78e6a9c336 Get rid of DDAdvice
Newer ByteBuddy api simplifies things.
2018-07-31 20:14:03 -04:00
Nikolay Martynov 6bc1d1ab8e Implement `saveHasSuperType` and use it instead of `hasSuperType`
The idea is to just 'trim' type hierarchy 'up-trees' that we cannot
resolve dring instrumentation instead of failing to instrument completely.
2018-07-31 20:13:59 -04:00
Nikolay Martynov bae79514c0 Fix DDLocationStrategy to use DataDog ClassLoader
This allows ByteBuddy to properly find classes injected into the
agent.

Thanks @realark for providing a fix!
2018-07-31 20:12:17 -04:00
Nikolay Martynov 4ae9263e1c Set POOL_ONLY DescriptionStrategy for ByteBuddy
This makes sure no classes are loaded during instrumentation
transformation which allows us to safely instrument depndent classes.
2018-07-31 20:12:17 -04:00
Tyler Benson ff9ef671f3 Apply formatter on groovy files. 2018-07-31 12:09:28 +10:00