Commit Graph

217 Commits

Author SHA1 Message Date
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
Tyler Benson 9b73fed3c5 Add plugin that scans for classes unique to version range
Does not include method signatures yet.  Still a work in progress.

Execute with `./gradlew scanVersions --parallel`.
Using `--parallel` is strongly recommended.
2017-08-18 11:11:37 -06:00
Guillaume Polaert 2f65e93167 Remove OTARULES from OT agent 2017-08-16 11:16:12 +02:00
Tyler Benson 5dff2f1249 Rename google and byteman dependencies
But exclude the ones that cause the tests to fail.
Also add a test to verify the correct version of guava is loaded with the agent running.
2017-08-08 12:29:14 -07:00