Commit Graph

52 Commits

Author SHA1 Message Date
Brian Devins-Suresh aec2fad9db Use the parent interface 2020-04-21 09:59:12 -04:00
Brian Devins-Suresh dc43f3f54c We don't depend on a 2.3 type anymore 2020-04-21 09:59:12 -04:00
Brian Devins-Suresh 94750a83c9 Rework servlet 2 to not wrap HttpServletResponse objects 2020-04-21 09:59:12 -04:00
Tyler Benson 2743e64fd3 Exclude more weird versions. 2020-04-20 21:59:24 -04:00
Tyler Benson ce006e1405 Ensure RequestDispatcher span is part of expected trace 2020-04-14 14:56:16 -04:00
Tyler Benson 64161d93c9 Add instrumentation to detect the route at the beginning of the spring request
Instead of waiting till the handler is called, otherwise if a response is returned by a filter then the proper name wouldn't be set and would fall back to the URL.
2020-04-14 14:19:14 -04:00
Tyler Benson 97efa307d3 Stop setting error tag and update tests. 2020-04-13 13:59:11 -04:00
Laplie Anderson 6411ee358f Remove Http*Decorators from method signatures in tests 2020-03-12 13:13:17 -04:00
Laplie Anderson 6cd530a541 Move decorators to bootstrap 2020-03-11 18:41:29 -04:00
Tyler Benson e4ca33d487
Merge pull request #1307 from DataDog/tyler/onmethodexit
Improve consistency of `@Advice.OnMethodExit` params
2020-03-11 15:29:58 -07:00
Tyler Benson e0b46da375 Improve consistency of `@Advice.OnMethodExit` params
And ordering of some `helperClassNames`
2020-03-10 13:11:22 -07:00
Laplie Anderson 1a35ced75e Tomcat access log tests 2020-03-09 16:15:57 -04:00
Laplie Anderson 4dce8776e1 Add traceId/spanId as request attributes 2020-03-09 16:15:40 -04:00
Tyler Benson aca4b9ece9
Merge pull request #1300 from DataDog/tyler/servlet-forward
Stop creating a "top level" servlet span when in a forward/include situation
2020-03-06 11:46:27 -08:00
Nikolay Martynov 517ecca4c1 Remove explicit concurrent instrumentation dependencies
Since we include concurrent instrumentation for all instrumentatin
projects now there is no point in including it in every instrumentation.
2020-03-06 13:50:51 -05:00
Tyler Benson 7bf85dbb97 Restrict dispatcher instrumentation to 2 arguments
To reduce risk of duplicate spans when delegating to a 2+ arg method.
2020-03-05 16:01:53 -08:00
Tyler Benson 2802009e01 Stop creating a "top level" servlet span when in a forward/include situation.
Effectively reverting 6703bd96bb

The expectation is that these are not really separate external requests, but a semantic way of processing a single request.
2020-03-05 12:52:13 -08:00
Tyler Benson 372ba221d2 Invert the classloader matcher to remove the double negative. 2020-03-05 10:14:33 -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 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 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 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
Laplie Anderson d45ead1284 split matching into safeExtendsClass and safeHasInterface 2020-02-19 21:22:17 -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 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
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
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
Laplie Anderson f181fa721f Add classloader matcher to muzzle scan 2019-12-20 16:17:08 -05: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 99992df998 Fix tagging query string for additional servers
Add test to common test suite and adapt each test.
2019-12-17 09:33:27 -08:00
Tyler Benson b00cdee54a Capture full servlet URL in decorator
This is needed in order to tag the query string (when configured).

Full test suite will follow in future PR.
2019-12-12 13:47:40 -08:00
Trask Stalnaker 1987e86ebf Normalize tag verification order 2019-11-22 10:59:45 -08:00
Tyler Benson 10b0f35235
Merge pull request #1090 from DataDog/tyler/servlet-path
Add servlet.path tag
2019-11-22 09:18:14 -08:00
dougqh 6b096c2240 Replacing Advice.class references
Replacing Advice.class references with string construction.

This stops the JVM from loading the Advice classes which are used as templates for byte buddy and doesn't ever need to be run directly.

This eliminates ~130 class loads at start-up -- and saves 0.5MiB in metaspace
2019-11-18 16:09:30 -05:00
Tyler Benson 53b4e5db19 fix test 2019-11-12 15:17:35 -08:00
Tyler Benson fdf2241e5f Add servlet.path tag 2019-11-11 15:54:21 -08:00
Tyler Benson 2432a92230 Remove experimental jdbc and servlet integrations until further evaluation 2019-11-06 11:45:00 -08:00
Tyler Benson 2d3b644c84
Merge pull request #1080 from DataDog/tyler/rename-beta-configs
Rename config key for beta/experimental instrumentation.
2019-11-05 08:44:33 -08:00
Tyler Benson 4f853f5f0c Rename config key for beta/experimental instrumentation.
Postfix the existing config names with `-beta` for `servlet` and `jdbc`.

To avoid any risk that the config was explicitly enabled for an unrelated reason resulting in unexpected behavior when upgrading to the latest version.
2019-11-04 13:41:33 -08:00
Laplie Anderson bf4587c23d Missed a few test helper methods 2019-11-04 12:49:35 -05:00
Tyler Benson a903f20dc4
Merge pull request #1050 from DataDog/tyler/servlet-depth
Add new integration for Servlet Filters, HttpServlet, and RequestDispatcher
2019-10-28 08:39:56 -07:00
Tyler Benson 6703bd96bb Fix servlet propagation for “tail-call” situations
Sometimes servlets will call another servlet by “resetting” the request object.  This maintains the attributes previously set, including the span.  We want to allow the trace to start if there’s no “active trace” even if there is a span attribute.
2019-10-25 17:01:47 -07:00