Commit Graph

2338 Commits

Author SHA1 Message Date
dougqh faeb069424 Adjusting capacity check again 2020-01-30 18:08:49 -05:00
dougqh 235a6470fb googleJavaFormat 2020-01-30 17:45:40 -05:00
dougqh 0f095f0adb Final clean-up
- Removed unused method from earlier version
- Corrected previously overlooked comments that were remnant of prior version
2020-01-30 17:44:24 -05:00
Laplie Anderson 37a279069b Add server tests 2020-01-30 15:23:26 -05:00
Blinkingor 8d83172128 clazz -> segment rename 2020-01-29 18:41:29 +01:00
Blinkingor db485d10da final configString 2020-01-28 16:20:02 +01:00
Blinkingor 811051d111 Remove overlapping tests and fix failing unit test 2020-01-28 16:06:23 +01:00
Blinkingor 10b963d277 Codenarc fixes 2020-01-28 15:35:39 +01:00
Blinkingor cf876b5e67 Fix import order 2020-01-28 15:21:50 +01:00
Blinkingor 1e390984c1 Fix potential StackOverFlowError on regexp 2020-01-28 10:28:37 +01:00
dougqh 176f826a44 Adjusting approximateSize check to be more reliable 2020-01-27 17:44:39 -05:00
dougqh 4c7a0ba7a7 Fixing muzzle?
MuzzlePlugin groovy checks that no threads are spawned because this holds the ClassLoader live.

This was breaking with the caching change because the cache no longer uses the Cleaner service.

This caused a problem because the Thread behind the cleaner is created lazily when the first task is created, but without the cache the creation was delayed.

To solve this, I addressed the original cause of the leak.  The newly created Thread automatically inherits the contextClassLoader of its parent, but that's unnecessary for a cleaner thread.

So I changed the ThreadFactory for cleaner to explicitly null out the contextClassLoader.

We should probably null out contextClassLoader in other thread factories and also reduce our use of contextClassLoaders in general, but that will left to another PR.
2020-01-27 17:14:17 -05:00
dougqh d50f901f39 googleJavaFormat, codeNarcTest, and test reliability 2020-01-27 12:34:39 -05:00
dougqh fb871611b5 Replacing ID generation with WeakReference reuse
First pass at replacing ID generation with WeakReference reuse

In this first version, the Cache<ClassLoader, ID> was replaced with Cache<ClassLoader, WeakReference<ClassLoader>>.

The core cache is still of Cache<TypeCacheKey, TypePool.Resolution> and TypeCacheKey logically remains a composite key of ClassLoader, class name.

The removal of ID assignment means ID exhaustion is no longer na issue, so there's never a need to rebuild the cache.  For that reason, CacheInstance has removed and the core caching logic has been moved into DDCachingPoolStrategy.

While TypeCacheKey remains conceptually the same, the internals have changed somewhat.  The TypeCacheKey now has 3 core fields...
- loaderHash
- loadeRef
- class name

Since loader refs are recycled, the fast path for key equivalence can use reference equivalence of the reference objects.

This change ripples through the CacheProvider-s which also have to store loaderHash and loaderRef.

It may be worth going a step further and switching to a Cache<Loader, TypePool> as well.  That still avoid the creation of many WeakReference-s, since the underlying CacheProvider will hold a canonical WeakReference per ClassLoader.
2020-01-27 12:03:44 -05:00
dougqh cf877f67e5 Working around muzzle quirk
Muzzle doesn't like creation of SecureClassLoader-s, so switching to a URLClassLoader for my placeholder loader in tests
2020-01-27 09:47:36 -05:00
Brian Devins-Suresh 660041636a
Merge pull request #1190 from DataDog/devinsba/hibernate-null-entity-check
Add null check to hibernate decorator
2020-01-24 14:55:11 -05:00
Brian Devins-Suresh 3daad0009d Add null check to hibernate decorator 2020-01-24 10:58:52 -05:00
Laplie Anderson 8ff985afdb Cleaner way to skip netty executor's tasks 2020-01-23 12:04:56 -05:00
dougqh 984d77e44c googleJavaFormat & codeNarc 2020-01-23 11:15:39 -05:00
dougqh 726236bd64 Type cache overhaul
This change overhauls the core type cache

The new approach aims to achieve several things...
1 - cache is strictly bounded -- no variance for number of classes of ClassLoaders
2 - cache is significantly smaller
3 - cache doesn't compromise start-up time
4 - primary eviction policy isn't driven by time
5 - primary eviction policy isn't driven by GC

There are some slight compromises here.
In practice, start-up does increase slightly in a memory rich environment; however, start-up improves considerably in a memory poor environment.

The basic approcach is to have a single unified Guava cache for all ClassLoaders -- nominally keyed a composite of ClassLoader & class name

The ByteBuddy CacheProvider are simply thin wrappers around the Guava cache associated to a particular ClassLoader

However rather than having a large number of WeakReferences floating around.  The cache assigns an ID to each ClassLoader.

To further avoid, consuming memory the cache only preserves a small map of Loader / ID assignments.  This means a ClassLoader may have more than one active ID.

This introduce the possibility for ID exhaustion.  That unlikely case is handle by retiring the internal CacheInstance and starting anew.
2020-01-23 10:55:16 -05:00
Laplie Anderson 68e52497d6 Move to versioned folder name 2020-01-23 10:51:38 -05:00
dougqh 17af9b752c Fix typo in test name 2020-01-23 10:40:48 -05:00
Nikolay Martynov 950389587c Simplify groovy/scala/kotlin compile dependency hack 2020-01-23 09:40:15 -05:00
Laplie Anderson 4e58643bd0 Initial finatra instrumentation 2020-01-22 18:09:10 -05:00
Tyler Benson f9e43516ad Set timeouts on individual tests and increase overall test timeout. 2020-01-22 09:06:03 -08:00
Laplie Anderson 64ed09d76c
Merge pull request #1179 from DataDog/landerson/internal-jar-memory
Use streams directly in DatadogClassLoader
2020-01-16 10:51:42 -05:00
Laplie Anderson 6766e12597
Merge pull request #1173 from DataDog/landerson/weakmap-computeifabsent
Synchronized audit: WeakMap computeIfAbsent
2020-01-15 14:51:29 -05:00
Laplie Anderson 607c8f277e Don't copy to byte[], return input stream directly 2020-01-15 13:38:44 -05:00
Laplie Anderson 68ed1da9c6 Don't call `map.get()` in the `put(..)` case 2020-01-15 12:41:01 -05:00
Laplie Anderson a0b1cd4a75 WeakMap computeIfAbsent 2020-01-15 12:26:15 -05:00
Tyler Benson e31cbd6c89 Add Builder to DDTracer
Deprecate previous constructors.
2020-01-14 17:44:34 -08:00
Tyler Benson a52a1420db
Merge pull request #1165 from DataDog/tyler/servlet
Add servlet integrations for request and response dispatch back in.
2020-01-13 13:17:29 -08:00
Tyler Benson d42e72b683
Merge pull request #1171 from DataDog/tyler/bb-filter
Remove more declared method filtering for optimization
2020-01-13 13:05:28 -08:00
Tyler Benson ef6cd9c52c
Merge pull request #1170 from DataDog/tyler/couchbase
Adjust version compatibility to only 2.x
2020-01-13 13:04:57 -08:00
Tyler Benson 5fe26f004b Remove more declared method filtering for optimization
Same logic that was applied in #1169
2020-01-13 12:52:41 -08:00
Nikolay Martynov 6bf1e159b0
Merge pull request #1167 from DataDog/mar-kolya/upgrade-jmxfetch
Upgrade jmxfetch to latest version
2020-01-13 15:45:12 -05:00
Tyler Benson 77cdd210c6 Also update latestDepTest ranges. 2020-01-13 12:31:38 -08:00
Nikolay Martynov cb7faee63f Remove logging config from jmxfetch setup
It already uses slf4j
2020-01-13 15:23:04 -05:00
Tyler Benson 603155f56f
Merge pull request #1169 from DataDog/tyler/remove-filter
Optimize HasSuperMethodMatcher logic
2020-01-13 12:11:27 -08:00
Tyler Benson a0f0d45c74 Adjust version compatibility to only 2.x
They recently released 3.0.0 which is not compatible with our instrumentation.
2020-01-13 12:10:57 -08:00
Nikolay Martynov dcc5726797 Fix jmxfetch log level and log location config
Looks like this got lost in b505c60543
2020-01-13 15:05:45 -05:00
Nikolay Martynov d55d13e239 Exclude some dependencies from jmxfetch 2020-01-13 14:45:19 -05:00
Nikolay Martynov 8b5d89501b Upgrade jmxfetch to latest version 2020-01-13 14:19:03 -05:00
Tyler Benson 25397fd128 Fix formatting and add test. 2020-01-13 11:18:45 -08:00
Bruce Yu 13b84416b9 Blacklisting headers with -bin suffixes in GrpcExtractAdapter 2020-01-13 11:18:45 -08:00
Tyler Benson 49425e9963 Move request-response linking to main servlet advice
servlet-service is off by default, so we can't rely on it being called there.
2020-01-13 10:48:35 -08:00
Tyler Benson e440eba9a1 Enable Servlet request and response dispatcher instrumentation by default.
Change config for Servlet Filter and Service and JDBC DataSource instrumentation so it must be explicitly enabled (won't be enabled by accident if all of servlet is enabled).
2020-01-10 13:51:21 -08:00
Tyler Benson 43fbf28035 Revert "Remove experimental jdbc and servlet integrations until further evaluation"
This reverts commit 2432a92230.
2020-01-10 12:53:24 -08:00
Tyler Benson 7cb24f35c0 Better error handling for getClientInfo in JDBCDecorator
An exception there caused a span to be created but then never finished.
2020-01-08 15:10:54 -08:00
Tyler Benson 5e8af8439a Optimize HasSuperMethodMatcher logic
Instead of filtering then iterating, just iterate through everything and apply filter inline.

This will help avoid allocation for filter iterator and improve if early match is found.
2020-01-07 17:10:01 -08:00
Tyler Benson 03dd908fdb
Merge pull request #1158 from DataDog/tyler/aws-1-tagging
Add various tags for AWS SDK v1.x
2020-01-03 08:38:56 -08:00
Tyler Benson 4947dc3bd3 Add various tags for AWS SDK v1.x
This brings it inline with the v2 instrumentation.
2020-01-02 13:23:30 -08:00
Tyler Benson dacafe4217
Merge pull request #1157 from DataDog/pawel/rmi-add-client-and-server-info-to-decorators
[rmi] add instrumentation names to client and server decorators, remove default client service name
2020-01-02 11:41:40 -08:00
Laplie Anderson 6b6554996a
Merge pull request #1155 from DataDog/landerson/muzzle-scan-classloader-matcher
Add classloader matcher to muzzle scan
2019-12-30 10:12:59 -05:00
Pawel Chojnacki bbaf7278a6 [rmi] remove rmi client service name 2019-12-24 11:59:29 +01:00
Pawel Chojnacki a4b0dcbc9f [rmi] add instrumentation names to client and server decorators 2019-12-23 19:05:34 +01:00
Pawel Chojnacki 65c701dd51
Merge pull request #1128 from DataDog/pawel/add_rmi_support
Add RMI support
2019-12-23 14:38:46 +01:00
Pawel Chojnacki f71ba14016 [rmi] use simple thread local for propagating context
+ add more documentation
2019-12-23 13:25:14 +01:00
Tyler Benson 9020b74128
Merge pull request #1147 from DataDog/tyler/kafka-async
Add async propagation flags for kafka consumer.
2019-12-20 14:55:36 -08:00
Laplie Anderson f181fa721f Add classloader matcher to muzzle scan 2019-12-20 16:17:08 -05:00
Laplie Anderson 97b947919f Add a comment 2019-12-20 15:27:32 -05:00
Laplie Anderson 7338bbdd06 Register on JAX-RS client instead of builder 2019-12-20 13:15:04 -05:00
Pawel Chojnacki 3f21f6419d [rmi] Split context propagation to server and client instrumentation
+ Separate extra code from advices
 + cleanup helper definitions
2019-12-20 16:16:53 +01:00
Pawel Chojnacki c3308042d3 [rmi] use ObjectEndpoint#toString() to avoid need for reflection to be able to compare object identifiers. 2019-12-20 12:10:35 +01:00
Tyler Benson 32db01200c
Merge pull request #1131 from fujigon/feature/debugging
apply comma split logic to servlet request extract adapter
2019-12-19 09:06:12 -08:00
Pawel Chojnacki bb05700806 [rmi] Improve connection overhead and add additional metadata
- Cache response per connection to ensure as little communication overhead as possible is needed
 - change context payload serialization to use plain hashmap
   + add more logging
 - only set parent context on root entry point
   + use decorator to create spans
 - Use Instrumentation context to avoid reflection
 - separate integration parts into packages
2019-12-19 17:21:16 +01:00
Pawel Chojnacki 832605a01a [rmi] Add distributed context propagation
The flow for context propagation is as follows.

 * <p>We inject into StreamRemoteCall constructor used for invoking remote tasks and performs a
 * backwards compatible check to ensure if the other side is prepared to receive context propagation
 * messages then if successful sends a context propagation message
 *
 * <p>Context propagation consist of a Serialized HashMap with all data set by usual context
 * injection, which includes things like sampling priority, trace and parent id
 *
 * <p>As well as optional baggage items
 *
 * <p>On the other side of the communication a special Dispatcher is created when a message with
 * DD_CONTEXT_CALL_ID is received.
 *
 * <p>If the server is not instrumented first call will gracefully fail just like any other unknown
 * call. With small caveat that this first call needs to *not* have any parameters, since those will
 * not be read from connection and instead will be interpreted as another remote instruction, but
 * that instruction will essentially be garbage data and will cause the parsing loop to throw exception
 * and shutdown the connection which we do not want
2019-12-19 17:21:07 +01:00
Pawel Chojnacki 0ee80a0b95 [rmi] Instrumentation for RMI 1.2 and later
includes instrumentation of client and server endpoints
currently missing passing of execution context from client to server
2019-12-19 17:20:50 +01:00
Tyler Benson fb8f7af342
Merge pull request #1149 from DataDog/tyler/jdk-muzzle
Add option for muzzle validation on the specific JDK version
2019-12-19 08:14:54 -08:00
kfujita b707a3aab9 move multi-value aware logic to Extractor. 2019-12-19 13:33:08 +09:00
kfujita 0f3125498c add test case 2019-12-19 13:33:03 +09:00
kfujita a5e693bb92 assert fix same as JettyServlet3Test 2019-12-19 13:32:09 +09:00
Laplie Anderson dc0cbeb95d apply comma split logic to servlet request extract adapter 2019-12-19 13:32:09 +09:00
Tyler Benson 31b77cbd7b Capture error message even if no exception object provided.
This is currently only used by the GoogleHttpClient instrumentation, but may be used by customers too.
2019-12-18 13:49:24 -08:00
Tyler Benson ded28674d3 Add option for muzzle validation on the specific JDK version
This is still useful to validate various aspects of the integrations even if it doesn't need to check against maven.
2019-12-18 13:40:19 -08:00
Tyler Benson 7095ea3426 Add async propagation flags for kafka consumer. 2019-12-18 10:40:54 -08:00
Tyler Benson 96edbe8b8a Add better exception handling in Agent initialization
An invalid statsd hostname causes an exception for jmxfetch.  This should be an error, but not prevent the app from starting.

Also improved log variable name consistency.
2019-12-17 14:15:42 -08:00
Tyler Benson 99992df998 Fix tagging query string for additional servers
Add test to common test suite and adapt each test.
2019-12-17 09:33:27 -08:00
Tyler Benson a2b86e6b96 Pin kafka latestDepTest version to 2.3.x
2.4.0 introduces test failures:
```
Caused by: java.lang.NoClassDefFoundError: org.I0Itec.zkclient.ZkClient
```
when executing `compileLatestDepTestGroovy`.
2019-12-16 08:51:30 -08:00
Tyler Benson 839de614a5
Merge pull request #1136 from DataDog/tyler/tag-query
Capture full servlet URL in decorator
2019-12-12 15:16:38 -08:00
Laplie Anderson 86c3e80121 End Play 2.6 muzzle at 2.8 because its breaking 2019-12-12 17:47:21 -05:00
Tyler Benson b00cdee54a Capture full servlet URL in decorator
This is needed in order to tag the query string (when configured).

Full test suite will follow in future PR.
2019-12-12 13:47:40 -08:00
Brian Devins-Suresh cf3f04f509
Merge pull request #1129 from DataDog/brian.devinssuresh/jedis-3.0
Add support for jedis 3.0+
2019-12-11 11:22:16 -05:00
Laplie Anderson 8cae56219b Adding some implementation comments 2019-12-10 18:28:21 -05:00
Laplie Anderson f836f8976a Combine onControllerStart and onAbort 2019-12-10 18:07:26 -05:00
Laplie Anderson 73062199b0 Move constants to decorator 2019-12-10 14:00:31 -05:00
Laplie Anderson 5d2d19af75 Rename class since they instrument the context 2019-12-10 14:00:31 -05:00
Laplie Anderson 54ba905224 Add a Resteasy 3.1 test set 2019-12-10 14:00:31 -05:00
Laplie Anderson 498d2bd461 Add ContextRequestFilter instrumentation to JAX-RS 2019-12-10 14:00:31 -05:00
Tyler Benson 307e56714e
Merge pull request #1133 from DataDog/tyler/move-dropwizard-tests
Move dropwizard tests to dropwizard project
2019-12-10 10:51:42 -08:00
Tyler Benson 55fe3ba228 Move dropwizard tests to dropwizard project
This separate directory helps to avoid conflicts with JerseyTest.
ResourceTestRule usage in JerseyTest was causing some odd interactions which resulted in traces not being reported.
2019-12-10 10:08:04 -08:00
Laplie Anderson 7717dbf5d8
Merge pull request #1115 from trask/fix-sporadic-test-failure
Fix sporadic test failure in Elasticsearch53SpringRepositoryTest
2019-12-10 12:58:25 -05:00
Laplie Anderson fa14af40c3 Fix muzzle issue with async instrumentation 2019-12-06 18:18:34 -05:00
Brian Devins-Suresh c7329e4b6b Work around muzzle feature missing 2019-12-06 14:12:46 -05:00
Laplie Anderson d2db6b6fd9
Merge pull request #1098 from DataDog/tyler/jax-rs-annotation-inheritance
Support JAX-RS Annotation Inheritance
2019-12-06 13:49:46 -05:00
Brian Devins-Suresh c72f2d3b45 Fix muzzle test for 3.0 2019-12-06 13:45:05 -05:00
Brian Devins-Suresh 73eb217721 Make matchers more strict 2019-12-05 17:02:39 -05:00
Brian Devins-Suresh 2e5aff391d Use random ports for embedded redis 2019-12-05 16:23:22 -05:00
Brian Devins-Suresh 00fb29f528 Some clean up 2019-12-05 15:59:12 -05:00
Brian Devins-Suresh 7b92c40cbc Add support for jedis 3.0+ 2019-12-05 15:09:58 -05:00
Laplie Anderson 42ac5fc024 Remove synchronization and static helper map 2019-12-04 15:43:28 -05:00
Tyler Benson 57c3ec196f
Merge pull request #1104 from trask/normalize-tag-verification
Normalize tag verification
2019-12-02 10:58:03 -08:00
Trask Stalnaker ae0eb52cd7 Fix sporadic test failure 2019-11-27 10:31:59 -08:00
Trask Stalnaker 847a76cb04 Add missing tag verification 2019-11-22 10:59:47 -08:00
Trask Stalnaker 1987e86ebf Normalize tag verification order 2019-11-22 10:59:45 -08:00
Douglas Q Hawkins 2d87882724
Merge pull request #1112 from DataDog/dougqh/jmxfetch-config-resource-leak
Closing metricconfigs.txt
2019-11-22 13:51:50 -05:00
dougqh 75727840df Closing metricsconfigs.txt 2019-11-22 13:08:56 -05:00
Tyler Benson 10b0f35235
Merge pull request #1090 from DataDog/tyler/servlet-path
Add servlet.path tag
2019-11-22 09:18:14 -08:00
dougqh be9743b86b Eliminate class expression to Advice class
Changing Jasper instrumentation to not load the advice class.
This class was missed originally because it doesn't end in Advice.
2019-11-22 09:51:05 -05:00
Laplie Anderson f0bbd46097 Typo in merge conflict resolution 2019-11-21 13:07:02 -05:00
Laplie Anderson f1362a7d57
Merge branch 'master' into tyler/jax-rs-annotation-inheritance 2019-11-21 12:51:01 -05:00
Laplie Anderson 45c16a1c55 Create Play WS 2.1 Project 2019-11-20 18:13:41 -05:00
Zachary Groves c4cebc30c8
Merge pull request #1097 from DataDog/ZStriker19/remove_duplicate_okhttp_span_and_okhttp_separate_service
Remove duplicate Okhttp span and stop separate service creation of ok…
2019-11-20 17:01:18 -06:00
Laplie Anderson aa46e81e19 Copy instrumentation to jax-rs2 2019-11-20 15:38:17 -05:00
Laplie Anderson 75d66dee21 clean and fix tests 2019-11-20 13:14:35 -05:00
Laplie Anderson 7640e68337 The same classwalking is necessary for @Path 2019-11-20 13:07:04 -05:00
Laplie Anderson fd4e2d09e1 Fix method iterable logic. methodPath, httpMethod working 2019-11-20 10:18:00 -05:00
Laplie Anderson 99acb52589
Merge pull request #1103 from DataDog/landerson/load-generator
Simple load generator tool
2019-11-19 10:19:14 -05: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
dougqh 022257ee55 Fixing resource leak
To check for existence, switching from getResourceAsStream to getResource
2019-11-18 10:52:23 -05:00
ZStriker19 caaff02c87 Needed to run Java google format. 2019-11-15 15:30:39 -05:00
Tyler Benson 393a88585a First pass at supporting annotations inheritance for JAX-RS
[skip ci]
2019-11-15 11:53:16 -08:00
ZStriker19 c0ba1d3446 Changed test file permissions to match master. 2019-11-15 13:42:28 -05:00
ZStriker19 348cbc74c2 Changed okhttp file permissions back to original settings. 2019-11-15 13:29:51 -05:00
Tyler Benson a77045b9dc Add more complexity to jersey resource test
This demonstrates a matching failure in our current instrumentation.
2019-11-14 16:01:16 -08:00
ZStriker19 8fb32b5730 Remove duplicate Okhttp span and stop separate service creation of okhttp. Instead okhttp will now appear as part of the service that is using okhttp to make the call. 2019-11-14 17:29:28 -05:00
Laplie Anderson 509e655518 Move play-ws-1 and play-ws-2 into separate packages 2019-11-13 16:41:12 -05:00
Laplie Anderson 03b3fa6651
Merge pull request #1092 from DataDog/landerson/debug-instrumentation-names
Print all instrumentation names when muzzled
2019-11-13 16:36:40 -05:00
Laplie Anderson 251ceeb978 Print all instrumentation names when muzzled 2019-11-13 14:12:26 -05:00
Tyler Benson 53b4e5db19 fix test 2019-11-12 15:17:35 -08:00
Nikolay Martynov 2c4422aa04 Upgradle to gradle 6.0 2019-11-12 16:26:46 -05:00
Tyler Benson bff8303e18 Remove duplicate onRequest call.
This info should already be populated by the servlet framework.
2019-11-11 15:58:31 -08:00
Tyler Benson fdf2241e5f Add servlet.path tag 2019-11-11 15:54:21 -08:00
Laplie Anderson 88902046ce simple load generator tool 2019-11-07 16:50:23 -05:00
Nikolay Martynov 2789324cd5
Merge pull request #1084 from DataDog/mar-kolya/fix-agent-for-zulu8
fix agent for zulu8
2019-11-07 14:39:03 -05:00
Nikolay Martynov 8f80a42c4d Do not delay tracer on OpenJDK8 with JBOSS 2019-11-07 13:45:56 -05:00
Nikolay Martynov f371e391a8 Fix typo 2019-11-07 06:55:31 -05:00
Tyler Benson b002f0c190
Merge pull request #1085 from DataDog/tyler/remove-beta-integrations
Remove experimental jdbc and servlet integrations until further evaluation
2019-11-06 14:31:08 -08:00
Nikolay Martynov df6cb663d4 Fix test for case when tracer install is not delayed 2019-11-06 15:35:01 -05:00
Nikolay Martynov fdfe4b1dc3 More renames due to shadow clashes 2019-11-06 15:12:07 -05:00
Tyler Benson 2432a92230 Remove experimental jdbc and servlet integrations until further evaluation 2019-11-06 11:45:00 -08:00
Douglas Q Hawkins 599d1e0fab
Merge pull request #1082 from DataDog/dougqh/sisu-exclusion
Excluded classes generated by Eclipse Sisu
2019-11-06 14:41:36 -05:00
Nikolay Martynov 42cece67c2 Fix namespace clashes
Using `datadog.trace.agent` to hold agent class causes problems due to
shadowing into this package of other classes.
2019-11-06 13:58:20 -05:00
Nikolay Martynov 17155f7d57 Fix scala warning 2019-11-06 13:58:20 -05:00
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 3715a3df53 Fix ClassLoadingTest
It should use real class to try to load
2019-11-06 09:57:09 -05:00
Nikolay Martynov 58d6103361 Allow big outputs in forked test processes 2019-11-06 09:38:53 -05:00
dougqh 270a440162 Excluded classes generated by Eclipse Sisu
This change excludes classes generated by Eclipse Sisu (part of Equinox DS).

These classes are created by https://github.com/eclipse/sisu.inject/blob/master/org.eclipse.sisu.inject/src/org/eclipse/sisu/space/CloningClassSpace.java
2019-11-05 15:20:52 -05:00
Nikolay Martynov 415a875dfc Add generic is-before-java9 check 2019-11-05 13:08:21 -05:00
Nikolay Martynov b31778a05e Do not use `printStackTrace()` 2019-11-05 13:08:21 -05:00
Nikolay Martynov f236c0e8e0 Reformat some comments 2019-11-05 13:08:21 -05:00
Nikolay Martynov acfa861e4a Fix some typos 2019-11-05 13:08:21 -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 2d3b644c84
Merge pull request #1080 from DataDog/tyler/rename-beta-configs
Rename config key for beta/experimental instrumentation.
2019-11-05 08:44:33 -08:00
Tyler Benson 4f853f5f0c Rename config key for beta/experimental instrumentation.
Postfix the existing config names with `-beta` for `servlet` and `jdbc`.

To avoid any risk that the config was explicitly enabled for an unrelated reason resulting in unexpected behavior when upgrading to the latest version.
2019-11-04 13:41:33 -08:00
Laplie Anderson 4ba0ca0f9d
Merge pull request #1078 from DataDog/landerson/big-integer-ids
Change TraceId/SpanId to BigInteger
2019-11-04 16:34:09 -05:00
Laplie Anderson bc2978e8d8 Use groovy literals for BigInteger 2019-11-04 16:16:03 -05:00
Laplie Anderson a3cd46708b
Merge pull request #1075 from DataDog/landerson/wsclient
Play WS Client instrumentation
2019-11-04 13:57:46 -05:00
Laplie Anderson bf4587c23d Missed a few test helper methods 2019-11-04 12:49:35 -05:00
Laplie Anderson cfc19facf5 Change String ids to BigInteger ids 2019-11-04 11:21:32 -05:00
Nikolay Martynov 92f62ca954 Fix scala warning 2019-11-04 08:22:20 -05:00
Laplie Anderson 9e26da85be wsclient -> play-ws 2019-11-01 14:37:06 -04:00
Laplie Anderson 68f8607dbf Fix latestDepTest dependencies 2019-10-31 11:48:52 -04:00
Laplie Anderson 3a1d331525 WSClient instrumentation 2019-10-31 11:12:00 -04:00
Laplie Anderson 64d6d39e78
Merge pull request #1074 from DataDog/landerson/circular-redirect
Add "testCircularRedirects" option to HttpClientTest
2019-10-31 10:29:36 -04:00
Laplie Anderson 8a2594eeab Add "testCircularRedirects" option to HttpClientTest 2019-10-30 18:17:49 -04:00
Tyler Benson 8e48a70c6d Fix jax-rs Path annotation inheritance
Turns out the class level path annotation overrides parent classes, so we only need to find the nearest one.

We also need to look from the instance’s class, not from where the method is defined.

Commented out a test case because we still need to compile against java 7.  That case will be added back when we upgrade to java 8.
2019-10-30 11:39:06 -07:00
kfujita b0e7e6a3f9 - fix test compile setting
- code format with google formatter
2019-10-30 08:57:13 -07:00
kfujita d8bd12bef8 This patch fixes NPE in jaxrs instrument which occurs when we use interfaces with default method and its impl class.
- reproduce NPE error with JaxRs class and interfaces in JavaInterfaces
- fix the logic target class of method with @Path annotation to avoid NPE
- setting java 1.8 for jaxrs's test
2019-10-30 08:57:13 -07:00
Tyler Benson 607dd553d4 Attempt to remove span-ordering race condition with NettyClientTest 2019-10-28 09:50:56 -07:00
Tyler Benson e4bc90d15d
Merge pull request #1067 from DataDog/tyler/db-connection
Add span when calling DataSource.getConnection with a trace.
2019-10-28 08:41:55 -07:00
Tyler Benson a903f20dc4
Merge pull request #1050 from DataDog/tyler/servlet-depth
Add new integration for Servlet Filters, HttpServlet, and RequestDispatcher
2019-10-28 08:39:56 -07:00
Tyler Benson 6703bd96bb Fix servlet propagation for “tail-call” situations
Sometimes servlets will call another servlet by “resetting” the request object.  This maintains the attributes previously set, including the span.  We want to allow the trace to start if there’s no “active trace” even if there is a span attribute.
2019-10-25 17:01:47 -07:00
Tyler Benson a3a1467192 Add span when calling DataSource.getConnection with a trace.
Disabled by default, and only creates a span if existing trace detected.

To enable:
* System Property: `-Ddd.integration.jdbc.enabled=true`
* Environment Variable: `DD_INTEGRATION_JDBC_ENABLED=true`
(Or more specifically with `jdbc-datasource`.)
2019-10-25 16:02:39 -07: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 df387b486a
Merge pull request #1064 from DataDog/tyler/spring-controller-refactor
Refactor JAX-RS Annotation and Spring Controller/Handler Instrumentation
2019-10-25 14:44:07 -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
Tyler Benson 7ae5de1fc6 Refactor Servlet Advice
Moving directory structure around.
Combining advice, trying to make it propagate better.
2019-10-25 10:09:19 -07:00
Trask Stalnaker 8c558fa00e Format 2019-10-24 21:05:01 -07:00
Trask Stalnaker e32bf1816a Organize imports 2019-10-24 21:05:01 -07:00
Trask Stalnaker e06bb1db1f Remove OpenTracing gradle dependency 2019-10-24 21:05:01 -07:00
Trask Stalnaker 5bf5950bf7 Remove dependency on Tracer 2019-10-24 21:05:01 -07:00
Trask Stalnaker da80be693c Switch to new Tags class in testing module 2019-10-24 21:05:01 -07:00
Trask Stalnaker a45dc34c5c Remove testing module dependencies on GlobalTracer 2019-10-24 21:05:00 -07:00
Trask Stalnaker 86bd9793bd Switch to new Tags class in instrumetation 2019-10-24 21:05:00 -07:00
Trask Stalnaker 9182b64078 Switch to new Tags class in tests 2019-10-24 21:04:57 -07:00
Trask Stalnaker 002db5a170 Introduce Tags class
To remove dependency on OpenTracing Tags class.
2019-10-24 21:04:10 -07:00
Trask Stalnaker 99ddc497e7 Remove baggage item test
The new agent api does not have baggage item support.
2019-10-24 21:01:59 -07:00
Trask Stalnaker a9d3360701 Remove test dependency on GlobalTracer 2019-10-24 20:53:14 -07:00
Trask Stalnaker d45b571996 Remove unused code 2019-10-24 20:53:13 -07:00
Tyler Benson a8ca47ed03 Skip spring controller and dropwizard trace if no trace present
Also prefer early return instead of deep nesting for null check.
2019-10-24 14:40:08 -07:00
Tyler Benson 079dfd24bd ES deploy workaround. 2019-10-23 14:09:01 -07:00
Tyler Benson fbd16d8cb7 Add assert to ensure muzzle range not empty and update spring-data
Also fix a few muzzle definitions that are now broken with the new requirement.

Moved a few projects around to match correct version numbers.
2019-10-23 14:09:01 -07:00
Tyler Benson 7db4602253 Fix jax-rs-client minimum supported version
Can’t be completely sure since many of these versions don’t show up in a maven range query used by muzzle.
2019-10-23 14:02:04 -07:00
Tyler Benson 29f7288954 Merge pull request #1020 from trask/agent-api
Integration API to decouple from OpenTracing
2019-10-23 14:01:18 -07:00
Trask Stalnaker 30367c79cf Split up MessagePropertyTextMap 2019-10-21 18:46:58 -07:00
Trask Stalnaker 0107551c0e Remove outdated comment 2019-10-21 18:36:14 -07:00
Trask Stalnaker 8bb0f2c2f0 Use header objects directly where possible 2019-10-21 18:21:01 -07:00
Trask Stalnaker cc31c5a505 Remove unused code 2019-10-21 16:59:43 -07:00
Trask Stalnaker f6d2c1c1ef Fix two beforeFinish() calls 2019-10-21 16:59:36 -07:00
Trask Stalnaker b0c5b2cd78 Remove deprecated methods 2019-10-19 16:52:43 -07:00
Trask Stalnaker 299c396eab Update testing module to new agent api 2019-10-19 16:52:43 -07:00
Trask Stalnaker 41185662df Update twilio to new agent api 2019-10-19 16:52:43 -07:00
Trask Stalnaker 377df7b789 Update trace-annotation to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 05e6544ded Update spymemcached-2.12 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker f0c29adb61 Update spring-webflux to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 51fe9f48b9 Update spring-web to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 7775c1e132 Update spring-data-1.9 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 9b14f7198f Update sparkjava-2.3 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker a5c54c54f7 Update servlet-3 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 4a2517a7d3 Update servlet-2 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 7cb209bfa1 Update rxjava-1 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 4e4a9c9bb7 Update reactor-core-3.1 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 9775ae5b2f Update ratpack-1.4 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 462a6632f7 Update rabbitmq-amqp-2.7 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 7460c32248 Update play-2.6 to new agent api 2019-10-19 16:52:42 -07:00
Trask Stalnaker 4691396d11 Update play-2.4 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 9d51a80eae Update okhttp-3 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 6a7bafe389 Update netty-4.1 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker bb500f9c54 Update netty-4.0 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker b576c394af Update mongo to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 95f91f89ba Update lettuce-5 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 5f0a2ae6b4 Update kafka-streams-0.11 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 7259e288ff Update kafka-clients-0.11 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker b53652303c Update jsp-2.3 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 6b23ffbae8 Update jms to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker b3a86085cb Update jetty-8 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 1e81929aa8 Update jedis-1.4 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 308409f856 Update jdbc to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker 769873bb71 Update jax-rs-client-2.0 to new agent api 2019-10-19 16:52:41 -07:00
Trask Stalnaker b1f48185fa Update jax-rs-client-1.9 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 5ce96d905b Update jax-rs-annotations-2 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 244dc6996e Update jax-rs-annotations-1 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 7c954ecc0c Update java-concurrent to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker e7bfbf80bb Update hystrix-1.4 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 45e8b7fdc5 Update http-url-connection to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker d3c83419f9 Update hibernate to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 50dcc5bd4e Update grpc-1.5 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 74fda2e198 Update grizzly-2 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 120937d175 Update google-http-client to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 9775a94132 Update elasticsearch to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 4ca63b7440 Update dropwizard to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 44f06ed3b5 Update datastax-cassandra-3 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker 2c7609f7d7 Update couchbase-2.6 to new agent api 2019-10-19 16:52:40 -07:00
Trask Stalnaker d40c5dcbf2 Update couchbase-2.0 to new agent api 2019-10-19 16:52:39 -07:00
Trask Stalnaker ad0185d1c5 Update aws-java-sdk-2.2 to new agent api 2019-10-19 16:52:39 -07:00
Trask Stalnaker 09cdc177cf Update aws-java-sdk-1.11.0 to new agent api 2019-10-19 16:52:39 -07:00
Trask Stalnaker 887633f086 Update apache-httpclient-4 to new agent api 2019-10-19 16:52:37 -07:00
Trask Stalnaker 9ffde5d261 Update apache-httpasyncclient-4 to new agent api 2019-10-19 16:40:52 -07:00
Trask Stalnaker 3b8a514364 Update akka-http-10.0 to new agent api 2019-10-19 16:40:52 -07:00
Trask Stalnaker f67e3b98db Migrate base decorators to new agent api 2019-10-19 16:40:52 -07:00
Tyler Benson f734fc6661 Reduce tracer log line length - make name nicer
While “tracing.agent” matches the class name, this applies to the whole tracer where most things are labeled just “trace” (ie, config).
2019-10-18 17:01:26 -07:00
Laplie Anderson d635e6d8a9
Merge pull request #1047 from DataDog/landerson/apache-httpclient-missing-methods
Add instrumentation for all of Apache HttpClient methods
2019-10-18 18:53:02 -04:00
Laplie Anderson 3ae2bc73d8 Add instrumentation for all of ApacheHttpClient methods 2019-10-18 12:55:23 -04:00
Tyler Benson 126dc67181 Update AgentApi to OT 0.32.0 2019-10-17 14:11:07 -07:00
Tyler Benson 557d45a9fe Changes required for OT 0.32
This seems backwards compatable with 0.31 since all changes are additional, so this should be safe.
2019-10-17 13:54:56 -07:00
Laplie Anderson 6b2a4d996b Add (failing) tests for methods that were not instrumented 2019-10-17 16:09:37 -04: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 f2c5ae2675 Latest version requires at least 1 bean 2019-10-17 14:48:51 -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 7b6737f106 Make AgentTracer constructor private. 2019-10-15 16:12:48 -07: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
cecile.terpin@gmail.com 526a9e2dfe log level configuration tests - fct names codenarc 2019-10-10 09:41:59 +02:00
cecile.terpin@gmail.com b6ad0382ba log level configuration tests (2) 2019-10-09 18:07:18 +02:00
cecile.terpin@gmail.com a08253d7ef log level configuration tests 2019-10-09 17:56:29 +02:00
cecile.terpin@gmail.com 048864c090 new configuation key for setting debug log level 2019-10-09 17:56:29 +02:00
Tyler Benson a6200f96c3 Upgrade Jackson to 2.10.0
This is primarily motivated by new CVE’s.

Upgrade jmxfetch to 0.32.1 which has the same change.
2019-10-09 12:04:45 +02:00
Douglas Q Hawkins 7dbad68fe4
Merge pull request #1014 from DataDog/dougqh/spring-data-support
Dougqh/spring data support
2019-10-08 17:45:51 +02:00
dougqh 63ef181032 Simplifying latestDepTest dependencies 2019-10-08 16:34:59 +02:00
Laplie Anderson a20e6249a0
Merge pull request #1031 from DataDog/landerson/trace-annotation-async
Enable Async Propagation for @Trace Annotatation instrumentation
2019-10-08 15:58:50 +02:00
dougqh 3e6419d4f0 Fixing latestDepTest 2019-10-08 15:12:43 +02:00
dougqh e696aa7da8 Test - no span for Object methods
Added a test case that confirms that no span is creating for Object methods on the repository
2019-10-08 14:29:07 +02:00
dougqh 01b92208d0 Clarifying comment 2019-10-08 13:47:11 +02:00
Laplie Anderson d5021e0cbc Add test case with netty 2019-10-08 13:43:26 +02:00
Tyler Benson 24632212e5
Merge pull request #1030 from DataDog/tyler/base-test
Extract base test class and move Config class changes there.
2019-10-08 10:44:55 +02:00
dougqh 5edff68c21 Propagating exception 2019-10-08 09:58:58 +02:00
dougqh b01bef7a23 Merge branch 'master' into dougqh/spring-data-support 2019-10-08 09:38:55 +02:00
Tyler Benson 9ef3332140 Extract base test class and move Config class changes there. 2019-10-07 18:51:25 +02:00
Laplie Anderson 584f181abb Fix OSGi bootstrap delegation property 2019-10-07 18:40:05 +02:00
Laplie Anderson 5719a783ad Make trace annotation instrumentation async propagating 2019-10-07 18:29:26 +02:00
Nikolay Martynov 654e09ee7f
Merge pull request #1028 from DataDog/mar-kolya/update-bytebuddy
Update bytebuddy
2019-10-07 12:15:26 -04:00
Nikolay Martynov 0b32d65b29 Rename license file
New bytebuddy uses LICENSE file that causes build problems on case sensitive FS
2019-10-07 11:48:59 -04:00
Tyler Benson 1b40500ca2
Merge pull request #1017 from DataDog/tyler/jax-rs-async
Add support for jax-rs AsyncResponse
2019-10-07 10:50:34 -04:00
Nikolay Martynov 1e5f0ac935 Minor comment clarification 2019-10-07 08:55:27 -04:00
Nikolay Martynov 8e75eeb506 Update bytebuddy to 1.10.1 2019-10-07 08:27:13 -04:00
Tyler Benson 828e21123c Remove debug println
Co-Authored-By: Laplie Anderson <randomanderson@users.noreply.github.com>
2019-10-07 14:19:46 +02:00
Tyler Benson 82180c2ea6 Add support for jax-rs AsyncResponse 2019-10-07 14:19:46 +02:00
Laplie Anderson 0d6fe9d267
Merge pull request #1022 from DataDog/landerson/spring-analytics
Change default for Spring and Ratpack analytics to be off
2019-10-07 05:07:31 -04:00
Laplie Anderson b971a1ae25
Merge pull request #1021 from DataDog/landerson/couchbase-test-setup-spans
Another couchbase test race condition
2019-10-07 05:01:22 -04:00
Laplie Anderson 95ec44942f Remove unused variables 2019-10-04 16:40:15 -04:00
Laplie Anderson 6f4ff22af2 Update tests to play nice with latest version 2019-10-04 15:48:33 -04:00
Laplie Anderson 831fa5c0fd Disable ratpack events by default 2019-10-04 11:41:41 -04:00
Laplie Anderson ecc2ee7955 Change default for spring analytics to be off 2019-10-04 11:41:41 -04:00
Laplie Anderson 6203091640 Wrap class setup spans in a trace for another race condition 2019-10-04 11:40:53 -04:00
dougqh f785fb2314 Pin spring-kafka at 2.2
Pinning spring-kafka @ 2.2 to fix breaking changin in spring-kafka-test 2.3
2019-10-03 16:53:39 -04:00
dougqh 001d1d8282 codenarc 2019-10-02 14:39:20 -04:00