Reduced the size of dd-java-agent jar by about 2 MB. Jackson is not removed completely though as it is still a dependency of jmxfetch.
Trace serialization is primarily done directly with msgpack.
Response deserialization and LoggingWriter serialization is done with mochi.
Msgpack Serialization buffer still not being reused though.
First disruptor (TraceProcessingDisruptor) does processing, which is currently limited to serialization, but in the future can do other processing such as TraceInterceptor invocation.
Second disruptor (BatchWritingDisruptor) takes serialized traces and batches them into groups and flushes them periodically based on size and time.
Adding StatsDMonitor to DDAgentWriter
Modified Writer.createAgentWriter to read the health Monitor configs and construct StatsDMonitor when health metrics are enabled
Updated DDTracerTest to check for use of appropriate Monitor class depending on the Config
Serialize payloads as they arrive, send to agent when size exceeds 5MB.
If a flood of traces fills up the RingBuffer, we still count the traces that are discarded for stats reporting.
Do we want to allow configuration of the RingBuffer size?
The build fails from time to time complaining about this class not
being tested. Looks like randomness of thi is due to Gradle's caching.
Ideally we would like to have this class tested, but Lombok injecting
logger doesn't really provide much of a room to test there.
This will allow the java agent to receive unsigned 64 bit integers without overflow.
Also upgraded MsgPack to handle the serialization of such Strings as numbers in JSONs.
There was an incompatible mix of jackson dependencies which caused the app to not start up. Changed the tracer client to use an old version, but allow the agent to still use a newer version (since it is shadowed).
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.
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.