Releases: DataDog/dd-trace-java
Releases · DataDog/dd-trace-java
0.3.0.RC2
Priority Sampling
Priority sampling is a new feature for sampling traces. #192
- The sampling rate is set per service name by the core agent.
- Additionally, a priority flag is propagated for external calls between java hosts.
- This allows sampled traces to be saved across external calls.
- Requires the Datadog Agent 5.19 or greater.
- Further reading: https://github.com/DataDog/datadog-trace-agent/wiki/Distributed-Priority-Sampling
Bugfixes
- Log exceptions to datadog debug log instead of stderr #196
- Defend against NPEs in Spring Instrumentation #195
Internal Changes
- Test Java 7 and 9 in CI #201
0.3.0-RC1
Breaking changes
- Deprecated
dd-trace.yaml
config has been removed. Going forward, config must be done using environment variables or system properties (#183) - Artifact names have changed: (#184)
dd-trace
->dd-trace-ot
dd-trace-annotations
->dd-trace-api
- Package names have been standardized: (#184)
datadog.trace
datadog.opentracing
- OpenTracing bindings have been upgraded to
0.31.0
. If you need support for0.30.0
, consider using the compatibility layer (#126)
Bugfixes
- Prevent
ClassNotFoundException
by ensuring consistent load order of helper classes. (#187 #190 #194)
Migrate from 0.2.x to 0.3.0-RC1
- If you're only using
dd-java-agent
then you only need to migrate your configuration. Reference yourdd-trace.yaml
file and set the appropriate environment variables or system properties according to your application server. System properties can usually be set along side thejavaagent
flag. - If you're using the
@Trace
annotation, you will need to:- Update the artifact name in your gradle or maven config
- Replace package names from
import com.datadoghq.trace.Trace
toimport datadog.trace.api.Trace
- If you're using the OpenTracing bindings, you'll need to update how the
DDTracer
is created. Instead of usingDDTracerFactory
, you should call aDDTracer
constructor directly. Alternatively, you could consider using TracerResolver.
For example:
Tracer tracer = DDTracerFactory.createFromConfigurationFile();
io.opentracing.util.GlobalTracer.register(tracer);
Would change to:
Tracer tracer = new DDTracer();
io.opentracing.util.GlobalTracer.register(tracer);
For assistance migrating manual instrumentation, please contact support.
0.2.12
Known Issues
- This release is a bit picky about overriding default configs. This will be resolved in the next release, but for now:
- To override host or port, you must specify the type, host, and port, otherwise it won't work and fall back to the default.
- For systems using non-system classloaders (for example Spring Boot Executable Jars), there is a problem with some helpers that presents as a
ClassNotFoundException
.
Improvements
- Configure the Java Client with system properties and environment variables (#178)
- NOTE: Beginning with this release, YAML config is deprecated and will be removed in the next release.
- Please migrate config using Java Client Config Documentation before updating further.
- Enhance servlet Instrumentation
Internal Changes
0.2.11
0.2.10
0.2.9
Improvements
- Significant reduction to agent classload cost by changing the framework used for instrumentation. (#148)
- Safer integrations by preventing errors in integrations from bubbling up. (#148)
Bugfixes
- Handle a potential null pointer exception in cases where the SQL query isn't available. (#149)
- Fix the mongo integration query sanitization. (#152)
Read the full changeset
0.2.8
0.2.7
Improvements
- JDBC drivers are automatically traced now. Manual changes to add
opentracing-contrib/java-jdbc
and modifying the jdbc url are no longer required. (#141) - Better resource naming for Spring Web based applications. Resource is now named after the pattern used to map the controller instead of the URL. These patterns are typically defined using annotations such as
@RequestMapping
. (#144) - Improve matching performance when using the
@Trace
annotation. This also has the benefit of finding classes with@Trace
not available on the system classpath. (This especially applies to Spring Boot apps deployed as an executable jar.) (#143) - Headers provided to
DDTracer.extract
are now discovered case-independent even if the map provided is case-sensitive. (#145)
Bugfixes
- Downgraded to a non-beta version of byteman in attempt to resolve a performance degradation in some cases running Tomcat. (#142)
Read the full changeset
0.2.6
Improvements
- Errors reported are now properly captured and sent along with the trace (#139). This is done primarily as follows:
ActiveSpan span = GlobalTracer.get().activeSpan();
span.log(Collections.singletonMap("error.object", new RuntimeException("some error")))
Bugfixes
- fixed
IllegalAccessError
that was being thrown in some cases where classes were loaded on multiple classloaders (#137).
Breaking Changes
- tags names used in our OpenTracing compatibility layer have been changed to make them consistent with other OpenTracing tags (#140). If you have:
span.setTag('service-name', 'intake')
span.setTag('resource-name', 'GET /api/v1/')
You should change that to:
span.setTag('service.name', 'intake')
span.setTag('resource.name', 'GET /api/v1/')
Read the full changeset
0.2.5
Fix distributed tracing headers to be compatible with other datadog APM clients.
Previous headers were not consistent with other clients. This release should properly propagate for distributed tracing.