Commit Graph

920 Commits

Author SHA1 Message Date
Nikolay Martynov 30695555f9 Spymemcached: remove unnecessary unboxing and minor cleanup 2018-06-13 22:43:36 -04:00
Nikolay Martynov dafd52cb7a Spymemcached: add instumentation 2018-06-13 22:38:18 -04:00
Tyler Benson ff56389a56 Upgrade some versions. 2018-06-14 11:56:56 +10:00
Nikolay Martynov 63c4cdff87 Memcached testing: add support for testoingcontainers 2018-06-13 13:06:23 -04:00
Gary Huang adbab8692c
Merge pull request #336 from DataDog/gary/lettuce-integration-branch
lettuce 5 redis client integration
2018-06-13 09:18:01 -04:00
Nikolay Martynov 0fa972ec77 Merge branch 'master' into mar-kolya/slick-instrumentation 2018-06-09 00:06:17 -04:00
Gary Huang 429ee40f81 add workaround to avoid certain commands from crashing the trace agent. 2018-06-08 23:53:13 -04:00
Gary Huang fdc56c0e13 change the way classes are loaded so that classLoaderHasClasses would still work for the classes that are being instrumented and being matched at the same time. 2018-06-08 23:53:13 -04:00
Gary Huang 42b586badf remove recording of redis command arguments for now to avoid leaking sensitive data 2018-06-08 23:53:13 -04:00
Gary Huang 0bc9d9c08d remove string constants in advice class and comment fixes 2018-06-08 23:53:13 -04:00
Gary Huang b694ecdf79 add version scan and rename instrumentation classes 2018-06-08 23:53:13 -04:00
Gary Huang 3d61d839c8 make commands with no return values (void or Mono<Void>) to finish spans early in order to record command ran.
added support for cancellation of commands in async and reactive APIs.
since flux is a stream of events, when the stream is complete, the number of events emitted are recorded in the tag db.command.results.count
created helper class LettuceInstrumentationUtil
2018-06-08 23:53:13 -04:00
Gary Huang bfdf4c858a lettuce reactive api for mono publishers completed. 2018-06-08 23:53:13 -04:00
Gary Huang 989a259ec2 Fix code with suggestions from Tyler regarding previous commit.
no longer includes the command argument if the redis command being called is AUTH since it contains sensitive information.
2018-06-08 23:53:13 -04:00
Gary Huang ae1d9d7c52 complete async unit test and changes to implementation
using handleAsync with BiFunction because lettuce futures almost never throw exceptions on futures

improvement changes to come
2018-06-08 23:53:13 -04:00
Gary Huang 1213311418 lettuce redis client sync and async api instrumentation with sync unit tests complete 2018-06-08 23:53:13 -04:00
Tyler Benson c475ac688c Add additional Elasticsearch tests for Spring Data. 2018-06-09 10:59:08 +10:00
Tyler Benson 206de0fb54 Add some more missing helper classes 2018-06-09 10:59:08 +10:00
Tyler Benson c2771753b7 Suggested changes. 2018-06-08 16:38:51 +10:00
Nikolay Martynov 28c7c30af4 [HttpUrlConnection] Fix HEAD responses
Explain to ratpack that sending body for HEAD requests is not up to
spec [1] and seems to be confusing to clients. This resolves 'Keep-Alive'
mistery and makes disabling 'keepa-live' unnecessary.

[1] https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
2018-06-07 12:24:16 -04:00
Tyler Benson 9ff09b93e1 Refactor HttpUrlConnection Instrumentation
getOutputStream shouldn’t call getResponseCode, otherwise the request gets screwed up.
2018-06-07 16:25:38 +10:00
Nikolay Martynov 93a41b5064 Fix some typos 2018-06-06 20:47:49 -04:00
Nikolay Martynov 7a280d7e13 Fix some code formatting 2018-06-06 17:11:17 -04:00
Nikolay Martynov ca6fabfd64 Move code from `WrapAdviceUtils` to `DatadogWrapper` 2018-06-06 16:42:23 -04:00
Nikolay Martynov 5f82776fc5 Use assertTraces api in slick tests 2018-06-06 16:41:03 -04:00
Nikolay Martynov 30d640e7ee Provide way to use CLosure to assert tags values 2018-06-06 16:40:34 -04:00
Nikolay Martynov b1bc24dd67 Raname function in TraceAssert to match actual action 2018-06-06 16:40:12 -04:00
Nikolay Martynov d6aaee1bee Check for java concurrent classes prefixes match only if class was not whitelisted already 2018-06-06 15:51:30 -04:00
Nikolay Martynov bbcc2882ab Use test set instead of submodule for Slick tests 2018-06-06 15:49:39 -04:00
Nikolay Martynov 2e5007fbd8 Fix function name in TagsAssert 2018-06-06 10:43:23 -04:00
Nikolay Martynov f92af7d860 Fix Scala Slick instrumentation 2018-06-06 10:43:23 -04:00
Nikolay Martynov b8fdb4acd5 Added Scala Slick test that fails due to executor wrapping problems 2018-06-06 10:43:19 -04:00
Nikolay Martynov 3187f7350f Simplify Calldepththreadlocalmap to not use atomic integers 2018-06-06 09:31:25 -04:00
Tyler Benson d235618a6e Add instrumentation for Java’s UrlConnection
For HttpUrlConnection, trace propagation headers are added to the outgoing request.

Due to the awkward design of the API, the ability to instrument in a natural way was limited, thus the main points instrumented are the get{Input,Output}Stream methods.
2018-06-06 09:12:48 +10:00
Tyler Benson 979aa7838f Clear TEST_WRITER before waiting to ensure accurate timing
Otherwise the waitForTraces at the end might be triggered prematurely.
2018-06-05 14:49:17 +10:00
Tyler Benson 5fe58dc344
Merge pull request #338 from DataDog/tyler/es-meta
Add additional metadata to ES client calls.
2018-05-30 11:58:41 +10:00
Tyler Benson 682fb01350 Wait for initial traces before starting tests
to ensure a late reported trace doesn’t mess up the test assertions.
2018-05-30 11:40:31 +10:00
Tyler Benson b58a7db7a7 Add another helper used by Joiner. 2018-05-30 10:31:00 +10:00
Tyler Benson b5346e89a3 Begin 0.10.0 2018-05-29 18:41:37 +10:00
Tyler Benson cda86ca4ea Wait for cluster to be ready before starting test. 2018-05-29 15:40:05 +10:00
Tyler Benson f9ab729f92 Forgot to inject the helpers. 2018-05-25 20:27:57 +10:00
Tyler Benson de74eb1938 Add additional metadata to ES client calls. 2018-05-25 13:58:44 +10:00
Tyler Benson c03e894870
Merge pull request #329 from DataDog/tyler/elasticsearch-client
Elasticsearch Client Instrumentation
2018-05-24 09:03:20 +10:00
Andrew Kent d9dce43728
Merge pull request #332 from DataDog/ark/playtime
Enable Play, Hystrix, and JaxRS Client Instrumentation
2018-05-22 18:56:00 -07:00
Tyler Benson ec9ce10ca1 Limit version compatibility. 2018-05-23 11:29:13 +10:00
Tyler Benson 0cf8fef8d8 Elasticsearch Instrumentation 2018-05-23 11:29:13 +10:00
Tyler Benson 164689eeb3
Merge pull request #333 from DataDog/tyler/force-latest-tests
Fix version upgrading for latestDepTests
2018-05-23 11:21:28 +10:00
Andrew Kent d90de5741f Enable JaxRS Instrumentation 2018-05-22 18:02:30 -07:00
Andrew Kent 066aac761c Enable Hystrix 2018-05-22 18:01:43 -07:00
Andrew Kent c11de3003d Enable Play Instrumentation 2018-05-22 15:29:46 -07:00
Tyler Benson ce0ef409d8
Merge pull request #330 from DataDog/tyler/aws-versions
Fix AWS version ranges
2018-05-23 07:30:16 +10:00
Tyler Benson 03392f2138
Merge pull request #331 from DataDog/tyler/move-apache-httpclient-tests
Move Apache HttpClient tests to instrumentation
2018-05-23 07:28:04 +10:00
Andrew Kent 176b071300
Merge pull request #324 from DataDog/ark/default_service_name
Remove unknown feature-flag and use generic names as fallback
2018-05-22 14:19:50 -07:00
Andrew Kent c7a5bdcdbb Remove unknown feature-flag and use generic names as fallback 2018-05-22 14:01:08 -07:00
Tyler Benson 5d6fe43dc6 TestHttpServer is no longer used
Move the java version ignores.
2018-05-22 17:12:54 +10:00
Tyler Benson e481092f25 Avoid occasional false test failure. 2018-05-22 16:47:36 +10:00
Tyler Benson a3a1b08fa9 Fix AWS version ranges 2018-05-22 16:45:01 +10:00
Tyler Benson 3781a71e5f Fix version upgrading for latestDepTests 2018-05-22 15:14:11 +10:00
Andrew Kent b7570c7152
Merge pull request #319 from DataDog/ark/muzzle-integration-branch
muzzle integration branch
2018-05-21 11:32:00 -07:00
Andrew Kent 217dd411de Disable muzzle 2018-05-21 10:58:30 -07:00
Andrew Kent 1641c54448 Skip instrumenting slick thread pool 2018-05-18 11:17:27 -07:00
Andrew Kent 0bd7a62464 Flags, Fields, Methods, and builder logic for References 2018-05-18 10:45:05 -07:00
Andrew Kent bf70b3031b Cache classloaders for reference checking 2018-05-18 10:45:05 -07:00
Andrew Kent ad7f6a5e71 Generate at compile-time and lazy-load reference matchers 2018-05-18 10:45:05 -07:00
Andrew Kent 98b44c1dfb Remove ReplaceIsSafeVisitor 2018-05-18 10:45:05 -07:00
Andrew Kent 08df3cef35 Use bytebuddy plugin to add safety checks to instrumentation 2018-05-18 10:45:05 -07:00
Tyler Benson 024d414844 Move Apache HttpClient tests to instrumentation
And add latest test.
2018-05-18 12:01:12 +10:00
Gary Huang 71396aee01 Moved JDBC integration tests to become unit tests 2018-05-15 16:37:55 -04:00
Gary Huang 38dfe96eb0 Fixed java 9 JDBC integration test issue.
Refactored JDBCMaps's getDBInfo utlity function because JDBCMaps is in the bootstrap classloader, and the use of java.sql.* packages in getDBInfo is failing because java.sql.* packages are part of the platform classloader in java 9.
2018-05-15 16:18:55 -04:00
Gary Huang 4b71a21487 Fixed unknown database issue from JDBC Connection constructor exception
Client will now report correct database if JDBC connection is recovered from exception.
2018-05-15 16:18:55 -04:00
Tyler Benson b154f8366c Begin 0.8.1 2018-05-15 12:27:02 +10:00
Tyler Benson dc814aeb6d Fix tests. 2018-05-11 15:19:30 +10:00
Tyler Benson 46878d24d3 Name service based on servlet context
This only applies if a service name hasn’t been set or is empty.

This is particularly useful for environments that deploy multiple war files to the same app server.
2018-05-11 13:59:03 +10:00
Tyler Benson 632d9b8da4
Merge pull request #316 from DataDog/tyler/async-flag
Enable async tracking for some non-async frameworks
2018-05-11 09:30:17 +10:00
Tyler Benson d5d24c50c7 Replace @Unroll’s with a rule to always unroll. 2018-05-10 15:24:59 +10:00
Tyler Benson 9e5e48b96e Add a feature flag to gate the name change 2018-05-10 10:54:15 +10:00
Tyler Benson b9db79e251 Enable async tracking for some non-async frameworks
This will allow tracing of additional work being done inside the servlet context.
2018-05-09 10:40:50 +10:00
Tyler Benson 5e6259233e Remove some other unknowns. 2018-05-08 16:29:55 +10:00
Tyler Benson bae79a0c3a Rename unknown to database to reduce confusion 2018-05-08 16:16:02 +10:00
Tyler Benson 9606dd3467 Fix TraceConfig tests 2018-05-08 11:00:59 +10:00
Tyler Benson 2dd36c2b79 Give more distinct names and migrate test style 2018-05-08 10:03:22 +10:00
Tyler Benson c81615b255 Allow configuration of additional trace annotations
List can be set to empty if needed.
2018-05-07 13:27:23 +10:00
Tyler Benson 441bf59e80 Add tracing for other annotations and config
Allows for specifying additional traced methods via env var or sys prop config.
2018-05-07 13:27:23 +10:00
Tyler Benson c1ac920e97 Change from enum to object for map lookup key 2018-05-07 13:25:08 +10:00
Tyler Benson 122c482dd5 Queue should block. 2018-05-07 13:23:29 +10:00
Tyler Benson 9a52303376 Apply jacoco to every java project
Some projects have ignores/whitelists, but generally coverage is pretty high.

AFAIK, this doesn’t really capture instrumentation test coverage though.
2018-05-04 16:23:32 +10:00
Tyler Benson 7dfdc2d50e Missing autoservice annotation processor 2018-05-04 15:38:41 +10:00
Tyler Benson 114f088766 Fix TLS usage 2018-05-04 14:05:06 +10:00
Tyler Benson f35e2e6ebe Remove various warnings and other cleanup
Also upgrade some plugins.
2018-05-04 14:05:06 +10:00
Tyler Benson 7c4d42ef8a Add additional test task for testing latest versions of a dependency 2018-05-04 14:04:30 +10:00
Tyler Benson 660dfc834c It actually isn’t compatable until 1.4 2018-05-04 14:03:48 +10:00
Tyler Benson 2561e72824 Do we do want to ignore proxies?
If so, we have to change the test to be compatible.
2018-05-04 14:03:48 +10:00
Tyler Benson be34eaf032 Instrument HystrixCommand and HystrixThreadPool 2018-05-04 14:03:48 +10:00
Tyler Benson 6baf09588e
Merge pull request #302 from DataDog/tyler/jdbc-depth
Prevent JDBC spans from nesting
2018-05-04 08:07:28 +10:00
Tyler Benson 30b70d8939 Prevent case where call depth might never be reset 2018-05-03 14:53:33 +10:00
Tyler Benson 732f0f2185
Merge pull request #299 from DataDog/tyler/aws-naming
Use different resource naming for aws spans
2018-05-03 13:59:09 +10:00
Tyler Benson 82353ad7d1 Use different resource naming for aws spans
Uses the pattern of `service.operation`, so for an S3 get object request, the resource name would be `S3.GetObject`.
2018-05-03 13:38:16 +10:00
Tyler Benson 84b7080860 Fix AgentInstaller ignores and @Trace naming 2018-05-03 13:03:53 +10:00
Tyler Benson 0f77ccd797
Merge pull request #297 from DataDog/tyler/kafka
Add null check to kafka
2018-05-02 08:06:37 +10:00
Tyler Benson 6f64b0e021 Prevent JDBC spans from nesting 2018-05-01 11:18:53 +10:00
Andrew Kent 3c7d4f5b13 Enable executor instrumentation by default
Executor instrumentation does not need to be turned off by default
because the instrumentation will not apply unless the TraceScope is
activated.
2018-04-30 17:27:51 -07:00
Tyler Benson 63d308e50d Misc cleanup/minor changes 2018-05-01 10:24:14 +10:00
Tyler Benson 21e26d9463
Merge pull request #301 from jonmort/ratpack-instrumentation-exceptions
Fix NoClassDefFound errors for ratpack
2018-05-01 09:57:16 +10:00
Andrew Kent a34d8f7876
Merge pull request #293 from DataDog/tyler/upgrade
Upgrade Byte-buddy to 1.8.8
2018-04-30 15:42:21 -07:00
Jon Mort c1a7f58aaf
Fix NoClassDefFound errors for ratpack 2018-04-30 15:24:42 +01:00
Tyler Benson 8abbccc09c Upgrade shadow plugin version. 2018-04-30 16:18:48 +10:00
Tyler Benson cd289308bb Remove timeouts.
Not helping as much as was hoped.  Causing extra noise in CI.
2018-04-30 11:10:18 +10:00
Tyler Benson e6179f6555 Use hardcoded operation names for integrations
Backend has issues with variable operation names.

Also reduce dependencies on OT-contribs.
2018-04-27 12:37:19 +10:00
Andrew Kent 353bc1be07
Merge pull request #294 from DataDog/ark/fix_jax
Inject jax InjectAdapter helper class.
2018-04-26 14:39:15 -07:00
Andrew Kent 5f19a56683 Inject jax InjectAdapter helper class. 2018-04-26 09:52:45 -07:00
Tyler Benson 57eade612f Upgrade Byte-buddy to 1.8.8
Also remove some erronously checked in files.
2018-04-26 22:53:45 +10:00
Tyler Benson 3db2d654f1 Fix spark instrumentation
and rebase off master.
2018-04-26 17:01:45 +10:00
Jørgen Grøndal de350c7c4f fix: attempt to enable instrumentations 2018-04-26 14:53:32 +10:00
Jørgen Grøndal bb5c413be1 fix: create a test to verify that spark is indeed responding 2018-04-26 14:53:32 +10:00
Jørgen Grøndal ede4620b52 feat: get tests running, although failing due to instrumentation not being loaded properly 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 7e233ac3c7 feat: find oldest supported spark, update version, make tests run 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 8b289c7036 fix: add versionScan for sparkjava 2018-04-26 14:53:32 +10:00
Jørgen Grøndal d0822c7458 fix: support jetty 8+, sparkjava 2.5+ 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 8bfeae4a82 fix: formatting and add version to spark java instrumentation 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 593a9b71ad fix: use google java format 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 79f1226867 fix: use correct jetty version 2018-04-26 14:53:32 +10:00
Jørgen Grøndal c49d4f6dd8 fix: add jetty handler instrumentaiton. remove filter3instrumentation. add sparkjava routematch instrumentation 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 6c4b90965c fix: support java 7 in test 2018-04-26 14:53:32 +10:00
Jørgen Grøndal 91aa3c854d fix: first attempt at sparkjava trace instrumentation 2018-04-26 14:53:32 +10:00
Andrew Kent f295b73d4b
Merge pull request #276 from jonmort/ratpack-support
Ratpack instrumentation support
2018-04-24 07:09:00 -07:00
Jon Mort 35ad8c9f49
Tidy up RatpackTest comments 2018-04-24 08:17:37 +01:00
Jon Mort b4510b7987
Add a guard against wrapping the ratpack request action multiple times 2018-04-24 08:07:48 +01:00
Jon Mort fa90af7fbc
Introduce a java 8 source set for Ratpack integration 2018-04-18 11:44:15 +01:00
Jon Mort 4875165053
Only build ratpack when using a java 8 compiler 2018-04-18 11:44:15 +01:00
Jon Mort 18da2444d1
Correctly look for classes to determine minimum ratpack version 2018-04-18 11:44:15 +01:00
Jon Mort 1ba0b69750
Resource naming and other review comments 2018-04-18 11:42:49 +01:00
Jon Mort 582c0af962
Rename to Ratpack 1.4 2018-04-18 11:42:49 +01:00
Jon Mort 6c1c830805
Apply review comments 2018-04-18 11:42:49 +01:00
Jon Mort 6e92221e5a
Ratpack instrumentaiton support 2018-04-18 11:42:48 +01:00
Tyler Benson c2cb7292c6 Remove okhttp instrumentation from servlet tests
seems to cause some confusion.
2018-04-18 11:58:07 +08:00
Andrew Kent c7cf1cf36d
Merge pull request #282 from DataDog/ark/async-refactor
Toggleable Async Propgation on the trace context
2018-04-17 09:44:41 -07:00
Andrew Kent 9bcd5677ed
Merge pull request #287 from DataDog/ark/logging
Logging
2018-04-17 09:26:32 -07:00
Tyler Benson c796260a39
Merge pull request #285 from DataDog/tyler/build-workspace
Build with Java 8, but run tests with other JDKs
2018-04-17 13:14:54 +08:00
Andrew Kent 364b3e999a Remove warning from mongo listener. Add injection debug logging. 2018-04-16 10:34:46 -07:00
Tyler Benson 001e59e0cc Build with Java 8, but run tests with other JDKs
Use workspaces to persist build between jobs.
2018-04-16 14:36:38 +08:00
Andrew Kent 35c40846ad Accept string for method params on classloader method matcher 2018-04-11 13:32:58 -07:00
Andrew Kent 2d92ed2bed Use the same operationName for all play requests 2018-04-11 13:32:58 -07:00
Andrew Kent d594d6e8db Don't create continuations when async propagation is off 2018-04-11 13:32:58 -07:00
Andrew Kent a0a11a51d0 Use ScopeManager to enable/disable low level async instrumentation. 2018-04-11 13:32:58 -07:00
Andrew Kent 0d7aa022db Refactor ContinuableScope 2018-04-11 13:32:58 -07:00
Andrew Kent 6e62b79b8f Separate executor and scala future tests 2018-04-11 13:32:58 -07:00
Andrew Kent 06b80351e3 Log where all version files are visible 2018-04-10 16:54:22 -07:00
Andrew Kent 63ae144734
Merge pull request #277 from DataDog/ark/play
Play 2.4-2.6 Instrumentation
2018-04-09 13:39:03 -04:00
Tyler Benson c518568383
Merge pull request #279 from DataDog/tyler/mem-benchmark
Add sampling for server mem usage after startup
2018-04-09 23:47:00 +08:00
Andrew Kent fc27e6b5ae Revert "Move play2.6 tests out of subproject and into sourceSet"
This reverts commit 2a42f7dc7d.
2018-04-08 10:10:12 -07:00
Andrew Kent 05b15e880e
Merge pull request #281 from DataDog/ark/jdbc_constructors
Use CallDepthThreadLocalMap in sql Connection init
2018-04-06 17:14:07 -04:00
Andrew Kent 8941d167c9 Use bootstrap CallDepthThreadLocalMap in classloader instrumentation 2018-04-06 14:11:19 -04:00
Andrew Kent 2a42f7dc7d Move play2.6 tests out of subproject and into sourceSet 2018-04-06 14:03:20 -04:00
Andrew Kent cb864b1f33 Enable play testing for java8+ 2018-04-06 12:28:01 -04:00
Tyler Benson 9caeb840f8 Add server startup memory info 2018-04-06 13:20:43 +08:00
Andrew Kent 2449810ce0 Play 2.4 and 2.6 testing 2018-04-05 17:58:04 -04:00
Andrew Kent 31c7d2d328 Use CallDepthThreadLocalMap in sql Connection init 2018-04-04 15:34:43 -04:00
Tyler Benson 79a9826863 Add the errorprone compiler. 2018-04-04 20:48:28 +08:00
Tyler Benson 73080962cb Add sampling for server mem usage after startup
Also set mem limit to make mem usage more consistent with a real environment.
2018-04-04 15:26:16 +08:00
Andrew Kent 5f8a83486a Play instrumentation cleanup
Simplify error collecting. Use slf4j to log. randomOpenPort util.
2018-04-02 17:54:22 -07:00
Tyler Benson c0f5ae0026 Begin 0.6.1 2018-03-30 13:08:45 +08:00
Tyler Benson a1a2a0db27 Improve naming for instrumentation class. 2018-03-30 10:54:15 +08:00
Tyler Benson 513cded8aa Advice shouldn’t reference fields from non-injected classes
It might not be accessible on the classpath and cause failures.
2018-03-30 10:50:07 +08:00
Tyler Benson 71eb71e53e Enable instrumentation by default and rev version. 2018-03-29 11:46:15 +08:00
Tyler Benson 8001c82527
Merge pull request #271 from DataDog/tyler/update-deps
Misc upgrades.
2018-03-29 11:30:50 +08:00
Tyler Benson b5d880c9c0
Merge pull request #272 from DataDog/tyler/add-benchmark-versions
Add additional versions for benchmarking
2018-03-29 11:27:15 +08:00
Tyler Benson adc7c42488 Add additional versions for benchmarking 2018-03-29 11:11:11 +08:00
Andrew Kent 772872bcb5 Play Instrumentation 2018-03-28 10:26:57 -07:00
Tyler Benson 528cb8f3b4
Merge pull request #267 from DataDog/tyler/perf-testing
Add additional functionality to the integration benchmark perf test
2018-03-27 11:39:24 +08:00
Tyler Benson 6c756afe7a Misc upgrades. 2018-03-27 11:26:46 +08:00
Tyler Benson fb07fb41b4 Remove duplicates in server_pid 2018-03-26 23:16:05 +08:00
Andrew Kent 457cddbb28 Add missing helper to servlet2 helper injector 2018-03-23 16:53:43 -07:00
Andrew Kent 288c9e20de
Merge pull request #269 from DataDog/run_single_idea_test
Remove opentracing from TestRunner fields to support Idea single test run
2018-03-23 08:32:53 -07:00
Andrew Kent a004337576 Remove opentracing from TestRunner fields to support single test run 2018-03-22 21:16:36 -07:00
Tyler Benson aeb1f073a3 Better support for TIbco Temporary Queues/Topics
When consuming, tibco JMS client doesn’t properly identify temporary destinations with the proper type, so we must rely on the name to determine if it is temporary.
2018-03-23 11:53:04 +08:00
Tyler Benson d9f4e134f6 Add additional functionality to the integration benchmark perf test
Include agent analysis as well as memory and CPU burn.
2018-03-22 13:43:04 +08:00
Andrew Kent 3eac216a04 Use defaultTransformers in all instrumentation 2018-03-20 15:59:11 -07:00
Andrew Kent 123c5beab3 Enable instrumenting old java bytecode 2018-03-20 15:59:11 -07:00
Andrew Kent 0714139b31
Merge pull request #264 from DataDog/ark/bs-testing
Akka Instrumentation
2018-03-20 09:42:18 -07:00
Andrew Kent 714afba71b Akka actor instrumentation 2018-03-20 09:31:54 -07:00
Tyler Benson 07694a1f99 Remove dead code. 2018-03-20 14:02:23 +08:00
Tyler Benson 19b94da7bb JAX-RS Client Tracing 2018-03-20 08:54:09 +08:00
Andrew Kent c529c06801 Ignore failures to instrument proxy classes 2018-03-19 16:07:45 -07:00
Andrew Kent 84081dc980 Move logger to test bootstrap 2018-03-19 16:07:45 -07:00
Andrew Kent 5a97c1e5bb Copied scala tests over from integration tests 2018-03-19 16:07:45 -07:00
Andrew Kent 37a24107b0 Resurrect tooling test into agent-tooling 2018-03-19 10:10:38 -07:00
Andrew Kent ce4dc58d7b Fix java9 test setup 2018-03-15 16:42:00 -07:00
Andrew Kent eac73467a7 Remove isolated agent test runner notes 2018-03-15 13:23:57 -07:00
Andrew Kent 28a350d7c1 Allow loading agent classes. 2018-03-15 12:17:03 -07:00
Andrew Kent 46a7c7c8c1 Run tests in a custom classloader with bootstrap classpath 2018-03-15 12:17:03 -07:00
Andrew Kent 84fe1fc0e3 Organize bootstrap and agent classes by known prefix. 2018-03-15 12:17:03 -07:00
Andrew Kent 878d92f5b2 Test under custom classloader 2018-03-15 12:17:03 -07:00
Andrew Kent 10e12a666a Use builtin decorators for every DDTracer 2018-03-13 12:46:48 -07:00
Andrew Kent b5b38ee4b1 Mark all http status codes 5xx as an error. 2018-03-13 12:46:48 -07:00
Andrew Kent b5759bd15c Add decorators to servlet tests 2018-03-13 12:46:48 -07:00
Andrew Kent d4ad0a0051
Merge pull request #260 from DataDog/tyler/spring-error
SpringWebErrorHandler capture stacktrace, but not set error
2018-03-13 15:46:23 -04:00
Andrew Kent 216cf688a3
Merge pull request #259 from DataDog/ark/type_hunting
Check parent classloaders when resource location fails.
2018-03-13 13:51:01 -04:00
Tyler Benson bbb0da22ab SpringWebErrorHandler capture stacktrace, but not set error
We will rely on a decorator instead to do so.
2018-03-13 12:07:31 +10:00
Andrew Kent d7c2155054 Check parent classloaders when resource location fails. 2018-03-12 18:03:52 -07:00
Andrew Kent c3c76c81e6 Trap agent errors in DDTracingClientExec 2018-03-12 16:33:13 -07:00
Tyler Benson 0fbec69b6d
Merge pull request #253 from DataDog/tyler/traceinterceptor
Implement the TraceInterceptor API
2018-03-13 08:30:01 +10:00
Andrew Kent 428e304164 Rename ContextPropagator to TraceScope 2018-03-12 10:29:50 -07:00
Tyler Benson 58c0dfa9cd Remove API jar relocation
We expect customers to be using these also, so we can’t change them.
2018-03-12 12:08:27 +10:00
Andrew Kent 45aff57740 Assert on executor span relationships 2018-03-09 12:59:12 -08:00
Andrew Kent 21180530ea Remove opentracing from dd-trace-api 2018-03-09 11:50:39 -08:00
Andrew Kent 81b70fb0e4 Disable async instrumentation by default. 2018-03-09 11:50:39 -08:00
Andrew Kent 4a11fc6d96 Whitelist Executor Instrumentation 2018-03-09 11:50:39 -08:00
Andrew Kent 9a83413141 Executor Instrumentation for Scala 2018-03-09 11:50:39 -08:00
Tyler Benson fb74c7b4cb Wrap super/parent type matchers in failSafe
To prevent errors on injected classes.
2018-03-09 14:45:08 +10:00
Tyler Benson 286e9d2d00 Add instrumentation to catch additional classloaders.
Still doesn’t work with Spring Boot because the way they structure their Jars.
2018-03-09 14:32:41 +10:00
Andrew Kent 4fffb61a32 Enable bootstrap instrumentation and helper injection. 2018-03-09 14:31:48 +10:00
Tyler Benson c99f10c0d2 Decouple trace flush from collection
Wait until all spans are finished or garbage collected before reporting trace.
2018-03-09 14:31:48 +10:00
Tyler Benson f31632be33 Remove deprecated usage. 2018-03-09 14:31:48 +10:00
Tyler Benson 5d1297f125 Extract a trace out to a specific class
Rather than it just be a list of spans…
This allows for tracking of if the trace was reported or not, and in the future to do so independently of finishing the span.
2018-03-09 14:31:48 +10:00
Tyler Benson 9b1d454eb9 Combine Threadlocal and RefCounting into single Scope
Also added additional tests.
2018-03-09 14:31:48 +10:00
Andrew Kent 5ffd2142e9 Set max stack size in bytebuddy exception handler 2018-03-07 13:14:41 -05:00
Andrew Kent b2af7491a8 Remove Jackson from AWS Helper class 2018-03-02 13:01:31 -05:00
Tyler Benson 4c66bc8ed2 Use nanotime for additional clock resolution
If a start or stop timestamp on a span is provided, the nanotime is ignored.
2018-02-23 13:13:34 +10:00
Tyler Benson 163b285868 Rename to jedis-1.4 since that’s the earliest working version
Also change instrumentation binding for better coverage.
2018-02-23 13:04:46 +10:00
Tyler Benson f4d2e6f600 Merge branch 'master' into jedis 2018-02-22 16:44:44 +10:00
Tyler Benson 574ba6d954
Merge pull request #237 from DataDog/tyler/set-timeout
Set timeouts on all the tests.
2018-02-22 13:16:04 +10:00
Tyler Benson 903248ddf2 Set timeouts on all the tests. 2018-02-21 12:09:57 +10:00
Tyler Benson a3a70e6ea3 Remove unneeded dependency on dd-trace-ot. 2018-02-21 12:08:05 +10:00
gihad 44dd384648 reusing declared values to make tests more roboust 2018-02-18 08:38:47 -05:00
gihad 692b6e7508 removed tabs for spaces 2018-02-18 08:24:54 -05:00
gihad 3613b9bd7d removed unused import 2018-02-17 22:35:45 -05:00
gihad 7c42e2e791 Added jedis instrumentation integration tests with embedded redis 2018-02-17 21:30:18 -05:00
Andrew Kent c118e1b73d Move SpringBootBasedTest to package folder. 2018-02-16 13:42:27 -08:00
Andrew Kent c6e883e042 Move bootstrap prefixes to classloader matcher 2018-02-15 19:17:19 -08:00
Andrew Kent 64e2173bf7 Set bootstrap delegation for osgi classloading 2018-02-15 19:17:19 -08:00
Andrew Kent 1820fbcbfd Bootstrap delegation for wildfly/jboss 2018-02-15 19:17:19 -08:00
Andrew Kent d0982ada9d Skip unsafe classloaders. 2018-02-15 19:17:19 -08:00
Andrew Kent 4a1db505db Enhance logging and cleanup. 2018-02-15 19:17:19 -08:00
Andrew Kent dd19b07017 Spock classloading tests 2018-02-15 19:17:19 -08:00
Andrew Kent a692d42d3c Move DatadogClassloader to bootstrap 2018-02-15 19:17:19 -08:00
Andrew Kent a28a7abd4e Run api classes on bootstrap and core agent on custom classloader 2018-02-15 19:17:19 -08:00
Andrew Kent cfef64b026 Reorganize dd-java-agent subprojects 2018-02-15 18:55:02 -08:00
Tyler Benson c9da16f334 Add resource naming instrumentation for jax-rs 2018-02-14 19:18:01 +10:00
Gihad Murad fb7a81c2bd Removed unused tag, extended Instrumenter.Configurable (disabled by default) 2018-02-13 17:56:36 -05:00
Gihad Murad 7e82985d3c Merge branch 'master' into jedis 2018-02-13 11:58:14 -05:00
Tyler Benson 3ec70ac026 Add instrumentation for spring error handling
Also add additional tests for spring boot
2018-02-13 09:07:53 +10:00
Tyler Benson 1069922233 Add additional tags for aws requests 2018-02-08 15:12:17 +10:00
Tyler Benson 3e57a7a7ea Move servlet tests to individual modules. Fix servlet 2 instrumentation.
Turns out we weren’t actually servlet 2 compatible.  That should be fixed now.  Unfortunately it appears servlet 2 also doesn’t expose the http response code, so we aren’t able to set it as a tag without custom instrumentation for each framework.

I also removed our log4j2 stuff since we’re using logback.
2018-02-08 09:27:04 +10:00
Tyler Benson 1bfceb0d53 Use Field.ERROR_OBJECT instead of string 2018-02-07 12:02:10 +10:00
Andrew Kent b557776bcf
Merge pull request #217 from DataDog/tyler/ipv4-string
Use string instead of int representation for IPv4
2018-02-06 09:25:20 -08:00
Tyler Benson 0ca6082a6e Use string instead of int representation for IPv4 2018-02-06 17:30:44 +10:00
Tyler Benson a311d5f57d Change AWS instrumentation to use constructor
Instead of requiring the builder.
2018-02-06 15:01:50 +10:00
Tyler Benson 7d28a32fba Allow instrumentation to be disabled
By default, instrumentation is enabled, and can be disabled by default by overriding the `defaultEnabled` method. Instrumentation can also be disabled individually or enabled when default is disabled.
2018-02-06 11:20:05 +10:00
Andrew Kent bff9ae2f4e Disable Kafka Instrumentation 2018-02-05 10:42:48 -08:00
Gihad Murad 1d35938996 Merge branch 'master' into jedis 2018-02-05 13:00:13 -05:00
Gihad Murad cef86291e3 Added Redis instrumentation via Jedis client 2.9 and changed spring-boot-jdbc to spring-boot-jdbc-redis 2018-02-05 12:59:42 -05:00
Andrew Kent d703095717 Patch getLogger calls to safe logger. 2018-02-04 12:09:11 -08:00
Tyler Benson 4314f71ab7 Kafka and Kafka Streams instrumentation
This includes propagation and traces for producers and consumers.
2018-02-01 20:04:40 +10:00
Andrew Kent 6f088ddd53 Remove trace decorator yaml config 2018-01-31 16:13:41 -08:00
Andrew Kent 8d53e4703d Set span.type for all integrations. 2018-01-31 16:13:41 -08:00
Andrew Kent 228f896bb6 Move default decorators to code 2018-01-31 13:18:28 -08:00
Andrew Kent 13b0df8aca Apply default decorators in unit tests 2018-01-31 12:22:43 -08:00
Andrew Kent 7920cc9d8e Set span.type tag 2018-01-31 12:22:43 -08:00
Tyler Benson 13c774e7ff Fix AWS integration
Handler was being added on builder return, which was too late.  It appears it would have also failed if an existing handler resulted in a unmodifiable list to be returned.
2018-01-31 10:18:51 +10:00
Tyler Benson 29ffdf7354 Change escape sequence since SQS doesn’t like $ characters. 2018-01-31 08:14:02 +10:00
Tyler Benson c1f73c194e Prevent headers from being added for AWS client calls 2018-01-30 11:20:17 +10:00
Andrew Kent 140c3add96
Merge pull request #205 from DataDog/ark/aws_base_instrumentation
aws base instrumentation
2018-01-25 17:55:41 -08:00
Andrew Kent d731789d38 Remove copy-paste from spring and trace instrumentation 2018-01-25 09:47:14 -08:00
Andrew Kent 839ed9f0cb Use a thread-safe synchronized weak hash map. 2018-01-25 09:47:14 -08:00
Andrew Kent f5d1eef72a Match All AWS Builder subclasses.
Match All AWS Builder subclasses. Also fix bug of potentially
replacing configure request handlers when we add the dd request handler.
2018-01-25 09:39:43 -08:00
Andrew Kent 09d4cc4f6d Use datadog prefix to configure test logger. 2018-01-24 14:01:23 -08:00
Tyler Benson ce9e5dd3de Reenable java 7 and 9 CI
Also try to make it so builds can be rerun independently by not using the workspace.
2018-01-23 15:54:05 -05:00
Tyler Benson 6fbe494934 Exclude tests that are Java 9 incompatible. 2018-01-23 14:59:10 -05:00
Andrew Kent c056a910c2
Merge pull request #199 from DataDog/ark/fix_perftest
Perf test main class rename
2018-01-23 08:58:23 -08:00
Andrew Kent 255309791d Perf test main class rename 2018-01-22 17:54:11 -08:00
Tyler Benson 9acbe5710e
Merge pull request #198 from DataDog/tyler/update
Update dependencies
2018-01-22 16:47:50 -05:00
Andrew Kent b0737e6a88
Merge pull request #196 from DataDog/ark/log_exception_handler
log exception handler
2018-01-22 12:52:57 -08:00
Ark 2d937d89c8 Exception Handler Tests 2018-01-22 12:19:55 -08:00
Ark 157801d742 Custom ByteBuddy advice exception handler 2018-01-22 12:19:55 -08:00
Tyler Benson 53a575dc74 Update dependencies 2018-01-22 15:08:28 -05:00
Tyler Benson 64d39030e5 Use workflows in Circle to test Java 7 and 8
Java 9 is commented out because there are some test failures that will be investigated later.

Some tests had to be excluded from Java 7 because they don’t have a Java 7 compatible version.
2018-01-22 13:46:50 -05:00
Tyler Benson f0d333c2ec Defend against potential NPEs
If `HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE` happens to be missing.
2018-01-19 15:48:12 -05:00
Tyler Benson 111c5ee689 Fix wrong class name being injected 2018-01-17 15:09:42 -05:00
Andrew Kent 11a2d3bdd4 Fix helpers for httpclient, and servlet3 2018-01-16 16:10:28 -05:00
Tyler Benson d68b9703fb Ensure helper classes are injected in a fixed order
This is important if they depend on each other. If the child loads first, the parent could get loaded on the wrong classloader before itself gets injected.
2018-01-16 15:12:34 -05:00
Tyler Benson b2b61e0c8c Changes required for supporting OT 0.31.0
Also updates all the contrib versions that we currently depend on to their 0.31.0 supporting versions.
2018-01-16 09:52:28 -05:00
Tyler Benson 6d3d88987b Rename dd-trace-annotations to dd-trace-api
And move DDTags over to it.
Move some `datadog.trace.api` classes over to `datadog.trace.common`.
Other misc renaming.
2018-01-09 10:07:36 +10:00
Tyler Benson becf2a5862 Lots of renaming
Module:
dd-trace -> dd-trace-ot

Packages:
Standardize on `datadog.trace` and `datadog.opentracing` as the package prefixes.
2018-01-09 10:02:06 +10:00
Tyler Benson eeb17c4522 Move @Trace and JDBC instrumentation to individual modules 2018-01-04 16:20:26 +10:00
Andrew Kent f1fa1370f9
Merge pull request #180 from DataDog/ark/macro-benchmarks
macro benchmarks
2018-01-02 14:04:13 -08:00
Tyler Benson 596a1abc65 Fix types for Intellij
Idea doesn’t like the vararg representation of `TypeDescription.Latent`.  Using an empty list is the same behavior and doesn’t get the errors.
2018-01-03 07:27:46 +10:00
Andrew Kent 905bdb1cc1 sleepTimeMS -> workTimeMS 2018-01-02 12:17:18 -08:00
Andrew Kent 9de6417f87 Allow for run-perf-test.sh custom settings. 2018-01-02 12:17:18 -08:00
Andrew Kent feab10ad9f Update benchmark-integration instructions 2018-01-02 12:17:18 -08:00
Andrew Kent ef3ba8be60 Move dd-java-agent-perftest to dd-java-agent subproject. 2018-01-02 12:17:18 -08:00
Andrew Kent 1a80e4457d Remove unused listener option 2017-12-28 09:46:58 -08:00
Andrew Kent d315f43dad Remove AgentTestRunner custom classloader.
BytebuddyAgent install already handles class retransformation, make
the custom classloader redundant.
2017-12-28 09:46:58 -08:00
Andrew Kent 1c08933bc7 AgentTestRunner doc 2017-12-28 09:46:58 -08:00
Andrew Kent d0658085bf Convert Cassandra IntegrationTest to AgentTestRunner+spock 2017-12-28 09:46:58 -08:00
Andrew Kent ca574071ff New AgentTestRunner to auto-instrument spock tests 2017-12-28 09:46:58 -08:00
Andrew Kent 9d79531f59 Move bytebuddy agent setup into tooling 2017-12-28 09:46:08 -08:00
Andrew Kent 99442cdca7 Agent Testing Project 2017-12-28 09:46:08 -08:00
Andrew Kent 981e660b5e Only add integration dependencies when building agent shadowJar 2017-12-28 09:46:08 -08:00
Andrew Kent 5701601ad9 Fix potential flicker for jms2 test 2017-12-27 18:01:11 -08:00
Tyler Benson eca6d89591 Fix flickering test. 2017-12-26 12:39:09 -08:00
Tyler Benson 5dda6844a5 Change point where servlet instrumentation is applied
This new point will capture responses returned by filters, not just the servlet target.
2017-12-26 12:27:39 -08:00
Tyler Benson 02460060bc Misc cleanup
Remove out of date “async-tracing” example since it’s more about byteman and no longer relevant.

Minor changes to improve the code test coverage…
2017-12-21 16:31:03 -08:00
Tyler Benson 4822c19c5d Remove legacy config references. 2017-12-21 16:28:18 -08:00
Andrew Kent 5acd650efe
Merge pull request #174 from DataDog/ark/instrumentation_modules
Move Helper Classes into their specific instrumentation modules
2017-12-19 17:24:19 -08:00
Tyler Benson d6056a3c27 Fix jersey servlet instrumentation which overrides method
Jersey doesn’t seem to delegate to the original method on HttpServlet, which causes those methods to not be traced properly.

This is impacting dropwizard applications which uses Jersey with embedded Jetty.
2017-12-19 16:53:58 -08:00
Andrew Kent faf63bac9d Don't load classes on agent classloader during injection 2017-12-19 16:52:10 -08:00
Andrew Kent 75edd2bee4 Initialize AgentVersion classes in global tracer init 2017-12-19 16:00:03 -08:00
Andrew Kent f5ecd47379 Remove dead code 2017-12-19 09:06:38 -08:00
Andrew Kent e9b6f5278d Initialize GlobalTracer in TracingAgent 2017-12-19 09:06:38 -08:00
Andrew Kent 069f481884 Don't inject helpers into the same classloader twice 2017-12-18 16:44:12 -08:00
Andrew Kent 887a864118 Automatically pull integrations into the agent 2017-12-18 16:44:12 -08:00
Andrew Kent f68406113a Remove helpers from agent 2017-12-18 16:44:12 -08:00
Andrew Kent 0abf3f342d Use HelperInjector to include instrumentation helper classes.
Move instrumentation helpers out of helpers subproject and into the
appropriate instrumentation module.
2017-12-18 16:44:12 -08:00
Andrew Kent 876ea794e9 Helper Injector Transformer 2017-12-14 18:40:40 -08:00
Andrew Kent 5a57623fb6 Helper Injection test 2017-12-14 18:40:40 -08:00
Andrew Kent b5c2a3af63 reuse class file locator for DDAdvice 2017-12-14 18:40:40 -08:00
Andrew Kent 7f643ab680 Move jar utils to TestUtils 2017-12-14 18:40:40 -08:00
Andrew Kent 9d933d2109 Skip c3p0 proxy classes. 2017-12-11 08:17:59 -08:00
Andrew Kent 95550ac9d6 Save connection info after connection construction. 2017-12-11 08:17:59 -08:00
Andrew Kent 28bc1e703e
Merge pull request #172 from DataDog/tyler/benchmark
Improve benchmarks to highlight more interesting differences
2017-12-10 08:20:37 -08:00
Andrew Kent 9fbe70228f
Merge pull request #171 from DataDog/ark/tracer_init
init global tracer in premain
2017-12-10 08:09:04 -08:00
Tyler Benson e6895e4f6c Improve benchmark and caching optimizations. 2017-12-08 19:17:59 -08:00
Andrew Kent b231306f57 init global tracer in premain 2017-12-08 16:56:43 -08:00
Andrew Kent 394f36d700 Fix idea compile for mongo modules 2017-12-08 14:15:36 -08:00
Tyler Benson 003b7d1caf Extract test classes for benchmark testing. 2017-12-08 12:58:46 -08:00
Andrew Kent 42832e77f5 Add agent's classloader to default instrumentation location strategy
The transformer needs the agent's classloader to resolve advice
classes at transform time. Also stop using reflection to register classloads.
2017-12-08 09:40:14 -08:00
Andrew Kent 6a646009fa Test system class sibling classloader
Test cases where the classloader of the instrumented class cannot
resolve agent advice classes.
2017-12-08 09:34:16 -08:00
Andrew Kent 34791bbdbf Move common instrumentation advice settings into DDAdvice 2017-12-08 09:34:16 -08:00
Tyler Benson 6f985c15bf Remove Byteman now that instrumentation is migrated
At some point, we should refactor the managers since this leaves them in an awkward state.
2017-12-07 13:11:26 -08:00
Tyler Benson 2e6ff44976 misc cleanup 2017-12-07 12:06:58 -08:00
Tyler Benson d933a4049a Move OkHttp instrumentation to byte buddy 2017-12-06 18:07:17 -08:00
Tyler Benson f807a5da18
Merge pull request #163 from DataDog/tyler/jmh-retransform
Add JMH Benchmarks
2017-12-06 08:04:07 -08:00
Tyler Benson 78210d6e42 Add additional cases for benchmarking. 2017-12-05 16:10:29 -08:00
Tyler Benson caf3953360 Add JMH Benchmarks 2017-12-04 17:30:54 -08:00
Andrew Kent 6fa303058f ApacheHttpClient bytebuddy instrumentation and tests. 2017-12-01 10:54:32 -08:00
Andrew Kent b6d9c13d0c Make cassandra matching stricter 2017-11-29 09:11:31 -08:00
Tyler Benson 3ea7ad73ed Fix version scan plugin
Now you can run `./gradlew :dd-java-agent:integrations:datastax-cassandra-3.2::scanVersionsReport -PshowClasses` to show you the classes you can use for that version range.
2017-11-28 18:34:56 -08:00
Andrew Kent 7298b0a31a Convert datastax cassandra instrumentation to bytebuddy 2017-11-28 17:01:04 -08:00
Andrew Kent 47b1eec6da Mongo Async Instrumentation and embedded mongo tests. 2017-11-27 09:18:49 -08:00
Andrew Kent 86a76ec588 Convert Mongo instrumentation to ByteBuddy 2017-11-27 09:18:49 -08:00
Tyler Benson 9ba647a2ac Add instrumentation for MessageListener 2017-11-17 16:02:09 -08:00
Tyler Benson 871ce37f80 Migrate JMS to Byte Buddy and add JMS 1 support
This does not yet include instrumentation for MessageListener.
I think there is actually no difference between the instrumentation so we should combine them.
I also added TEXT_MAP as a format that maps to the HTTP Codec.  There is some remapping inside the instrumentation to remove dashes before setting as a property.  This should also be changed when an official format is defined.

This also currently has a problem with Spring Boot applications as the JMS Util references classes not on the system classpath (it needs to be injected into the child classpath)
2017-11-17 12:06:30 -08:00
Andrew Kent b85b9b0c5d drop opentracing-mongo dependency 2017-11-13 10:34:07 -05:00
Andrew Kent dd8f71e164 MongoHelper query scrubber test 2017-11-13 10:34:07 -05:00
Andrew Kent 9cb097b783 Replace TracingCommandListener with DDTracingCommandListener 2017-11-13 10:34:07 -05:00
Tyler Benson ff4f39779e Fix transitive dependencies
New instrumentation was bringing in their dependencies into the jar, resulting in a much larger jar file.  This should resolve that.
2017-11-10 11:45:00 -05:00
Tyler Benson 66355feddb
Merge pull request #148 from DataDog/tyler/remove-super-matchers
Migrate expensive integrations using super matchers to byte buddy.
2017-11-10 09:42:48 -05:00
Tyler Benson 51f903acd6 Ensure helpers are injected on a classloader that has instrumented code. 2017-11-09 15:34:05 -05:00
Tyler Benson 294320acb5 Add exception handling and supression for advice.
Also centralize classloader matching.
2017-11-09 14:45:03 -05:00
Tyler Benson f61935452b Handle case where SQL is not saved in map properly.
Otherwise this could result in an NPE.
2017-11-08 14:54:32 -05:00
Tyler Benson e96c084b51 Migrate aws instrumentation to byte buddy. 2017-11-06 14:25:28 -08:00
Tyler Benson e5924b3fe9 Migrate servlet instrumentation to byte buddy. 2017-11-06 11:28:06 -08:00
Tyler Benson 4199d123c2 Better null handling for JDBC instrumentation
This also reduces the log noise for transformation issues around synthesized classes.
2017-11-01 11:30:05 -07:00
Tyler Benson e8bbc849bb Set resource name using the route pattern from spring.
This provides a better static resorce name than trying to conjure one out of the original URL.
2017-10-30 13:24:18 -07:00
Tyler Benson cacba43435 Use byte buddy for @Trace instead of byteman. 2017-10-26 14:45:16 -07:00
Tyler Benson 25029b4109 Add integration tests for in-memory jdbc drivers. 2017-10-25 10:37:37 -07:00
Tyler Benson 14b834a358 Ignore generic classes and proxy classes 2017-10-25 10:36:37 -07:00
Tyler Benson 0d64192d91 Set resource name and span type correctly. 2017-10-24 10:28:53 -07:00
Tyler Benson ef5481cc27 Change operation name and set service name. 2017-10-24 10:28:53 -07:00
Tyler Benson b40bcf9973 Add automatic instrumentation for JDBC
This instrumentation creates spans for Statements and PreparedStatements. It also captures the corresponding SQL and additional connection info.  ResultSet could be considered for future instrumentation to capture even more of the DB interaction time.

This integration uses Bytebuddy instead of Byteman as the many methods to instrument would have been messy in Byteman.
2017-10-24 10:28:53 -07:00
Tyler Benson 423b701049 Downgrade byteman library to non-beta version.
This is in effort to reduce some performance problems.
2017-10-24 08:15:37 -07:00
Tyler Benson f2d1f0c209 Capture and report errors and stacktraces 2017-10-13 16:32:13 +02:00
Tyler Benson af5ef5e624 Fix name overloading confusion.
references to entries below were using the wrong instance and thus not being cleaned properly.
2017-10-13 14:08:03 +02:00
Tyler Benson 33308eff80 Change visibility to protected
This should bypass an issue with the parent class being loaded on a different classloader, resulting in an IllegalAccessError.
2017-10-10 16:02:43 -04:00
Tyler Benson cfe36d03a8 Fix headers to match standard DD trace headers
Also prevent NullPointerExceptions in servlet handler if active span somehow missing.
2017-09-27 07:44:43 -07:00
Tyler Benson cffde51b9e Add funky locking to ensure consistent execution for jetty test. 2017-09-21 13:47:28 -07:00
Tyler Benson fb133c8905 Update servlet operation name. 2017-09-21 08:12:44 -07:00
Tyler Benson 30721d00dc Replace tomcat/jetty specific integ with generic servlet integ.
This should also work with things like Weblogic and Websphere with the main requirement being Servlet 2.3 or above compatibility.
2017-09-20 16:39:43 -07:00
Tyler Benson 19af7840fb Adjust logging a bit more. 2017-09-19 10:53:14 -07:00
Tyler Benson 9c39bb64ae Fix aws version in readme, add finals and reformatting 2017-09-18 10:49:08 -07:00
Tyler Benson 4b26b787b8 Improve error logging for defineClass 2017-09-18 10:33:25 -07:00
Tyler Benson b430eedb27 Prevent NPE for double registrations
When using jetty with spring boot, the helper is being called more than once, the second time resulting in null being returned by `addFilter`.  This should prevent an error from being thrown.
2017-09-13 13:00:25 -07:00
Tyler Benson 0b1c7f022a Helper classes also need the slf4j relocation treatment. 2017-09-12 16:02:33 -07:00
Tyler Benson 4e106679a7 Move packages around and rename dd-trace inside agent
This avoids conflicts if the user already has dd-trace included in their app.
2017-09-11 15:00:00 -07:00
Tyler Benson 3bc153241b Abstract core dependencies for central management 2017-09-07 16:38:21 -07:00
Tyler Benson 62c167de16 Inject helper classes into application’s classloader
This is important for things like Spring Boot’s executable jar classloader which keeps all the jars individually rather than on the system classloader.
2017-09-06 11:08:28 -07:00
Tyler Benson c652aa262c Remove dependency on OpenTracing Agent
It brings in a bunch of duplicate and unnecessary dependencies since it also bundles them in its’ jar.  Copying the OpenTracingHelper class to our repo until we can refactor it away.  It also is Apache 2 licensed so I think we should be ok.
2017-09-05 16:48:22 -07:00
Tyler Benson 3df63d9e53 Split up manager responsibility by job
`TraceAnnotationsManager` is responsible for generating the rules for `@Trace`ed methods, `InstrumentationRulesManager` is responsible for our custom built Integrations.
2017-09-05 13:52:11 -07:00
Tyler Benson a8908c06d8 Move helpers to a separate project for future bundling
This will allow us to eventually inject these classes in the correct classpath rather than having them on the system classpath.
2017-09-05 12:19:22 -07:00
Tyler Benson 8ba3c0f156 Fix jacoco for integration tests
Also change slf4j package since it’s important for configuring log levels.
2017-09-05 11:43:37 -07:00
Tyler Benson b85b7aed1d Turns out Byteman doesn’t like $this as a reference
Their docs were misleading.

Also fix the readme’s maven dependency.
2017-09-01 14:22:34 -07:00
Tyler Benson ec08b37757 Use package-renamed Simple SLF4J logger
This will prevent us from respecting any existing SLF4J implementation and just print to the console.  This is important for things like Spring Boot that never put a SLF4J implementation on the system classpath, but instead keep it inside the jar.
2017-08-28 14:57:46 -07:00
Tyler Benson a0d4f2ca76 Report version from main
This allows running the agent as an executable jar to report the version number.

Also repot version scan errors better.
2017-08-28 13:39:19 -07:00
Tyler Benson 9a9da92b59 Add version checking via class/method for jetty 2017-08-24 17:38:16 -07:00
Tyler Benson 59d1be4ea7 Merge pull request #112 from DataDog/tyler/version-verify
Add version scan verification and test in CI
2017-08-24 17:20:48 -07:00
Tyler Benson 1b63a53167 Add version scan verification and test in CI 2017-08-24 17:15:22 -07:00
Tyler Benson 82a9c73c6b Merge pull request #111 from DataDog/tyler/servlet-async
Mark servlet trace filter as async supported
2017-08-24 07:47:15 -07:00
Tyler Benson 233d241e07 Mark servlet trace filter as async supported 2017-08-23 16:01:42 -07:00
Tyler Benson ab7598804e Update dropwizard and spring boot readmes. 2017-08-23 15:35:55 -07:00
Tyler Benson 9ff937557e Ensure rules are loaded on the right classpath for Spring Boot 2017-08-23 14:30:18 -07:00
Tyler Benson db2758af19 Merge branch 'master' into tyler/versions
# Conflicts:
#	dd-java-agent/src/main/java/com/datadoghq/trace/agent/InstrumentationChecker.java
2017-08-23 09:08:40 -07:00
Tyler Benson 55edba486a Order rules alphabetically and ensure matches. 2017-08-22 17:25:45 -07:00
Tyler Benson 34f0922740 Add property to gradle.properties for easier debugging
When using a jar with packages renamed, the line numbers don’t match the classes in the IDE.
2017-08-22 17:23:28 -07:00
Tyler Benson 60cfb392c4 Fix grouping so any rule can allow module to be active. 2017-08-22 10:33:24 -07:00
Guillaume Polaert 1086439da8 log as info level 2017-08-22 15:32:58 +02:00
Guillaume Polaert 78c99f4574 Add more logs to debug 2017-08-21 14:58:08 +02:00
Tyler Benson aad3746c2b Fix tests 2017-08-18 11:12:06 -06:00
Tyler Benson 988a3d0fdf Cleanup plugin and add identifying classes to config
Still missing jetty since that requires method level searching.
2017-08-18 11:11:37 -06:00
Tyler Benson 860df9856c Enable instrumentation to scan for classes for version matching 2017-08-18 11:11:37 -06:00
Tyler Benson 03ca35426c Convert InstrumentationCheckerTest to Spock 2017-08-18 11:11:37 -06:00