Commit Graph

795 Commits

Author SHA1 Message Date
Tyler Benson dd11429575 Remove unused fields 2018-08-13 16:43:32 +10:00
Tyler Benson 232708e457 Prevent abstract classes from going through the muzzle plugin. 2018-08-13 15:35:46 +10:00
Tyler Benson 4583d12b31 Cleanup method signatures and servlet 2 instrumentation
adding the abstract servlet instrumentation reduces code duplication and makes it more similar to servlet 3 instrumentation.
2018-08-13 15:14:10 +10:00
Nikolay Martynov 44f501fa53 Fix resources directory name in lagom tests 2018-08-11 06:42:53 -07:00
Nikolay Martynov fc8cc47f85 WeakMap improvements
* Improve tests to not depend on thread schedulting
* Test all underlying implementations
* Reduce number of static values
2018-08-10 22:16:21 -07:00
Tyler Benson 6cef9b89b0 Make some things non-static 2018-08-10 15:41:26 +10:00
Tyler Benson b220309a68 PR review changes. 2018-08-10 12:23:13 +10:00
Tyler Benson 984bc7563d Add span.origin.type for JSP too.
Might be slightly redundant given `jsp.requestURL` but consistent with other instrumentation.
2018-08-10 12:14:16 +10:00
Tyler Benson d5cc84ea9f Add span for jax-rs representing controller execution
Also add additional `span.origin.type` tags for better visibility.
2018-08-10 10:36:42 +10:00
Tyler Benson a3875aff2c Logging improvements and other misc
from reviewing a customer’s logs.
2018-08-09 15:59:59 +10:00
Tyler Benson ae9d4619a4 Add instrumentation showing the rendering time 2018-08-09 13:10:45 +10:00
Tyler Benson eacc2d6402 Restructure how WeakMap is implemented
Use an interface.
Use a provider/supplier to avoid loading more onto the bootstrap classpath.
2018-08-08 16:54:44 +10:00
Gary Huang 2041d56de8 use Slf4j annotation. 2018-08-07 18:29:55 -04:00
Gary Huang abffe1779b Remove Util Logger and Refactor test
OKHttp instrumentation will not be using the java util logger, also applies the string representaiton of ip address for IPV4/6 tags. Refactored test.
2018-08-07 18:29:22 -04:00
Tyler Benson 5e55defeb3 Fix bootstrap classpath. 2018-08-07 17:11:42 +10:00
Tyler Benson d05e2cfe86 Add span for spring web controller. 2018-08-07 17:03:07 +10:00
Tyler Benson fff3118dec separate spring web and error instrumentation. 2018-08-07 16:33:51 +10:00
Tyler Benson 05dc51633a Update Spring Tests 2018-08-07 16:04:28 +10:00
Tyler Benson 9b00a27dce add javadoc and comparison 2018-08-07 12:42:14 +10:00
Tyler Benson 847484cd47 Use WeakConcurrentMap
Instead of `Collections.synchronizedMap(new WeakHashMap<>())`.
2018-08-06 14:14:57 +10:00
Tyler Benson e7aa7c52b4 Improve comments and add synchronization. 2018-08-06 11:38:28 +10:00
Tyler Benson 064ae4c238 Separate span for input and output streams. 2018-08-03 15:41:16 +10:00
Nikolay Martynov 911ad5f231
Merge pull request #417 from DataDog/mar-kolya/apache-http-client-fix-exception-handling
Apache http client fix exception handling
2018-08-01 14:58:28 -04:00
Nikolay Martynov 7ad9305927 Add some integration tests to check ByteBuddy's behavoir on class loading and parsing 2018-08-01 14:17:12 -04:00
Tyler Benson 50fde4c382 Begin 0.13.0 2018-08-01 13:03:37 +10:00
Nikolay Martynov bb2126bd9a Improve ByteBuddyElementMatchers javadoc 2018-07-31 20:14:03 -04:00
Nikolay Martynov 2bfb7b93ec Disable Lagom circuit breaker
It looks like they fail tests from time to time
2018-07-31 20:14:03 -04:00
Nikolay Martynov 78e6a9c336 Get rid of DDAdvice
Newer ByteBuddy api simplifies things.
2018-07-31 20:14:03 -04:00
Nikolay Martynov c66bd24d3a Use `safeHasSuperType` instead of `isSubType`
`isSubType` may fail on certain class lookup problems, even on classes
unrelated to given instrumentation, preventing instrumentation from
being applied.
2018-07-31 20:14:03 -04:00
Nikolay Martynov 6693a93485 Remove onInstrumentationError from LagomTest
We not longer need it since our instrumentation can handle underlying
loading problem.
2018-07-31 20:14:03 -04:00
Nikolay Martynov 6bc1d1ab8e Implement `saveHasSuperType` and use it instead of `hasSuperType`
The idea is to just 'trim' type hierarchy 'up-trees' that we cannot
resolve dring instrumentation instead of failing to instrument completely.
2018-07-31 20:13:59 -04:00
Nikolay Martynov deec4a795c Improve Apache HTTP client
Properly open and close outer span in multi-request cases
2018-07-31 20:12:17 -04:00
Nikolay Martynov 1ebe4732f8 Stop using `failSafe` matcher
It should not be necessary after we jave fixed class location issue
for ByteBuddy
2018-07-31 20:12:17 -04:00
Nikolay Martynov bae79514c0 Fix DDLocationStrategy to use DataDog ClassLoader
This allows ByteBuddy to properly find classes injected into the
agent.

Thanks @realark for providing a fix!
2018-07-31 20:12:17 -04:00
Nikolay Martynov 4ae9263e1c Set POOL_ONLY DescriptionStrategy for ByteBuddy
This makes sure no classes are loaded during instrumentation
transformation which allows us to safely instrument depndent classes.
2018-07-31 20:12:17 -04:00
Nikolay Martynov b6118f0397 Apache HTTP Client: add test for redirected request 2018-07-31 20:12:17 -04:00
Tyler Benson 9a6efe69f4 Fix netty dependency and class version checking 2018-07-31 17:42:40 +10:00
Tyler Benson b1304b478a Change http server span type back to `web` 2018-07-31 12:53:50 +10:00
Tyler Benson e6da80bb12 datastores 2018-07-31 12:53:50 +10:00
Tyler Benson 00a2e891b0 http servers 2018-07-31 12:53:50 +10:00
Tyler Benson 3856e7fd1a http clients 2018-07-31 12:53:50 +10:00
Tyler Benson 01d57fb497 elasticsearch 2018-07-31 12:53:50 +10:00
Tyler Benson d3ce57d84f mongo 2018-07-31 12:53:50 +10:00
Tyler Benson 094552cad3 memcache 2018-07-31 12:53:50 +10:00
Tyler Benson 2e7899b405 redis 2018-07-31 12:40:47 +10:00
Tyler Benson ff9ef671f3 Apply formatter on groovy files. 2018-07-31 12:09:28 +10:00
Tyler Benson 51919a77bb Apply formatter on java files. 2018-07-31 12:07:43 +10:00
Tyler Benson bc3af56b08 Apply formatter on scala files. 2018-07-31 12:07:30 +10:00
Tyler Benson b5c8a8b8fc Apply formatter on gradle files. 2018-07-31 12:04:00 +10:00
Gary Huang 4c88e1a0a8
Merge pull request #392 from DataDog/gary/uint64-id-support
Change the internal storage and handling of trace ID, span ID, and pa…
2018-07-30 15:01:10 -04:00
Tyler Benson 4e60246e17
Merge pull request #405 from DataDog/tyler/servlet-async
Refactor servlet instrumentation and disable async on response.
2018-07-30 10:27:54 +10:00
Nikolay Martynov f6edf913b7 Remove functions that do reflection which is not Java10 compliant
These functions are not used anylonger
2018-07-27 14:56:28 -04:00
Andrew Kent b64be6228c Don't check for helper classes in muzzle reference check 2018-07-27 11:03:02 -07:00
Nikolay Martynov fadce5c6b3
Merge pull request #400 from DataDog/mar-kolya/java10-support
Java10 support
2018-07-27 13:38:39 -04:00
Andrew Kent ee594f8567 Use connect operationName in httpurlconnection connect-first case 2018-07-26 15:34:27 -07:00
Andrew Kent 54485c3296 Don't trace httpurlconnection as a top-level trace 2018-07-26 15:34:27 -07:00
Andrew Kent d598515d09 Handle cases where connect() is called first 2018-07-26 15:34:27 -07:00
Andrew Kent df95af53a7 Remove getResponseCode() from httpurlconneciton instrumentation 2018-07-26 15:34:27 -07:00
Andrew Kent 2a35ecb497 Use connected field to determine io status of httpurlconnection 2018-07-26 15:34:27 -07:00
Gary Huang 2780ac7ac1 POC sun JDK http urlconnection instrumentation, currently creates one span. 2018-07-26 15:34:27 -07:00
Nikolay Martynov 0f80f7dd40 Remove old checks from HelperInjector
They are not really producing anything useful anf they depend on API
that is forbidden in Java9+
2018-07-26 10:11:24 -04:00
Nikolay Martynov 44b364332a Remove unused field and method 2018-07-26 10:11:20 -04:00
Nikolay Martynov 3f158bb47f Fix `SpockRunner` BootstrapJar creation under Java9+ 2018-07-26 10:01:55 -04:00
Nikolay Martynov 8cc2f6cbb2 Skip `jdk.internal.reflect.DelegatingClassLoader` in `ClassLoaderMatcher`
This is the same thing as `sun.reflect.DelegatingClassLoader` in older JVMs
2018-07-26 10:01:55 -04:00
Gary Huang 6317b21d5c Fix merge conflicts with service mapping change 2018-07-26 09:16:41 -04:00
Tyler Benson 1e36343485 Null or empty tags should remove previously set values.
Add context to servlet2 test.

Clean up some declared tracers that mess up the classpath.
2018-07-26 12:20:37 +10:00
Tyler Benson fb2817a134 Refactor servlet instrumentation and disable async on response.
Separate out common advice between instrumentation.
2018-07-25 15:12:55 +10:00
Nikolay Martynov b30ed0dfa0
Merge pull request #404 from DataDog/mar-kolya/fix-kafka-streaming-flaky-test
Fix flaky test in kafka streaming
2018-07-25 00:17:01 -04:00
Nikolay Martynov 5c1ac58c3f Fix flaky test in kafka streaming 2018-07-24 23:41:01 -04:00
Nikolay Martynov 7b644161d3 Migrate ApacheHttpClientTest to use span assertion api 2018-07-24 23:28:37 -04:00
Nikolay Martynov c98d5ef64b Increase ElasticSearch timeout in tests
Hopefully this would improve build stability
2018-07-24 23:07:18 -04:00
Gary Huang 93e70dcef6 Address comments and add test case for extracting non numeric IDs 2018-07-24 14:04:52 -04:00
Nikolay Martynov 3d8e76c2a4 Get rid of `WRITER_PHASER`
We have alternative way of doing the same thing and `Phaser` seems to be
not very correct way of doing this anyway.
2018-07-24 11:41:48 -04:00
Nikolay Martynov dcbf8d674a Akka-http-client: handle `singleRquest` throwing an exception 2018-07-24 11:41:48 -04:00
Nikolay Martynov 642b862c13 Do not reference `AkkaHttpClientTransformFlow` in instrumentation code
to avoid class loader problems
2018-07-24 11:41:48 -04:00
Nikolay Martynov 35b980ea89 Fix ElasticSearch config for 2.x client 2018-07-24 11:41:45 -04:00
Nikolay Martynov 732bce82d0 Fix typo 2018-07-23 10:04:53 -04:00
Nikolay Martynov 7794eacc91 Increase Cassandra request timeout in tests 2018-07-23 10:04:53 -04:00
Nikolay Martynov b4b99d991c Move AkkaHttpServerInstrumentation into Scala compilation
This is a hack to work around the problem of `auto-service` annotation
processing creating files with same name in `java` and `scala`
directories. This results in Jar having two files with the same name
instead of one concatenated file.
2018-07-23 10:04:53 -04:00
Nikolay Martynov 68ce09b461 Add missing Scala classes to list in injection classes 2018-07-23 10:04:53 -04:00
Nikolay Martynov fd5d80ba86 Make muzzle plugin apply to Scala code 2018-07-23 10:04:53 -04:00
Nikolay Martynov 161847752f Pass Span instead of Scope 2018-07-23 10:04:53 -04:00
Nikolay Martynov 5e67e6e5ba Migrate to new instrumentation API 2018-07-23 10:04:53 -04:00
Nikolay Martynov 277e7a1a3c Typo fix 2018-07-23 10:04:53 -04:00
Nikolay Martynov db895f2e34 Remove redundant plugin from akka gradle file 2018-07-23 10:04:53 -04:00
Nikolay Martynov ae37ca4b02 Add akka-http-client instrumentation: superPool 2018-07-23 10:04:53 -04:00
Nikolay Martynov 2b25de966a Add akka-http-client instrumentation
This is a very-very first pass: instrument single request
2018-07-23 10:04:53 -04:00
Nikolay Martynov 6932d581ed Add some helpful messages to AgentTestRunner assertions 2018-07-23 10:04:53 -04:00
Nikolay Martynov f9f135cbd6 Do not run Spymemcached tests locally under Java7
since it requires external Memcached container running because
testcontainers doesn't work on Java7.
2018-07-23 10:04:53 -04:00
Nikolay Martynov c844501bc5 Fixes for some minor checkstyle complaints 2018-07-23 10:04:53 -04:00
Nikolay Martynov ce7866d018 Use `io.opentracing.log.Fields.*` instead of hardcoded strings 2018-07-23 10:04:53 -04:00
Nikolay Martynov d4d770fe42 Pull out ratpack helper into seprate class to avoid copy-paste 2018-07-23 10:04:53 -04:00
Nikolay Martynov a882a5439c OkHttp instumentation: simplify error case 2018-07-23 10:04:53 -04:00
Nikolay Martynov 9d2755be17 Fix Google Java Formater violations
Some changes landed on master that do not comply with new formatter rules
2018-07-23 13:43:29 +10:00
Nikolay Martynov 4283e3acb1
Merge pull request #396 from DataDog/mar-kolya/test-http-client-timeout-increase
Increase build stability by increasing some http client timeouts
2018-07-22 21:35:32 -04:00
Tyler Benson 9988c8775f
Merge pull request #388 from DataDog/tyler/grpc
Instrument gRPC 1.5.0+
2018-07-23 11:19:48 +10:00
Nikolay Martynov 564b4e9dc3 Increase build stability by increasing some http client timeouts
This makes build more resilient to slow boxes and high parallelism
2018-07-22 00:41:37 -04:00
Nikolay Martynov f1466304e8 Move random port generation to actual usage in tests using listening ports 2018-07-20 11:57:37 -04:00
Nikolay Martynov c3825d9d52 Improve tmp dir handling in ES tests
Also make sure ES ports are allocated right before ES is started
2018-07-20 11:53:33 -04:00
Tyler Benson a34f7b849b Instrument gRPC
Adds spans for the duration of the connection and child spans for each message.
Also propagates the trace using the metadata object.
2018-07-20 12:25:04 +10:00