Commit Graph

1263 Commits

Author SHA1 Message Date
dougqh a242e088de codeNarc - removed unused import of @Shared 2019-09-23 15:54:44 -04:00
dougqh 8a89547004 googleJavaFormat 2019-09-23 15:29:15 -04:00
dougqh 6b5acc8386 New Approach - instrument RepositoryFactorySupport
This revised version targets spring-data RepositoryFactorySupport rather than spring-tx

This is accomplished by injecting a RepositoryProxyPostProcessor during construction that adds a datadog specific MethodIntercptor.

In the end, this functions similarly to the tx support in that it uses a widely scoped MethodInterceptor.

This required some changes to the test as well.  The old test set-up the repository before the instrumentation was fully-enabled.  Enabling the instrumentation earlier capture extra traces where Spring JPA performs metainfo queries.
2019-09-23 15:26:18 -04:00
Laplie Anderson 31a7ce9b5b Explicitly cleanup the spans for each test 2019-09-20 18:32:48 -04:00
Tyler Benson 8289ccd085 Skip CompletableFuture case in Java 7 2019-09-20 12:11:30 -07:00
Tyler Benson 363dd38d81 Add CompletableFuture$ThreadPerTaskExecutor to allow list
This allows trace propagation for CompletableFuture’s asyncPool even if `useCommonPool` is disabled.

Also added some additional futures to `WHITELISTED_FUTURES` and sorted list.
2019-09-20 11:08:10 -07:00
Laplie Anderson e6c061f841
Merge pull request #996 from DataDog/landerson/couchbase-op-id
Add operation id and network tags to Couchbase
2019-09-19 15:56:59 -04:00
Laplie Anderson 18e4b5e9fd Remove unnecessary muzzle 2019-09-19 15:38:53 -04:00
Tyler Benson 40a7ef6086
Merge pull request #1005 from DataDog/tyler/additional-executors
Fix async dispatch for Jetty QueuedThreadPool
2019-09-19 12:15:37 -07:00
Nikolay Martynov 53b02fb333
Merge pull request #1002 from DataDog/mar-kolya/enable-tests-for-java13
Enable tests for java13
2019-09-19 12:28:00 -04:00
Nikolay Martynov 43603e970c Disable Log4j1 tests for java versions without '.'
Log4j1 seems to be broken on those.
2019-09-19 08:27:56 -04:00
Tyler Benson de44a0651c Fix async dispatch for Jetty QueuedThreadPool
Includes additional cleanup to supported executors list (removed anonymous classes).
2019-09-18 20:08:06 -07:00
Laplie Anderson 43cbf7a16a Split traces and add timeout to blockUntilChildSpanFinished 2019-09-18 17:14:52 -04:00
Laplie Anderson 85ffafcd06 Updates based on pull request comments 2019-09-18 10:29:24 -04:00
Tyler Benson 2086664f6d Reduce overhead of URLAsResourceName decorator
Using `new URL()` just to parse the path out was rather expensive.  This should improve the situation.
2019-09-17 18:50:01 -07:00
Tyler Benson 80185f76f4 Enable async propagation in JAX annotation span 2019-09-17 11:35:10 -07:00
Laplie Anderson 0774933414 All couchbase tests have to be runUnderTrace for sorting 2019-09-17 13:53:03 -04:00
Nikolay Martynov cfd96850e0
Merge pull request #998 from DataDog/mar-kolya/avoid-unnecessary-objects-in-apache-client-instrumentation
Avoid unnecessary objects creation in Apache Http Client instrumnentation
2019-09-17 12:16:10 -04:00
Nikolay Martynov e9fc866e67 Add optimization to apache async client instrumentation 2019-09-17 11:47:57 -04:00
Tyler Benson f14bfe7803
Merge pull request #990 from DataDog/tyler/spring-web
Migrate spring-web to base httpserver test
2019-09-17 08:24:37 -07:00
dougqh 7c5e74bdf0 Cleaning-up decorator
The SpringDataDecorator is really for Spring transactions including non-DB related transactions.

The SpringDataDecorator never really implemented DB or ORM support anyway, since most of the methods just returned null.

Changing the decorator to just extend ClientDecorator instead.  Also rename to reflect its true purpose.
2019-09-17 10:51:30 -04:00
Nikolay Martynov 0748c10b72 Avoid unnecessary objects creation in Apache Http Client instrumnentation 2019-09-17 10:19:38 -04:00
dougqh 172ff747cb Updating muzzle spec
Switching muzzle to target spring-tx rather than spring-data (which is logical given the instrumentation point)

Also added extraDependency on aopalliance
This restricts the support the Spring 2.5 when spring-tx & spring-aop using aopalliance were introduced.
2019-09-17 10:06:43 -04:00
dougqh e43baf82be Renaming advice class
Renaming advice class to more accurately reflect what is being instrumented
2019-09-17 09:27:39 -04:00
dougqh 85389b48d8 Google Format 2019-09-17 08:24:57 -04:00
dougqh 0c3e0579b2 Switching to instrumenting transaction support
After experimenting with RepositorySupport$QueryExecutorMethodInterceptor switched to TransactionInterceptor.

QueryExecutorMethodInterceptor was too narrowly scoped and didn't capture the UPDATE or DELETE statement.  TransactionInterceptor captures everything, but is still a bit more broadly applicable than I'd like.
2019-09-17 08:19:42 -04:00
Laplie Anderson 8376d83aef Caching affects network tags 2019-09-16 18:34:23 -04:00
Laplie Anderson 111c44d2da State can be GCd before exit advice is run 2019-09-16 17:58:29 -04:00
Laplie Anderson 62ea7a59fb Cant test cross compile because the 2.6 instrumentation gets activated 2019-09-16 17:37:34 -04:00
Laplie Anderson e244ea633d Add operation id and network tags to couchbase 2019-09-16 16:59:29 -04:00
dougqh 122533fde6 Switching to simple concat for efficiency 2019-09-16 11:08:37 -04:00
Laplie Anderson 6a40938fe4 Split remove test into two parts 2019-09-13 18:56:00 -04:00
Laplie Anderson d3ec72922e Increasing the timeout may fix the spurious failures 2019-09-13 18:35:21 -04:00
Laplie Anderson fee58e07f2 Original merge 2019-09-13 17:48:22 -04:00
Laplie Anderson d063b42491
Revert "Couchbase Async Subscriptions" 2019-09-13 11:51:52 -04:00
Laplie Anderson e8d6928a8c Dont share environment. Slower but more deterministic 2019-09-12 21:48:36 -04:00
Laplie Anderson 4e5e75ebff Fix tests 2019-09-12 20:51:50 -04:00
Tyler Benson 407c973029 Migrate spring-web to base httpserver test
Unfortunately 404 test was not consistent and non-trivial to adapt.  I also couldn’t get the validation tests to work well either.  Revisit if we have time to dig deeper into spring.
2019-09-12 17:28:12 -07:00
Laplie Anderson 6c445ad030 Extract RxJava instrumentation from Hystrix and add to Couchbase 2019-09-11 19:25:08 -04:00
Laplie Anderson a5b5b0c307 Failing tests WIP 2019-09-11 19:25:08 -04:00
Laplie Anderson df0838070a Extract span assertion from couchbase tests 2019-09-11 19:25:08 -04:00
dougqh d2ba6af80c Removing unneecessary dependencies
Removing dependencies rendered redundant by clean-up in datadog repo - as per review comment
2019-09-11 14:29:34 -04:00
dougqh ab52988ced Removing "Modified by SignalFx" 2019-09-11 11:33:14 -04:00
dougqh 60e9cc249c Removing "Modified by SignalFx"
Removing "Modified by SignalFx" comments, since our integration is current the same.

Added a comment to SpringJpaTest explaining the differences.
2019-09-11 11:23:49 -04:00
dougqh 7a366f0f01 Added explanatory comments to test
Added some explanatory comments for each span -- might turn these into assertions later

Primary aim was to understand the differences from the signalfx fork.  They seem to stem deviations in the underlying JDBC integration.
2019-09-11 09:55:40 -04:00
Laplie Anderson 07b58e1cf4
Merge pull request #957 from DataDog/landerson/instrumentation-module-check
Java 9 Modules Smoketest
2019-09-10 19:56:12 -04:00
dougqh 1335296975 Fixing mismatches in spans collected by signalfx fork & datadog
There are two main differences...
- "hsqldb" vs "spring-data" as the root test service name
- an extra seemingly spurious sql span in signalfx
2019-09-10 17:42:49 -04:00
dougqh 6d38831252 Merge branch 'master' into dougqh/spring-data
Tweak partially picked from signalfx -- that commit included same other unwanted changes in this file and others (see 636c23ed2c)
2019-09-10 17:40:36 -04:00
Ryan Fitzpatrick 5f7e0609ed Initial spring data instrumentation 2019-09-10 15:13:20 -04:00
Tyler Benson 0681739ceb
Merge pull request #980 from marcoferrer/grpc-interceptor-error-tag
Fix span error tagging in grpc server interceptor
2019-09-09 15:58:47 -07:00
Marco Ferrer bcfb2ac3e7 run formatter 2019-09-06 19:58:57 -04:00
Marco Ferrer 8ee5d8ddc0 assert status code tag in streaming tests 2019-09-06 19:17:36 -04:00
Marco Ferrer f587011238 add TracingServerCall to helper class names 2019-09-06 18:48:44 -04:00
Marco Ferrer 57e03cc9ea update tests for new tags 2019-09-06 18:42:40 -04:00
Marco Ferrer 61d85d997a add comments for tracing call forwarder 2019-09-06 18:42:11 -04:00
Marco Ferrer b0074495f9 update tests for server error tag 2019-09-06 16:35:19 -04:00
Marco Ferrer b547886a0d introduce tracing call forwarder 2019-09-06 14:58:58 -04:00
Marco Ferrer 6ac07abe2b fix span error tagging in grpc server interceptor 2019-09-06 12:25:31 -04:00
Tyler Benson cd6dcf393b Apply fixed default operation name for @Trace generated spans
This should help reduce issues with multiple top level spans.
2019-09-05 16:21:27 -07:00
Tyler Benson c410f5b78b Add additional tags for aws-sdk spans
s3 -> bucket name
dynamodb -> table name
sqs -> queue name/url
kinesis -> stream name
2019-09-04 12:41:45 -07:00
Laplie Anderson 3323bbc5b1 java.sql classes are not always present 2019-09-04 13:11:03 -04:00
Laplie Anderson 457410ea4e Run all tests on all java version 2019-09-03 13:03:16 -04:00
Tyler Benson a693c42dc1
Merge pull request #969 from DataDog/labbati/jax-rs-op-name
Static operation names for JaxRS instrumentation to be used as root span
2019-08-30 14:09:46 -04:00
Tyler Benson aec22640f3 Remove unused method and finish comment
Also adjust naming slightly.
2019-08-30 13:52:54 -04:00
Luca Abbati 0b0d75bcf2
Jax-rs user METHOD PATH as resource only when root span 2019-08-30 19:28:55 +02:00
Luca Abbati 0b71c6bbe5
Rename operation jax-rs.endpoint to jax-rs.request 2019-08-30 17:57:03 +02:00
Luca Abbati d877039fa7
Set span.type = web on jax-rs endpoints 2019-08-30 13:57:30 +02:00
Luca Abbati 359ac9c190
Fix indentation in JaxRS instrumentation test 2019-08-30 13:05:24 +02:00
Luca Abbati d9f09e6af5
Minor refacotrings to JaxRsAnnotationsInstrumentation.java 2019-08-30 12:23:41 +02:00
Luca Abbati 37dcfe5385
Use static operation names for JaxRS instrumentation 2019-08-30 12:18:41 +02: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
Tyler Benson 5f0e13f6c4
Merge pull request #956 from DataDog/tyler/play-testing
Update Play instrumentation to work with 2.7
2019-08-27 12:22:25 -04:00
Tyler Benson 263c442bdb Fix order of operations 2019-08-27 12:06:21 -04:00
Laplie Anderson 7a41ca7d6e Change whitelist fields from static to instance 2019-08-27 12:06:01 -04:00
Laplie Anderson 25c0d19f23 CodeNarc complains about the unused variable 2019-08-26 11:19:03 -04:00
Laplie Anderson 7b66a31d80 Ensure injected modules can read the helper class module 2019-08-23 19:14:10 -04:00
Laplie Anderson 9c5766162a Add test for ClassNotFound creating a span bug 2019-08-23 13:04:56 -04:00
Tyler Benson e74167adf2 Update Play instrumentation to work with 2.7
(Don’t be surprised when things break with 2.8… They’re religious about removing deprecated methods on minor release versions.  If they followed standard convention, they’d likely be on at least 11.x.)

Add client test for 2.4-2.5 http library.  2.6+ won’t work because the underlying frameworks we instrument are shaded.

Also add server tests.  We could do a lot more testing since it seems play still supports using Netty as the backing server even though it’s not the default.  It’s difficult to do extensive testing though because they have so many breaking changes between versions.
2019-08-22 12:43:13 -07:00
Tyler Benson e69edaec14 Remove project config centrally defined and other misc cleanup 2019-08-22 12:43:13 -07:00
Tyler Benson 28f4038122 Be more specific about thread assertion. 2019-08-20 09:43:27 -07:00
Tyler Benson 76c98598e2
Merge pull request #949 from DataDog/tyler/ratpack-testing
Improve Ratpack context propagation and migrate tests
2019-08-16 14:03:39 -07:00
Tyler Benson 452a619b4b Muzzle doesn’t seem to like those helper classes there
Had to move them externally for muzzle to be happy.
2019-08-16 10:10:09 -07:00
Tyler Benson 3958cebecf
Merge pull request #953 from DataDog/tyler/grpc-client-async
Enable async propagation for grpc client callbacks.
2019-08-16 09:38:55 -07:00
Tyler Benson fc30b4c5bb CR fixes. 2019-08-16 09:22:44 -07:00
Tyler Benson 8c490a42a2 Improve Ratpack context propagation and migrate tests 2019-08-16 09:17:50 -07:00
Tyler Benson 473aca7c08
Merge pull request #948 from DataDog/tyler/grizzly
Add instrumentation and tests for Grizzly 2.x Http Server
2019-08-16 09:06:58 -07:00
Tyler Benson 20277f5f4a Minor CR fixes. 2019-08-16 08:47:52 -07:00
Tyler Benson b69f9ea041 Enable async propagation for grpc client callbacks. 2019-08-15 17:12:32 -07:00
Nikolay Martynov 63cd73e79e Remove obsolete check
We are no longer using UrlConnection to send traces
2019-08-14 16:46:31 -04:00
Nikolay Martynov b0ff861392 Do not trace openConnection for Datadog ClassLoader 2019-08-14 16:46:23 -04:00
Tyler Benson f5b73260ed Add instrumentation and tests for Grizzly 2.x Http Server 2019-08-13 16:05:11 -07:00
Tyler Benson ab623ab7b4
Merge pull request #942 from DataDog/tyler/http-server-testing
Jetty 8 test migration and ignoreParent
2019-08-13 13:07:18 -07:00
Tyler Benson bbfd02befc Update Jackson to 2.9.9.3
As recommended by https://nvd.nist.gov/vuln/detail/CVE-2019-14379

(Remove unused dependency)
2019-08-12 16:41:57 -07:00
Tyler Benson 2d08464be3 Fixes 2019-08-07 10:48:14 -07:00
Tyler Benson 6dd729b843 Jetty 8: ignore parent and move to HttpServerTest
This method of using jetty doesn’t seem to work with Servlet’s Async.  Native Jetty uses Continuations which we don’t support and should investigate instrumenting.
2019-08-07 09:35:04 -07:00
Tyler Benson 49249c0c6e Move server field to HttpServerTest 2019-08-07 08:35:18 -07:00
Tyler Benson f3e9fa22ef Add HttpServerTest for redirects 2019-08-07 08:35:18 -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
Tyler Benson 1cfa847081
Merge pull request #941 from DataDog/tyler/common-deps
Remove common (redundant) dependencies
2019-08-06 15:29:14 -07:00
Tyler Benson 95a294a560 Remove common (redundant) dependencies 2019-08-06 14:51:04 -07:00
Tyler Benson efd0e5fb18 muzzle fix 2019-08-06 16:26:43 -04:00
Tyler Benson d77487017e muzzle fix 2019-08-06 08:58:36 -07:00
Tyler Benson 38cc03ae9e Misc fixes 2019-08-06 08:11:37 -07:00
Tyler Benson 668b1059f5 Migrate vertx tests to HttpServerTest 2019-08-05 15:52:04 -07:00
Tyler Benson c5ccc67743 Migrate Akka-Http Server tests and add ignoreParent() 2019-08-05 08:42:46 -07:00
Tyler Benson c60e1dbcba Set ignoreActiveSpan for Servlet 2 and capture status code
This change wraps the servlet response object in order to collect the status code.  This can be risky if the code is expecting a raw type object.  We are extending a standard “HttpServletResponseWrapper” though, so it should be easy to work around.

This change also moves to the standard HttpServerTest for Servlet 2.
2019-08-05 08:42:46 -07:00
Tyler Benson 2aa69d8203
Merge pull request #932 from DataDog/tyler/servlet-testing
Migrate servlet tests to HttpServerTest and ignoreActiveSpan for "root"
2019-08-05 08:35:48 -07:00
Tyler Benson 6f229305bb Review fixes 2019-08-02 10:01:03 -07:00
Luca Abbati 097c8186ba
Merge pull request #906 from DataDog/labbati/atlas-1.1.0-compatibility
Make netty 4.0 attributes definition compatible with Apache Atlas 1.1.0
2019-08-02 16:27:23 +02:00
Laplie Anderson 21b12328fa OSGI bootstrap delegation 2019-07-31 11:32:20 -04:00
Laplie Anderson e8e4f2649b Bootstrap prefixes need to be in *3* places 2019-07-31 10:41:42 -04:00
Tyler Benson 9681b91f3e Fix test. Format. 2019-07-29 15:27:26 -07:00
Tyler Benson d6b903665e Copy servlet listener over to new context on dispatch.
This allows it to finish the span with the correct response.
2019-07-26 16:30:23 -07:00
Tyler Benson c3203dace8 Migrate servlet tests to HttpServerTest
Currently missing the authentication tests which need to be added to the parent, but other than that, testing is more thorough.

Discovered that trace propagation for Jetty Async is currently busted so I commented that portion of the test out until we can get it fixed.
2019-07-26 16:01:06 -07:00
Tyler Benson 023fb397b5
Merge pull request #928 from DataDog/tyler/http-server-testing
Base HttpServerTest and updated Netty test
2019-07-26 12:59:49 -07: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
Tyler Benson 0d1bf5edd7 Limit Vert.x tests to 3.x
4.0.0-milestone1 was just released and is incompatible.
2019-07-25 15:32:54 -07:00
Tyler Benson c1ec277944 Base HttpServerTest and updated Netty test 2019-07-24 15:54:07 -07:00
Tyler Benson aaba3fc095 Fix trace propagation 2019-07-22 11:02:24 -07:00
Johan Vandeweerd fff8006e51 Remove unused private method 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 0043efa164 Add documentation on conditions when DefaultWebClientAdvice is not applied 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 633db43cb1 Fix typo rawStatusCode in javadoc 2019-07-22 11:01:41 -07:00
Johan Vandeweerd bc51f04bd3 Replace hasSuperType with safeHasSuperType 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 8f96205579 Add Javadoc to rawStatusCode method that is not part of ClientResponse in spring-webflux-5.0 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 7059cca3cc Add test for spring webflux webclient 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 872a099722 Remove onPeerConnection decorator call 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 23b8caa27c Add decorator hooks during lifecycle of Publisher 2019-07-22 11:01:41 -07:00
Johan Vandeweerd ac11bba616 Replace operation name with static value 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 35b924b397 Replace span.log with span.tag 2019-07-22 11:01:41 -07:00
Johan Vandeweerd f5f8fe1c96 Add javadoc to clarify usage of this class 2019-07-22 11:01:41 -07:00
Johan Vandeweerd e4560ba50f Instrument all subtypes of ExchangeFunction instead of only ExchangeFunctions$DefaultExchangeFunction 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 0e9edb1205 Aligned instrumentation names between DefaultWebClientInstrumentation and SpringWebfluxHttpClientDecorator 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 091648d4c7 Enable tracing for Spring Webflux WebClient 2019-07-22 11:01:41 -07:00
Johan Vandeweerd 797003b585 Moved Spring Webflux instrumentation code to server subpackage 2019-07-22 11:01:41 -07:00
Tyler Benson 7571b778ad
Merge pull request #886 from DataDog/tyler/netty-client-callback
Change the scope for the netty client callback
2019-07-22 11:00:17 -07:00
Luca Abbati 0ff56b0a9f
Improve tests readability moving common instance to test class 2019-07-22 11:19:13 +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
Laplie Anderson 22dc30526a
Merge pull request #925 from DataDog/landerson/resourcename-on-annotation
Add resource name to the @Trace annotation
2019-07-19 12:43:19 -04:00
Tyler Benson ea4fc4ab28 Use NoopSpan instead of null for null parent.
Fix some more tests.
2019-07-19 09:26:40 -07:00
Tyler Benson e692605a3b Fix formatting 2019-07-19 09:26:40 -07:00
Tyler Benson 53ef8f020f Additional testing for Vert.x
Adds reactive/circuitbreaker tests.
2019-07-19 09:26:40 -07:00
Tyler Benson 0e83304a87 Update Ratpack latest test 2019-07-19 09:26:40 -07:00
Tyler Benson 6ccb0d71d8 Change the scope for the netty client callback
Previously the scope was the http client span, which could result in deep nesting.  Now it is the parent span.

Before
[——————Parent—————]
   [ ^ ———Client—————]
                        [ ^—Child—]

Now:
[——————Parent—————]
   [ ^ —Client—] [ ^—Child—]

Also improve the tests.
2019-07-19 09:26:40 -07:00
Laplie Anderson cad2a3d4a4 Set resource name in a way that doesn't need to reference DDSpanBuilder 2019-07-19 12:26:17 -04:00
Luca Abbati 5921ed3ed1
Remove code not intended to be there 2019-07-19 18:14:48 +02:00
Laplie Anderson d101bea085 Add DDSpanBuilder to helper classes of both instrumentations 2019-07-19 12:11:10 -04:00
Pedro Silva ef5a006df2 changes requested: remove iterator() implementation from TracingList. refactor unit tests to expect only one element to be consumed. Kafka embedded instance as a Rule 2019-07-19 16:45:34 +01:00
Luca Abbati 9f0ec7ec49
Update helper classes 2019-07-19 17:24:58 +02:00
Luca Abbati edacd7a41d
Refactor weak hash map to be able to reuse functionalities 2019-07-19 16:18:38 +02:00
Laplie Anderson 331b8c8e99 Add resource name to the @Trace annotation 2019-07-19 09:52:19 -04:00
Pedro Silva 2627a452c0 unit tests for records(TopicPartition) method of kafka-clients instrumentation. introduce safeguards when instrumenting iterator() so that duplication of traces is not allowed. do not allow subList() to be instrumented 2019-07-18 23:09:33 +01:00
Laplie Anderson 0f9b28df27
Merge pull request #914 from DataDog/landerson/google-http-client
Instrumentation of Google Http Client
2019-07-17 16:17:38 -04:00
Luca Abbati 48aff5f754
Add all helpers required for ClassLoaderScopedWeakMap usage + re-enable all tests 2019-07-17 09:49:26 +02:00
Luca Abbati 840b8b407d
No matter what, it won't work :) I am now in the mood 'try everything in the world until it works' 2019-07-16 15:39:00 +02:00
Luca Abbati cb430c566b
Remove obsolete test 2019-07-16 11:53:22 +02:00
Luca Abbati de6f33c035
Draft of per-classloader netty AttributeKey definition 2019-07-16 11:02:25 +02:00
Luca Abbati fac3a93445
Make netty 4.0 attributes definition compatible with Apache Atlas 1.1.0
The issue we are trying to fix here seems to be a result of two concurrent issues.

Cassandra driver's used by atlas 1.1.0 brings in a old version of netty < 4.0.23.

In version 4.0.25 netty raised exception in `UniqueName` class for duplicate name

```
if (map.putIfAbsent(name, Boolean.TRUE) != null) {
            throw new IllegalArgumentException(String.format("'%s' is already in use", name));
        }
```

This changed in 4.0.26 where exception was not thrown, instead the duplicate key was just ignored.

```
    protected UniqueName(String name) {
        this.name = checkNotNull(name, "name");
        id = nextId.incrementAndGet();
    }
```

Now this alone would not be enough. The only way I was able to reproduce is if two different class loaders tries to load the
same class `AttributeKeys` twice.
I tried to look into Atlas source code (which is huge) and I could not find a clear path of how this would be possible.

Further more, looking at some build scripts that a user experiencing this issue provided,
it looks like they are doing everything correctly and there is nothing they should change.

In conclusion, I believe that even if this is not a very clean approach,
we should be resilient to this use case, when a customer using netty <4.0.25 in an
older version of Apache Atlas (or with some sort of class loader behavior).
2019-07-16 11:02:25 +02:00
Tyler Benson 747f758a70 Remove default instance
It’s not very interesting and breaks the definition of “instance” when we want to see the db name when no instance name is defined.
2019-07-15 12:52:57 -07:00
Nikolay Martynov 1fbe395586 Avoid Jetty 10 in servlet-3 test
Alpha version of Jetty 10 was released and it seems to be compiled for
java versions above 8 so tests fail on java8.

Limit latest dep Jetty tests to Jetty 9 for now.
2019-07-15 10:15:21 -04:00
Nikolay Martynov 3191eb7058 Avoid Jetty 10
Alpha version of Jetty 10 was released and it seems to be compiled for
java versions above 8 so tests fail on java8.

Limit latest dep Jetty tests to Jetty 9 for now.
2019-07-15 10:15:16 -04:00
Tyler Benson ec931463a4
Merge pull request #885 from DataDog/tyler/instance-name-testing
Additional testing for split-by-instance config
2019-07-15 01:27:49 -04:00
Laplie Anderson 0eab4688cd Remove unnecessary semicolons 2019-07-12 16:36:02 -04:00
Nikolay Martynov 6516bd7ad7 Minor comment update 2019-07-12 16:26:39 -04:00
Laplie Anderson 8a7336a017 Use 1.19.0 as first supported version 2019-07-12 16:06:19 -04:00
Laplie Anderson 82ee01cadf Implement instrumentation for async requests 2019-07-12 15:41:14 -04:00
Nikolay Martynov f4aa8be7c5 Make kafka streams test more stable 2019-07-11 11:07:17 -04:00
Nikolay Martynov 3ecc7c123d Wait for traces in kafka streams tests 2019-07-11 10:51:55 -04:00
Nikolay Martynov 765b76b0ae Fix kafka-streaming tests broken by records(TopicPartition) instrumentation 2019-07-11 10:31:18 -04:00
Nikolay Martynov 3e8b65290a Instrument records(TopicPartition) in kafka consumer 2019-07-11 10:30:44 -04:00
Nikolay Martynov 142477ed0a Merge branch 'master' into mar-kolya/kafka-trace-records 2019-07-10 18:15:51 -04:00
Tyler Benson a13e4a0229
Merge pull request #910 from DataDog/labbati/jersey-1.19
Extend support for Jersey client  to 1.9+
2019-07-10 15:02:11 -06:00
Tyler Benson 4501dbe920
Merge pull request #899 from dpratt/fix-akka-http
Fix akka-http instrumentation.
2019-07-10 14:39:47 -06:00
Tyler Benson 5624cef4af fix check 2019-07-10 14:08:50 -06:00
Tyler Benson 4486c3a6ff Change jax-rs-client project names to match versions 2019-07-10 13:25:48 -06:00
Tyler Benson 5526fd0ca3 Jersey client 1.9 cleanup 2019-07-10 13:11:09 -06:00
Nikolay Martynov f484295460 Kafka instrumentation: make return type more general in instrumentation matching 2019-07-10 13:47:20 -04:00
Luca Abbati c16a0844d8
Enable tracing of jax-rs client in sun package 2019-07-10 13:05:12 -04:00
Luca Abbati 3ab63e7005
Some refactoring in tests 2019-07-10 08:43:31 -04:00
Luca Abbati 0f5dd2413c
Add tests for Jersey V1 client 2019-07-09 22:49:44 -04:00
Luca Abbati b62266fd52
First draft of jersey 1.19 client instrumentation 2019-07-09 21:13:00 -04:00
Laplie Anderson caa7e4426a Passing tests. Modify escaping of spaces in urls 2019-07-09 17:17:41 -04:00
Laplie Anderson d97b1c2d53 Fix package 2019-07-09 17:17:41 -04:00
Laplie Anderson 30916ac5d7 Implementation 2019-07-09 17:17:41 -04:00
Laplie Anderson f53b14bd0f Stub google http client integration 2019-07-09 17:17:41 -04:00
Nikolay Martynov 058c4ec567 Trace 'records(TopicPartitions)` in kafka consumer 2019-07-08 11:19:17 -04:00
Nikolay Martynov ffe4aabf8f Specify version of hibernate-annotation
Using '+' pushes version of hibernate-core up as well and we do not
want thay.
2019-07-02 10:41:55 -04:00
Nikolay Martynov 94b2e91c3a Fix hibernate DTD urls
Looks like old urls redirect to https with broken cert now
2019-07-02 10:41:32 -04:00
Luca Abbati 58da60ac4e
Fix typo in comment 2019-06-25 00:33:18 +02:00
David Pratt 681420a004 Remove SuperPool instrumentation.
By definition, a Flow generated by a SuperPool does not respect ordering
of requests and responses, and in fact will typically only rarely actually
behave in the fashion that the instrumentation expects. The previous implementation
would start a span for a given request before submitting it as input to the flow,
and close the span with whatever response is next emitted by the flow. This
request will rarely (if ever) be the actual response for the request that
started the span. For more info, see the official docs at
https://doc.akka.io/docs/akka-http/current/client-side/host-level.html#configuring-a-host-connection-pool

Additionally, compiling this instumentation against scala 2.11, and only
scala 2.11 can (and does) cause significant problems at runtime due to the
fact that Scala is explicitly not binary compatible across major versions.
2019-06-24 11:01:48 -05:00
Luca Abbati 8022d0e170
Remove redundant .class suffixes in groovy test files 2019-06-24 17:18:05 +02:00
Luca Abbati d58c252085
Add tests for netty channel handlers added through channel initializers 2019-06-24 16:27:50 +02:00
Luca Abbati 27e0e4492e
Calculate depth per handler class in netty channel pipeline instrumentation 2019-06-24 16:27:50 +02:00
Luca Abbati f01d473d10
Merge pull request #894 from DataDog/labbati/log4j
Support log trace injection for log4j 1.x and log4j 2.x when used without Slf4j
2019-06-21 16:36:26 -04:00
Luca Abbati 8ee6d26d15
Rename log4j 1 and 2 instrumentation to log4j1 and log4j2 respectively 2019-06-21 15:56:27 -04:00
Luca Abbati f279a612f7
Minor fixes to typos and code styles 2019-06-21 15:53:13 -04:00
David Pratt bf7bbf31f8 Fix akka-http instrumentation.
Remove compiled Scala artifacts from the actual instrumentation. Scala
is not binary compatible across major versions, and having
AkkaHttpClientTransformFlow.scala be in the artifact causes problems
when using anything but Scala 2.11.

Having the AkkaHttpClientTransformFlow implementation be in pure java
utilizing the Akka-stream Java DSL ensures that this will work across
any given Scala major version.
2019-06-21 14:51:04 -05:00
Laplie Anderson ad822d81f9 Fix imports to match project style
* imports in groovy and the ordering of lombok was incorrect
2019-06-21 14:19:45 -04:00
Laplie Anderson d80406843f Add "http.query.string" and "http.fragment.string" to DDTags 2019-06-21 14:05:34 -04:00
Luca Abbati d0f17e4b9d
Rename log context injection test base 2019-06-21 08:54:13 -04:00