5.19.0 — 2026-10-21¶
← 5.19.1 | 5.18.3 → | ↑ 5.x series
Added¶
Adapters - Temporal¶
- Messaging Activity Spans -
RunActivity:*spans now carry the OpenTelemetry messaging attributes, so Elastic APM reports amessagingtransaction type instead ofunknown.- Sets
messaging.system,messaging.operation,messaging.operation.typeandmessaging.destination.name(the task queue) - Added
MessagingOpenTelemetryInterceptorandMessagingOpenTelemetryPlugininarchipy.adapters.temporal.tracing - The plugin passes
opentelemetrythrough the workflow sandbox and has its own name, so it can be registered next to the stockOpenTelemetryPlugin
- Sets
Changed¶
Adapters - Temporal¶
- OpenTelemetry Plugin - The adapter registers
MessagingOpenTelemetryPluginthroughClient.connect(plugins=[...])instead of appendingTracingInterceptor.- behavior: when the global tracer provider is not a
temporalioReplaySafeTracerProvider, for example a plainTracerProvideranother library registered first, Temporal tracing is skipped with a warning instead of failing at worker start
- behavior: when the global tracer provider is not a
Helpers - OpenTelemetry¶
- Replay-Safe Providers - When
temporaliois installed the OpenTelemetry runtime builds Temporal's replay-safe tracer and meter providers, and falls back to the plain SDK providers otherwise.- All Temporal-specific code sits in
archipy/helpers/utils/_otel/temporal_providers.py - Adoption of an existing global provider recognises the replay-safe wrappers
- The tracer provider is published globally whenever the tracer global is still unset, even if another signal already set its own
- behavior: with
temporalioinstalled,OtelUtils.tracer_provider()andOtelUtils.meter_provider()return wrappers that do not expose the SDKsampler,resourceor span processor attributes - The logger provider stays unwrapped because
ReplaySafeLoggerProvidercannot be instantiated withopentelemetry-api1.45
- All Temporal-specific code sits in
Tests¶
Tests - Adapters¶
- Temporal Tracing - Added scenarios for the messaging attributes, the client plugin, the sandbox passthrough and the stock plugin side by side.
- A real Temporal container checks that tracing is disabled, and workflows still run, when a plain tracer provider was registered first
- OpenTelemetry Providers - Added scenarios for adopting a replay-safe tracer provider, publishing the tracer provider when traces are enabled later, and plain SDK providers when
temporaliois not installed.