Commit Graph

1545 Commits

Author SHA1 Message Date
Luca Abbati de6f33c035
Draft of per-classloader netty AttributeKey definition 2019-07-16 11:02:25 +02:00
Luca Abbati fac3a93445
Make netty 4.0 attributes definition compatible with Apache Atlas 1.1.0
The issue we are trying to fix here seems to be a result of two concurrent issues.

Cassandra driver's used by atlas 1.1.0 brings in a old version of netty < 4.0.23.

In version 4.0.25 netty raised exception in `UniqueName` class for duplicate name

```
if (map.putIfAbsent(name, Boolean.TRUE) != null) {
            throw new IllegalArgumentException(String.format("'%s' is already in use", name));
        }
```

This changed in 4.0.26 where exception was not thrown, instead the duplicate key was just ignored.

```
    protected UniqueName(String name) {
        this.name = checkNotNull(name, "name");
        id = nextId.incrementAndGet();
    }
```

Now this alone would not be enough. The only way I was able to reproduce is if two different class loaders tries to load the
same class `AttributeKeys` twice.
I tried to look into Atlas source code (which is huge) and I could not find a clear path of how this would be possible.

Further more, looking at some build scripts that a user experiencing this issue provided,
it looks like they are doing everything correctly and there is nothing they should change.

In conclusion, I believe that even if this is not a very clean approach,
we should be resilient to this use case, when a customer using netty <4.0.25 in an
older version of Apache Atlas (or with some sort of class loader behavior).
2019-07-16 11:02:25 +02:00
Nikolay Martynov 1fbe395586 Avoid Jetty 10 in servlet-3 test
Alpha version of Jetty 10 was released and it seems to be compiled for
java versions above 8 so tests fail on java8.

Limit latest dep Jetty tests to Jetty 9 for now.
2019-07-15 10:15:21 -04:00
Nikolay Martynov 3191eb7058 Avoid Jetty 10
Alpha version of Jetty 10 was released and it seems to be compiled for
java versions above 8 so tests fail on java8.

Limit latest dep Jetty tests to Jetty 9 for now.
2019-07-15 10:15:16 -04:00
Luca Abbati 5b3d4b8e35
Merge pull request #905 from DataDog/labbati/jmx-as-daemon
Run JmxFetch app as a daemon
2019-07-15 08:18:09 -04:00
Tyler Benson ec931463a4
Merge pull request #885 from DataDog/tyler/instance-name-testing
Additional testing for split-by-instance config
2019-07-15 01:27:49 -04:00
Nikolay Martynov 6516bd7ad7 Minor comment update 2019-07-12 16:26:39 -04:00
Nikolay Martynov f4aa8be7c5 Make kafka streams test more stable 2019-07-11 11:07:17 -04:00
Nikolay Martynov 3ecc7c123d Wait for traces in kafka streams tests 2019-07-11 10:51:55 -04:00
Nikolay Martynov 765b76b0ae Fix kafka-streaming tests broken by records(TopicPartition) instrumentation 2019-07-11 10:31:18 -04:00
Nikolay Martynov 3e8b65290a Instrument records(TopicPartition) in kafka consumer 2019-07-11 10:30:44 -04:00
Nikolay Martynov 142477ed0a Merge branch 'master' into mar-kolya/kafka-trace-records 2019-07-10 18:15:51 -04:00
Tyler Benson a13e4a0229
Merge pull request #910 from DataDog/labbati/jersey-1.19
Extend support for Jersey client  to 1.9+
2019-07-10 15:02:11 -06:00
Tyler Benson 4501dbe920
Merge pull request #899 from dpratt/fix-akka-http
Fix akka-http instrumentation.
2019-07-10 14:39:47 -06:00
Tyler Benson 5624cef4af fix check 2019-07-10 14:08:50 -06:00
Tyler Benson 4486c3a6ff Change jax-rs-client project names to match versions 2019-07-10 13:25:48 -06:00
Tyler Benson 5526fd0ca3 Jersey client 1.9 cleanup 2019-07-10 13:11:09 -06:00
Nikolay Martynov f484295460 Kafka instrumentation: make return type more general in instrumentation matching 2019-07-10 13:47:20 -04:00
Luca Abbati c16a0844d8
Enable tracing of jax-rs client in sun package 2019-07-10 13:05:12 -04:00
Luca Abbati 3ab63e7005
Some refactoring in tests 2019-07-10 08:43:31 -04:00
Luca Abbati 0f5dd2413c
Add tests for Jersey V1 client 2019-07-09 22:49:44 -04:00
Luca Abbati b62266fd52
First draft of jersey 1.19 client instrumentation 2019-07-09 21:13:00 -04:00
Luca Abbati 2e41e94774
Update jmxfetch to version 0.30.0 2019-07-08 14:43:29 -04:00
Nikolay Martynov 058c4ec567 Trace 'records(TopicPartitions)` in kafka consumer 2019-07-08 11:19:17 -04:00
Luca Abbati 2027027e46
Explitely run JmxFetch app as a daemon 2019-07-03 15:24:51 +02:00
Nikolay Martynov ffe4aabf8f Specify version of hibernate-annotation
Using '+' pushes version of hibernate-core up as well and we do not
want thay.
2019-07-02 10:41:55 -04:00
Nikolay Martynov 94b2e91c3a Fix hibernate DTD urls
Looks like old urls redirect to https with broken cert now
2019-07-02 10:41:32 -04:00
Luca Abbati 58da60ac4e
Fix typo in comment 2019-06-25 00:33:18 +02:00
David Pratt 681420a004 Remove SuperPool instrumentation.
By definition, a Flow generated by a SuperPool does not respect ordering
of requests and responses, and in fact will typically only rarely actually
behave in the fashion that the instrumentation expects. The previous implementation
would start a span for a given request before submitting it as input to the flow,
and close the span with whatever response is next emitted by the flow. This
request will rarely (if ever) be the actual response for the request that
started the span. For more info, see the official docs at
https://doc.akka.io/docs/akka-http/current/client-side/host-level.html#configuring-a-host-connection-pool

Additionally, compiling this instumentation against scala 2.11, and only
scala 2.11 can (and does) cause significant problems at runtime due to the
fact that Scala is explicitly not binary compatible across major versions.
2019-06-24 11:01:48 -05:00
Luca Abbati 8022d0e170
Remove redundant .class suffixes in groovy test files 2019-06-24 17:18:05 +02:00
Luca Abbati d58c252085
Add tests for netty channel handlers added through channel initializers 2019-06-24 16:27:50 +02:00
Luca Abbati 27e0e4492e
Calculate depth per handler class in netty channel pipeline instrumentation 2019-06-24 16:27:50 +02:00
Luca Abbati f01d473d10
Merge pull request #894 from DataDog/labbati/log4j
Support log trace injection for log4j 1.x and log4j 2.x when used without Slf4j
2019-06-21 16:36:26 -04:00
Luca Abbati 8ee6d26d15
Rename log4j 1 and 2 instrumentation to log4j1 and log4j2 respectively 2019-06-21 15:56:27 -04:00
Luca Abbati f279a612f7
Minor fixes to typos and code styles 2019-06-21 15:53:13 -04:00
Luca Abbati ac7abcdfa8
Fix expression to include tracing of log4j1 MDC in agent installer 2019-06-21 15:52:20 -04:00
Laplie Anderson 2e66aea741 Fix formatting issue 2019-06-21 15:52:01 -04:00
David Pratt bf7bbf31f8 Fix akka-http instrumentation.
Remove compiled Scala artifacts from the actual instrumentation. Scala
is not binary compatible across major versions, and having
AkkaHttpClientTransformFlow.scala be in the artifact causes problems
when using anything but Scala 2.11.

Having the AkkaHttpClientTransformFlow implementation be in pure java
utilizing the Akka-stream Java DSL ensures that this will work across
any given Scala major version.
2019-06-21 14:51:04 -05:00
Laplie Anderson ad822d81f9 Fix imports to match project style
* imports in groovy and the ordering of lombok was incorrect
2019-06-21 14:19:45 -04:00
Laplie Anderson d80406843f Add "http.query.string" and "http.fragment.string" to DDTags 2019-06-21 14:05:34 -04:00
Luca Abbati d0f17e4b9d
Rename log context injection test base 2019-06-21 08:54:13 -04:00
Luca Abbati 0916a00a5e
Fixed unnecessary semi-colon in groovy class 2019-06-20 21:42:50 -04:00
Luca Abbati 27b4db8861
Remove legacy transitive dependencies no longer bundled with the JVM from muzzle tests 2019-06-20 21:29:46 -04:00
Luca Abbati cba8ba1221
Refactor classes of log injection services to improve readability 2019-06-20 18:38:00 -04:00
Luca Abbati b7393df473
Remove jms functionality brought in by log4j1.X dependency 2019-06-20 18:23:40 -04:00
Luca Abbati 4d1d5d1012
Introduce the mandatory test suite that a supported logging library MUST satisfy for log injection 2019-06-20 18:15:19 -04:00
Luca Abbati c2bd5eefa0
Remove method that was copied and pasted from slf4j instrumentation but seems not to be relevant here 2019-06-20 17:55:43 -04:00
Luca Abbati ecdf6664ef
Refactor log4jX instrumentations 2019-06-20 17:36:10 -04:00
Luca Abbati 34d589e536
Create a reusable log context listener to be used for slf4j, log4j1 and log4j2 2019-06-20 17:07:28 -04:00
Luca Abbati dcf0f57030
Add support for log4j 1.x 2019-06-20 16:08:49 -04:00