Initial version of transactions tracking implementation for DSM by kr-igor · Pull Request #9899 · DataDog/dd-trace-java

What Does This Do

Initial transaction tracking implementation.

  • Support for extractors configuration
  • Serialization for extractors
  • API for transaction tracking
  • Extractors for http / kafka (in/out)
  • Updated / added unit tests

Motivation

Multiple customers mentioned the need to track individual message across multiple service and environments and log messages which haven't reached the end of the pre-defined pipeline.
See this document for details.

Additional Notes

Transaction tracking is currently in closed beta, so the configuration flags will be documented after public availability.

Technical details

trackTransaction method can be used to add transaction information to the DSM payload.
Transactions are accumulated in the in-mem container until they reach 512kb in size or until the DSM flush loop executes.
All http requests / kafka produce and consume operations now check for DSM extractors and apply them if any were registered. The overhead for customers without DSM / Extractors should not be noticeable, as we only execute 1 additional EnumMap lookup.