Commit Graph

308 Commits

Author SHA1 Message Date
Nikolay Martynov 15c1e67334 Fix agent on latest zulu8
The problem was that on zulu8 loading OkHttp touches JFR which in turn
touches log manager - which would break things like JBOSS.

The fix is to delay installing agent (and writer) until log manager
things have settled down - in way similar to jmxfetch.

Unfortunately for 'main' agent this turns out to be more involved
because of classloader shenanigans.
2019-11-06 10:09:50 -05:00
Nikolay Martynov 7f5b270c67 Call class loading callbacks from onComplete
This should make things more clear
2019-11-05 13:08:21 -05:00
Tyler Benson 425156115c Add new integration for Servlet Filters, HttpServlet, and RequestDispatcher
Disabled by default, and only creates a span if existing trace detected.

To enable all of them:
* System Property: `-Ddd.integration.servlet.enabled=true`
* Environment Variable: `DD_INTEGRATION_SERVLET_ENABLED=true`

(They have independent configs as well.  If needed, view the source below.)
2019-10-25 14:47:48 -07:00
Tyler Benson fa80fee15d Refactor JAX-RS Annotation and Spring Controller/Handler Instrumentation
For spring:
* Move more logic to the decorator.
* Use a fixed operation name, but set the resource name.
* Rename the root span instead of the parent span (If there are other spans in between this could make a difference.)  Not sure what impact this would have if multiple controllers are called (ie, forward/include).

For Jax-rs:
* Rename the root span instead of the parent span (same concern as above with spring)
2019-10-25 10:19:25 -07:00
Trask Stalnaker d45b571996 Remove unused code 2019-10-24 20:53:13 -07:00
Trask Stalnaker b0c5b2cd78 Remove deprecated methods 2019-10-19 16:52:43 -07:00
Trask Stalnaker f67e3b98db Migrate base decorators to new agent api 2019-10-19 16:40:52 -07:00
Tyler Benson 126dc67181 Update AgentApi to OT 0.32.0 2019-10-17 14:11:07 -07:00
Laplie Anderson c8f3a26312
Merge pull request #1045 from DataDog/landerson/decorator-errors
Skip `@Decorator` classes when instrumenting
2019-10-17 16:02:54 -04:00
Laplie Anderson 8971040a45 Supertypes are not always available. Only check the current class for decorator 2019-10-17 13:42:38 -04:00
Laplie Anderson 6e0af7cdeb Dont instrument `@Decorator`s or CDI breaks 2019-10-16 18:26:06 -04:00
Tyler Benson 61151d425a Changes requested in review 2019-10-15 16:03:02 -07:00
Tyler Benson 757961e014 Initial implementation of agent internal API. 2019-10-15 15:40:44 -07:00
Nikolay Martynov ecc57ffcc5 `DDCachingPoolStrategy.size()` is not precise, use `find` instead 2019-10-11 09:00:16 -04:00
Tyler Benson 4679b07bb3 Decrease cache size and make soft values
Attempt to reduce memory overhead requirements.  Based on feedback, it seems 10k was overly agressive.  In memory constrained environments, use soft values to ensure the cache isn’t pushing usage over the limit.
2019-10-10 18:19:41 +02:00
Tyler Benson 9ef3332140 Extract base test class and move Config class changes there. 2019-10-07 18:51:25 +02:00
Nikolay Martynov 8e75eeb506 Update bytebuddy to 1.10.1 2019-10-07 08:27:13 -04:00
Laplie Anderson d564ff937a Cleaner test timeout was too low 2019-09-18 18:06:27 -04:00
Tyler Benson e895d7c3a7
Merge pull request #983 from DataDog/tyler/cache-soft-refs
Optimize DDCachingPoolStrategy
2019-09-11 09:41:48 -07:00
Tyler Benson 988b03b2f3 Optimize DDCachingPoolStrategy
Reduce default cache size in EvictingCacheProvider, and return a NoOp CacheProvider when classloader is going to be skipped.
2019-09-10 15:52:37 -07:00
Tyler Benson 42545a0906 Remove synchronization from RateByServiceSampler
This change avoids lock contention in a hot code path.

I also added double check locking in ClassLoaderMatcher to reduce the need of locking there.
2019-09-10 12:44:13 -07:00
Tyler Benson df017e044a
Merge pull request #975 from DataDog/tyler/split-by-tag
Add new setting to allow renaming service by tag
2019-09-05 14:24:20 -07:00
Tyler Benson 82f5076716 Add new setting to allow renaming service by tag
This is a more generic form of the previous `split-by-domain` and `split-by-instance`.

(Note: evaluation is done when a tag is set, so If multiple tags are configured, the last tag set will take precidence.)

For example, this setting can be used to rename `aws-sdk` spans to be identified with the corresponding `aws.service` tag:

```
-Ddd.trace.split-by-tags=aws.service
```

There are some slight differences with this setting compared with`dd.trace.http.client.split-by-domain` and `dd.trace.db.client.split-by-instance`.  `split-by-tags` applies to every span, where `split-by-domain` and `split-by-instance` only apply to http and db client spans respectively.
2019-09-03 16:55:47 -07:00
dougqh 4851cc9069 Re-running format through gradle
Need to figure out why IntelliJ and gradle are behaving differently for import order
2019-09-03 16:16:13 -04:00
dougqh 3e2ef885a5 Ensure "client" spans do not set the language tag
The core changes are in Config and ServerDecorator.

Moved default tagging from Config::getRuntimeTags to Config::getLocalRootSpanTags.  This changes the result of Config::getMergedJmxTags as well.

To preserve language for servers changed ServerDecorator::afterStart.

Other changes are in tests - the most complicated part is in TagsAssert::defaultTags.  This now contains a bit too much conditional logic for my liking.
2019-09-03 13:20:50 -04:00
Laplie Anderson d03d583e85
Merge pull request #966 from DataDog/landerson/wrap-instrumentation-install
Wrap instrumentation installation with a try/catch
2019-08-30 14:02:13 -04:00
Laplie Anderson f3bb22d8df Revert addition of tests. Too many issues 2019-08-29 18:20:09 -04:00
Laplie Anderson ae9f8e15dd Add test. Address other PR concerns 2019-08-29 17:48:29 -04:00
Laplie Anderson 08de0b02fd Wrap instrumentation installation with a try/catch 2019-08-28 17:33:11 -04:00
Tyler Benson 09ad2374cf Disable Grizzly instrumentation by default
Otherwise it can interfere with the more common Servlet instrumentation (changing the root span name).

Unify attribute/property name for saving span on a request/context.
Also add tests for embedded GlassFish.
2019-08-27 13:27:57 -04:00
Laplie Anderson 3f29e72317
Merge pull request #960 from DataDog/landerson/module-reference-fix
Ensure injected modules can read helper class modules
2019-08-27 12:42:34 -04:00
Laplie Anderson d170984f72 Use weak references for the helper modules so ClassLoaders can be GC'd 2019-08-27 10:56:04 -04:00
Laplie Anderson 7b66a31d80 Ensure injected modules can read the helper class module 2019-08-23 19:14:10 -04:00
Tyler Benson e69edaec14 Remove project config centrally defined and other misc cleanup 2019-08-22 12:43:13 -07:00
Tyler Benson 95d056da5d More CR tweaks. 2019-08-21 16:48:52 -07:00
Tyler Benson 7e14f621b1 Review fixes and add tests. 2019-08-20 12:33:45 -07:00
Tyler Benson 8c1dbfe7cb Make Muzzle handle cleaner thread properly. 2019-08-19 17:27:01 -07:00
Tyler Benson 09213f63b4 Extract logic out for `Cleaner` class. 2019-08-16 20:16:23 -07:00
Tyler Benson 70464c2e5d Add cleaner thread to EvictingCacheProvider’s cache
The guava cache used internally wasn’t cleaning (releasing references to) the expired entries properly, resulting in excessive memory overhead.

This PR also increases the size of the cache but reduces the last used expiration window.

I also added some tests to verify the expected behavior of the cache.
2019-08-16 16:30:15 -07:00
Laplie Anderson 548e4ed6e4
Merge pull request #934 from DataDog/landerson/remove-temp-jars
Eliminate temporary jars for instrumentation, jmxfetch, and bootstrap
2019-08-06 18:32:41 -04:00
Laplie Anderson 273feafa94 Use the bootstrapProxy to load jars. Better bootstrap url algo 2019-07-30 19:50:16 -04:00
Laplie Anderson c41536cbe2 Fix failing tests
Add TracingAgent to list of bootstrap class
Fix renaming tests
Fix JMXFetch path splitting
2019-07-30 15:27:47 -04:00
Laplie Anderson a1f8cad2e8 Tooling and jmxfetch temp jars removed
Enhanced the DatadogClassloader to work with jars inside other jars.  No need to create the jars in a temp directory anymore
2019-07-29 17:01:55 -04:00
Luca Abbati 8609a07eaf
Merge branch 'master' of github.com:DataDog/dd-trace-java into labbati/atlas-1.1.0-compatibility 2019-07-26 11:23:06 +02:00
Luca Abbati 3817e76130
Apply doubled-check locking + same approach to attributes definition for netty-4.1 2019-07-22 11:15:33 +02:00
Luca Abbati 95a963a364
Fix build with additional WeakHash map implementation 2019-07-19 17:05:40 +02:00
Luca Abbati edacd7a41d
Refactor weak hash map to be able to reuse functionalities 2019-07-19 16:18:38 +02:00
Luca Abbati 35b928be7c
Refactor ClassLoaderScopeWekaMap 2019-07-18 15:34:26 +02:00
Nikolay Martynov ab7786d352 Minor javadoc fix 2019-07-17 16:58:29 -04:00
Luca Abbati e3a6d40e77
Add tests for ClassLoaderScoperWeakMap 2019-07-17 12:46:24 +02:00