Commit Graph

1467 Commits

Author SHA1 Message Date
Tyler Benson 34b7225a13 Add instrumentation name to allow configuring `@Trace`
Specifically, this allows annotated/configured methods to be reported to App Analytics:
- System Property: `-Ddd.trace-annotation.analytics.enabled=true`
- Environment Variable: `DD_TRACE_ANNOTATION_ANALYTICS_ENABLED=true`
or
- System Property: `-Ddd.trace-config.analytics.enabled=true`
- Environment Variable: `DD_TRACE_CONFIG_ANALYTICS_ENABLED=true`
2020-03-03 15:11:11 -08:00
Tyler Benson 042f49d800 fix muzzle and retry tests 2020-03-03 11:03:01 -08:00
Tyler Benson 7702b0585b Add Classloader precheck to expensive matchers.
Benchmark results:
```
Benchmark                                                             Mode  Cnt   Score   Error  Units
ClassRetransformingBenchmark.WithAgent.testTracedRetransform          avgt       21.933          ms/op
ClassRetransformingBenchmark.WithAgent.testUntracedRetransform        avgt        6.171          ms/op
ClassRetransformingBenchmark.WithAgentMaster.testTracedRetransform    avgt       22.129          ms/op
ClassRetransformingBenchmark.WithAgentMaster.testUntracedRetransform  avgt        6.517          ms/op
ClassRetransformingBenchmark.testTracedRetransform                    avgt        0.876          ms/op
ClassRetransformingBenchmark.testUntracedRetransform                  avgt        0.867          ms/op
```

I also saw a small improvement in application startup time.
2020-03-03 10:29:10 -08:00
Nikolay Martynov 89be6b5c06 Ignore majority of google api
And several other google libraries
2020-03-03 11:45:22 -05:00
Nikolay Martynov d74d65175b Ignore majority of cassandra classes 2020-03-03 11:45:22 -05:00
Nikolay Martynov e92ad38cc8 Tighten up aws instrumentation matcher a bit 2020-03-03 11:45:22 -05:00
Nikolay Martynov e22ce02762 Add test for ignore matchers for libraries 2020-03-02 16:37:39 -05:00
Tyler Benson f0e59edb5e
Merge pull request #1274 from DataDog/tyler/matcher-hashcode-equals
Add proper hashcode/equals methods to our matchers
2020-03-02 10:37:51 -08:00
Trask Stalnaker 0984ac2a61 Fix class loading instrumentation 2020-02-29 15:28:50 -08:00
Tyler Benson 80f13bc670 Add proper hashcode/equals methods to our matchers
I copied over the methods that would have been generated had the `HashCodeAndEqualsPlugin` actually been working.

Also updated the matcher tests to use the TypePool for more realistic values.
2020-02-28 14:13:18 -08:00
Nikolay Martynov 0b196ed3ec Merge branch 'master' into mar-kolya/constantify-decorator-matcher 2020-02-28 01:41:02 +01:00
Lev Priima 885212ee36 ClassLoaderHasNoResourceMatcher: put to cache outside critical section 2020-02-27 13:12:23 -08:00
Tyler Benson 68e4bf8375
Merge pull request #1266 from DataDog/tyler/imply-not-interface
Imply not(isInterface()) call for expensive matchers
2020-02-27 12:54:15 -08:00
Tyler Benson 35e00686b3 Imply not(isInterface()) call for expensive matchers
Also remove from simple named("some.name") matchers to avoid metadata lookup.
2020-02-27 12:13:42 -08:00
Tyler Benson 300c795e72 Remove conversion from URI to String back to URI
Apply same change as here: https://github.com/open-telemetry/opentelemetry-auto-instr-java/pull/191
2020-02-27 10:21:06 -08:00
Tyler Benson eb8de0d3ab Apply matcher if debug logging enabled to avoid confusing log output.
Otherwise it was "Skipping" every unrelated class.
2020-02-25 18:04:27 -08:00
Tyler Benson bd82166b58 Rename methods that don't require disambiguation. 2020-02-24 08:35:19 -08:00
Tyler Benson f70c35842d Move matchers to separate package and split matcher classes out 2020-02-24 08:31:12 -08:00
Nikolay Martynov 833f67816e
Merge pull request #1248 from DataDog/mar-kolya/reduce-superclass-matcher-exposure
Avoid calling superclass matcher where possible
2020-02-21 21:16:52 -05:00
Nikolay Martynov b6d374e3a0 Avoid calling superclass matcher where possible
Saves about 100ms of startup time on test app
2020-02-21 15:08:39 -05:00
Tyler Benson ecf9bcc655
Make sure CallDepthThreadLocalMap is always reset (#1227)
Make sure CallDepthThreadLocalMap is always reset
2020-02-21 11:03:51 -08:00
Nikolay Martynov b1d314aff1 Specify types in jaxrs mtcher to help Idea with type inference 2020-02-21 11:34:25 -05:00
Tyler Benson a4f34f4088 Latest tomcat release seems to have some issues
Instrumentation muzzled: [jsp, jsp-compile] -- datadog.trace.instrumentation.jsp.JasperJSPCompilationContextInstrumentation on jdk.internal.loader.ClassLoaders$AppClassLoader@2c13da15
-- datadog.trace.instrumentation.jsp.JSPDecorator:39 Missing method getServletContext#()Ljavax/servlet/ServletContext;
2020-02-20 20:35:25 -08:00
Tyler Benson 5e37ca02f1
Merge pull request #1240 from DataDog/tyler/executor-matcher-reorder
Reorder java-concurrent matchers
2020-02-20 17:54:39 -08:00
Tyler Benson 660921517c
Remove costly matchers from ignore list (#1233)
Remove costly matchers from ignore list
2020-02-20 17:52:43 -08:00
Trask Stalnaker 8949d6c05f Make sure CallDepthThreadLocalMap is always reset 2020-02-20 16:53:57 -08:00
Tyler Benson b80e9857d2 Reorder java-concurrent matchers
Move the expensive matcher to last.

In theory this should help, but did not seem to make a significant difference in basic startup benchmarks.
2020-02-20 11:34:39 -08:00
Laplie Anderson d45ead1284 split matching into safeExtendsClass and safeHasInterface 2020-02-19 21:22:17 -05:00
Tyler Benson 6e4b55304e Add special handling for ignoring `javax.decorator.Decorator` annotated classes. 2020-02-19 16:24:23 -08:00
Nikolay Martynov d49c08691e
Merge pull request #1229 from DataDog/mar-kolya/fix-jaxrs-matching
Fix JaxRs matching
2020-02-19 07:01:21 -05:00
Nikolay Martynov 02fb8d8888 Fix JaxRs matching
Paranthesys was missplaced leading to more complicated matcher than needed
2020-02-18 18:42:36 -05:00
heathkd 917deb19be change imports to use bootstrap api package 2020-02-14 20:48:18 -05:00
heathkd f3537e1665 change module and file names to match version of earliest supported version of spring-context 2020-02-14 20:47:16 -05:00
heathkd 9eb51248cd address PR comments 2020-02-14 20:47:16 -05:00
heathkd b21e361591 add test for interval task and trigger task 2020-02-14 20:46:26 -05:00
heathkd cc1aaf5fc5 replace Trace annotation with regular API interaction 2020-02-14 20:46:26 -05:00
heathkd 68c323ac56 create ScheduledTasks bean and application context config 2020-02-14 20:46:00 -05:00
Nikolay Martynov a04cc15ce8 Fix some tests 2020-02-14 12:59:30 -05:00
Nikolay Martynov fd75575796 Disable peer hostname tag for http servers
Getting peer hostname makes DNS request
2020-02-14 11:25:07 -05:00
Tyler Benson 618780b62f
More general class loading instrumentation (#1218)
More general class loading instrumentation
2020-02-13 11:54:25 -08:00
Trask Stalnaker 94dd781e50 Better naming 2020-02-13 11:31:47 -08:00
Trask Stalnaker 4dfd9534e8 Add optimization for IBM JVM 2020-02-13 11:31:47 -08:00
Trask Stalnaker a0224e2ad7 Fix for test failure on IBM JVM 2020-02-13 11:31:47 -08:00
Trask Stalnaker bfc7a0de55 More general class loading instrumentation 2020-02-13 11:31:45 -08:00
Giuseppe Cafarelli f94f76488f Add test for elasticsearch 2 TransportActionListener 2020-02-13 14:34:21 +01:00
Giuseppe Cafarelli 8f552993a6 Fix NPE on TransportActionListener for elasticsearch 2 2020-02-12 12:14:57 +01:00
Laplie Anderson 9023c6e1c7 Fix a couple tests using the wrong arguments 2020-02-11 11:44:46 -05:00
Laplie Anderson 0cb0ae0a48 Less repetition in gradle files 2020-02-11 11:44:46 -05:00
Laplie Anderson c79fe3a459 Create shared internal jar 2020-02-11 11:44:46 -05:00
Tyler Benson 51bffa2e8a Move agent api classes to bootstrap package so they're not analyzed by muzzle
Also move jdbc classes to bootstrap to reduce size and complexity of those reference checkers.

These changes reduce the total file size of these instrumentation classes by 635k, which should also result in decent memory savings.
2020-02-10 15:09:15 -08:00
heathkd 7e62bca7fe limit hibernate latest dependency test to 5.x 2020-02-07 17:57:34 -05:00
Laplie Anderson a811c027ce
Merge pull request #1188 from DataDog/landerson/finatra
Finatra Instrumentation
2020-02-04 17:36:47 -05:00
Tyler Benson daae198b08 Set dispatcher span on request instead of clear
Clearing the span caused traces to be broken up and reported independently when calling forward/include.
2020-01-30 21:55:16 -05:00
Laplie Anderson ed12af6994 Assume parent span is netty 2020-01-30 18:21:49 -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
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
Laplie Anderson 68e52497d6 Move to versioned folder name 2020-01-23 10:51:38 -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
Laplie Anderson a0b1cd4a75 WeakMap computeIfAbsent 2020-01-15 12:26:15 -05: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 77cdd210c6 Also update latestDepTest ranges. 2020-01-13 12:31:38 -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
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 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 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