Skip to content

Latest commit

 

History

History
216 lines (180 loc) · 12.8 KB

CHANGELOG.adoc

File metadata and controls

216 lines (180 loc) · 12.8 KB

Changelog

All clj-otel-* module versions are released in lockstep to Clojars.

x.y.z versions listed below do not follow semantic versioning. Instead, development proceeds on a linear path where z increases for batches of incremental changes and y increases (with z reset to 0) when milestones are reached.

The changes are marked as follows:

  • [BREAK] is a breaking change in behaviour that requires user action to accommodate for when upgrading from a previous version

  • [ADD] is an addition of a new feature

  • [FIX] is a bug fix

  • [MAINT] is a maintenance change for general improvement and proactive avoidance of potential issues

⚠️
Until version 1.0.0 there is a greater possibility of breaking changes.

0.x changes

0.2.8 (in progress)

  • [ADD] Updated microservices examples to export logs to Grafana Loki. A Logs panel has been added to the HTTP server instances dashboard.

  • Bump deps

    • [MAINT] OpenTelemetry 1.40.0, semconv 1.26.0-alpha, instrumentation 2.6.0-alpha

    • [ADD] MemoryMode option for programmatically configured OTLP exporters.

    • [ADD] Programmatic configuration of log record exporters used for debugging.

    • [BREAK] Pedestal 0.7.0 in microservices examples. Pedestal 0.7.0 introduces its own support for OpenTelemetry, including a new interceptor io.pedestal.http.tracing/request-tracing-interceptor. This overlaps functionality with clj-otel interceptors, so should be disabled by setting :io.pedestal.http/tracing to nil in the Pedestal service map.

0.2.7 (2024-07-01)

  • Bump deps

    • [MAINT] OpenTelemetry 1.39.0

      • [ADD] Support for creating and setting gauges that take measurements synchronously. Use steffan-westcott.clj-otel.api.metrics.instrument/set! to synchronously set a gauge to a given measurement.

      • [ADD] Option to set explicit bucket boundaries advice for histograms

      • [ADD] :links option for add-span-data!

      • [FIX] metrics-by-route-interceptors should record requests that have 404 HTTP response code

      • [BREAK] Removed modules clj-otel-exporter-jaeger-grpc and clj-otel-exporter-jaeger-thrift as the Java libraries opentelemetry-exporter-jaeger and opentelemetry-exporter-jaeger-thrift are no longer published. Jaeger has native support for OTLP, use clj-otel-exporter-otlp instead to configure an OTLP exporter.

      • [BREAK] In module clj-otel-exporter-zipkin, span-exporter options :sender and :encoder now take zipkin2.reporter.BytesMessageSender and zipkin2.codec.BytesEncoder values

    • [MAINT] Various build deps

  • Refactored microservice examples

    • [MAINT] Removed uberjar build step. All application instances now use a clojure Docker image rather than custom image containing an uberjar.

    • [ADD] For telemetry backend, changed to use Grafana with Grafana Tempo and Prometheus. Preconfigured Grafana dashboards for metrics and traces are included.

    • [ADD] Added state lifecycle management, using with-open and closeable pattern.

    • [MAINT] Altered Ring/Pedestal servers to reload routes on every HTTP request.

    • [ADD] Added embedded nREPL server to all application and load-gen instances for remote access.

  • [ADD] Example rpg-service with instrumented database access

  • [FIX] Updated examples and guide when using wrap-metrics-by-route to also wrap Reitit default handler. This ensures correct recording of metrics for HTTP server spans with 404, 405 and 406 response codes.

0.2.6 (2024-01-15)

  • Bump deps

    • [MAINT] OpenTelemetry 1.34.1

    • [BREAK] OpenTelemetry instrumentation agent 2.0.0 The default OTLP exporter protocol used by the agent has changed from grpc to http/protobuf. See the release notes for details on this and other breaking changes. Note the default OTLP exporter protocol used by the autoconfigure SDK extension remains as grpc.

    • [MAINT] Various build deps

0.2.5 (2024-01-01)

  • [FIX] Queried header names in context propagator text maps (for manually instrumented applications) should be lower-cased. Previously, b3multi and xray propagators would fail because header names in Ring request maps are lower-cased but the queried header name may not.

  • [ADD] Module clj-otel-sdk-common which wraps the OpenTelemetry SDK common library.

  • [BREAK] Moved function merge-resources-with-default to new module clj-otel-sdk-common.

  • [ADD] Terse syntax alternatives for span-opts map parameter in new-span! and related functions that create spans.

  • [ADD] Convenience function add-event! to add an event to the bound or current span.

  • [ADD] Populate err.type trace semantic attribute on manually created client and server spans.

  • [ADD] Middleware wrap-compojure-route that adds the matched Compojure route to the server span and request map.

  • [MAINT] Ensure example microservices uberjars are built and run on the same JDK.

  • Bump deps

    • [MAINT] OpenTelemetry 1.33.0

    • [MAINT] Various build deps

0.2.4.1 (2023-10-01)

  • [ADD] Module clj-otel-sdk-extension-autoconfigure which wraps the autoconfigure OpenTelemetry SDK extension. Updated guide on using the autoconfigure module and adding initialisation code to application.

  • [ADD] Updated functions to use a default OpenTelemetry instance declared by clj-otel, falling back to the global OpenTelemetry instance declared by Java OpenTelemetry if no default instance was previously configured. Added recommendation to prefer use of default OpenTelemetry instance over the global OpenTelemetry instance, when using autoconfigure module or programmatic configuration of SDK. Use of system property otel.java.global-autoconfigure.enabled or environment variable OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED is discouraged.

  • [BREAK] steffan-westcott.clj-otel.sdk.otel-sdk/init-otel-sdk! has a new option register-shutdown-hook enabled by default.

  • [ADD] New middleware (formerly part of the microservices examples)

    • wrap-exception-event adds an exception event to the server span. This is intended for use by applications which transform the exception to an HTTP response in a subsequent middleware.

    • wrap-reitit-route adds the matched Reitit route to the server span and request map.

  • [ADD] New interceptor exception-event-interceptor adds an exception event to the server span. This is intended for use by applications which transform the exception to an HTTP response in a subsequent interceptor.

  • [ADD] Function steffan-westcott.clj-otel.instrumentation.runtime-telemetry-java8/close! to stop JVM telemetry. steffan-westcott.clj-otel.instrumentation.runtime-telemetry-java8/register! now returns a collection of AutoCloseable.

  • [MAINT] Removed :dev alias for development.

  • [MAINT] Reworked examples to be easier to run. Added load generator applications to microservices examples.

  • Bump deps:

    • [MAINT] OpenTelemetry 1.30.1

      • [BREAK] clj-otel-exporter-jaeger-* are now deprecated, use clj-otel-exporter-otlp instead

    • [BREAK] Now using io.opentelemetry.semconv/opentelemetry-semconv semantic conventions. This impacts manually instrumented HTTP server applications using clj-otel middleware or interceptors, as several semantic attributes have changed.

    • [MAINT] Various build deps

0.2.3 (2023-06-18)

  • [ADD] Support for programmatic configuration of MeterProvider for metrics export.

  • [ADD] Module clj-otel-exporter-prometheus for programmatic configuration of metrics export to Prometheus

  • [FIX] steffan-westcott.clj-otel.util/duration should convert [amount ^TimeUnit unit] to Duration

  • Bump deps:

    • [MAINT] OpenTelemetry 1.27.0

      • [BREAK] The default value for autoconfiguration property otel.logs.exporter has changed from none to otlp

      • [BREAK] Module clj-otel-instrumentation-runtime-metrics has been renamed and split into modules clj-otel-instrumentation-runtime-telemetry-java8 and clj-otel-instrumentation-runtime-telemetry-java17

0.2.2 (2023-06-05)

  • [ADD] Opt-in feature bound context, a Clojure dynamic var that overrides the default context or parent parameter value for clj-otel functions. This feature is intended to simplify asynchronous code by eliminating explicit context passing. Existing code that uses the current context or explicit context parameter values is unaffected.

  • [FIX] Convert key names of entries added to OpenTelemetry attributes to snake_case. This applies to resources, spans and metrics.

  • [FIX] Do not transform key names of entries added to OpenTelemetry context or baggage.

  • [ADD] Function set-attribute-name-fn! to override setting of OpenTelemetry attribute key names.

  • [MAINT] Remove Jaeger exporters from examples, since they will be deprecated soon. The Jaeger Collector now accepts OTLP directly. See the Jaeger clients deprecation notice.

  • Bump deps:

    • [MAINT] OpenTelemetry contrib 1.26.0-alpha

    • [MAINT] Various build deps

0.2.1 (2023-05-08)

  • [FIX] Use . instead of / in namespace qualified attribute names

  • [MAINT] Removed deprecated build dep build-clj

  • Bump deps:

    • [MAINT] OpenTelemetry 1.26.0

    • [MAINT] Various build deps

0.2.0 (2023-04-10)

  • [ADD] Support for Metrics API

  • [ADD] Implementations of the following HTTP server metrics for use by applications not run with the OpenTelemetry instrumentation agent:

    • http.server.active_requests

    • http.server.duration

    • http.server.request.size

  • [BREAK] The parameters for function add-route-data! have changed, there is a new parameter to specify the HTTP request method.

  • [BREAK] The pattern for using clj-otel middleware and interceptors in applications has been revised. The revised pattern adds new middleware wrap-route, wrap-active-requests and wrap-metrics-by-route and interceptors route-interceptor, active-requests-interceptor and metrics-by-route-interceptors to capture matched routes in HTTP server spans and HTTP server metrics. The pattern also ensures all requests are recorded, including those which do not match any route.

  • [ADD] Module clj-otel-instrumentation-runtime-metrics to provide access to JVM runtime metrics instrumentation for applications not using the OpenTelemetry instrumentation agent.

  • [ADD] Aliases in examples

    • :metrics-* to control export of metrics

    • :logging-* to control application logging

  • Bump deps:

    • [MAINT] OpenTelemetry 1.25.0

      • [BREAK] When using autoconfiguration for a manually instrumented application, include the new JVM option "-Dotel.java.global-autoconfigure.enabled=true" or environment variable setting OTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED=true

      • Methods to statically set the server host name attribute on server spans have been removed, as static data is better represented as an OpenTelemetry resource.

        • [BREAK] The function add-server-name! has been removed.

        • [BREAK] The option :server-name has been removed from the middleware and interceptors for server span support.

      • [BREAK] Module clj-otel-extension-aws renamed to clj-otel-contrib-aws-xray-propagator

      • [BREAK] Module clj-otel-sdk-extension-aws renamed to clj-otel-contrib-aws-resources

      • [BREAK] Module clj-otel-sdk-extension-resources renamed to clj-otel-instrumentation-resources

    • [MAINT] Various build deps

0.1.5 (2022-09-03)

  • Bump deps:

    • [MAINT] OpenTelemetry 1.17.0

    • [MAINT] Various build deps

0.1.4 (2022-07-05)

  • [ADD] Support for including source code semantic attributes when creating spans. By default, attributes identifying the namespace, line number and source file path are included in spans created by with-span!, with-span-binding, and async-span.

  • [ADD] Update Pedestal HTTP server span support to always add route data to server spans

  • Bump deps:

    • [MAINT] OpenTelemetry 1.15.0

      • [BREAK] Modules clj-otel-exporter-otlp-* are merged to new module clj-otel-exporter-otlp

    • [MAINT] Various build deps

0.1.3 (2022-05-22)

  • Bump deps:

    • [MAINT] OpenTelemetry 1.14.0

    • [MAINT] Various build deps

0.1.2 (2022-04-13)

  • [ADD] Include ExceptionInfo data as attributes in exception span events, by default

  • [FIX] Update examples to use namespaced attributes for spans and events

  • Bump deps:

    • [MAINT] OpenTelemetry 1.13.0

      • [BREAK] The default value for autoconfiguration property otel.metrics.exporter has changed from none to otlp

    • [MAINT] Clojure 1.11.1

    • [MAINT] Various build deps

0.1.1 (2022-03-13)

  • Bump deps:

    • [MAINT] OpenTelemetry 1.12.0

    • [MAINT] Various build deps

0.1.0 (2022-02-27)

  • Initial release