Security Fixes
- Resolve GHSA-g94r-2vxg-569j by bumping OpenTelemetry minimum to 1.10.0 -
OpenTelemetry.Api1.9.0 has a known moderate severity vulnerability. The minimumOpenTelemetryversion floor has been raised from1.9.0to1.10.0, and the Microsoft.Extensions.Logging floor has been raised to9.0.0. Downstream consumers that previously resolved to the vulnerableOpenTelemetry.Api1.9.0 will now pull the safe 1.10.0 release.
Bug Fixes
- Fix implicit-sender leak under xUnit v3 parallel execution in
Akka.Hosting.TestKit- Under xUnit v3's default parallel-class scheduling,awaitcontinuations could resume on ThreadPool threads where a sibling test had pinned its actor cell, causingTell()to use the wrong implicit sender and replies to land in the wrongTestActor's mailbox. A new wrappingSynchronizationContextpreserves xUnit's scheduler while pinning the ambient actor cell acrossawaitcontinuations. - Fix
SynchronizationContextleak andTestActorstartup race inAkka.Hosting.TestKit- Two compounding sources of flakiness in sequential xUnit v3 suites: (1) theActorCellKeepingSynchronizationContextinstalled during host startup leaked out of the initialization callback and was inherited by subsequent tests, pinning continuations onto disposedActorCells; (2) theTestActorcreated during host startup was intermittently terminated by a race with other/systemactors starting concurrently. Fixed by bracketing the context installation with a save/restore and adding post-startupTestActorliveness verification with automatic re-creation. - Fix cached
TestProberefs becoming stale afterTestActorrecovery inAkka.Hosting.TestKit- Actors created duringWithActorscould cacheIRequiredActor<TestProbe>.ActorRefbefore recovery ran. Re-registering a new rawTestActorinActorRegistrydid not update those cached refs.TestProbeis now registered via a stable forwarding actor whose target is swapped atomically after recovery, ensuring all cached references remain valid.
New Features
- Add
WithStrictSerializationhelper — resolves issue #734. AddsWithStrictSerialization(bool enabled = true)extension onAkkaConfigurationBuilderthat setsakka.actor.serialization-settings.allow-unregistered-types = off, disabling the Newtonsoft.Json fallback and throwingSerializationExceptionfor unregistered types.
Updates
- Bump Akka version from 1.5.66 to 1.5.67 - Hotfix release reverting the Task.Yield() optimization in AsyncWriteJournal/SnapshotStore that broke the persistence plugin threading contract.
Updates
Bug Fixes
- Fix
LoggerFactoryLoggermetadata regression for non-semantic logs - PR #706 (trace correlation) accidentally gatedActorPath,LogSource,Timestamp, andThreademission on_hasSemanticProperties, which wasfalsefor plain-string logs. Non-semantic logs lost all structured metadata, breaking downstream consumers such as Datadog pipelines and customConsoleFormatters. All log paths now emit the full set of Akka metadata as structured attributes regardless of whether the message uses named placeholders.
Breaking Changes
- Convert
Akka.Hosting.TestKitto xUnit 3 -Akka.Hosting.TestKitnow targets xUnit v3. Users who need to remain on xUnit v2 can switch to the newAkka.Hosting.TestKit.Xunit2package, which preserves the previous xUnit v2-based TestKit API.
Updates
Bug Fixes
- Fix
ActorRegistry.TryGetcaching staleIActorRefvalues -ActorRegistry.TryGetwas caching the internalIActorRefon first call.
Updates
Updates
Updates
New Features
- Add OpenTelemetry trace correlation support for LoggerFactoryLogger - enables proper trace correlation for logs emitted from actor code. Solves the problem that
Activity.Currentdoesn't flow across actor mailbox boundaries because it usesAsyncLocal<T>. When using Akka.NET 1.5.59+,LogEvent.ActivityContextcaptures trace context at log creation time and flows it through to OpenTelemetryLogRecords via the newAkkaTraceContextProcessor. Register withoptions.AddAkkaTraceCorrelation()in your OpenTelemetry logging configuration. - Add WithContext() integration tests for MEL logger - confirmed that Akka.NET 1.5.60's
WithContext()logging context enrichment works automatically withLoggerFactoryLogger. Context properties set via the coreWithContext()API flow through to Microsoft.Extensions.Logging state dictionaries viaTryGetProperties()without any code changes needed.
Bug Fixes
- Fix
WithDefaultLogMessageFormatter<T>()rejecting built-in formatters -SemanticLogMessageFormatterandDefaultLogMessageFormatterhave private constructors (they use singletonInstanceproperties), but the validation only accepted public parameterless constructors. These built-in types are now correctly accepted.
Deprecations
WithDefaultLogMessageFormatter<T>()is now marked[Obsolete]—SemanticLogMessageFormatteris the default as of Akka.NET 1.5.58 and no longer needs to be set explicitly. The method still works for customILogMessageFormatterimplementations.
Updates
Beta Release
This is a beta release for testing the OpenTelemetry trace correlation feature that was merged after 1.5.59.
New Features
- Add OpenTelemetry trace correlation support for LoggerFactoryLogger - enables proper trace correlation for logs emitted from actor code. Solves the problem that
Activity.Currentdoesn't flow across actor mailbox boundaries because it usesAsyncLocal<T>. When using Akka.NET 1.5.59+,LogEvent.ActivityContextcaptures trace context at log creation time and flows it through to OpenTelemetryLogRecords via the newAkkaTraceContextProcessor. Register withoptions.AddAkkaTraceCorrelation()in your OpenTelemetry logging configuration.
New Features
- Add OpenTelemetry trace correlation support for LoggerFactoryLogger - enables proper trace correlation for logs emitted from actor code. Solves the problem that
Activity.Currentdoesn't flow across actor mailbox boundaries because it usesAsyncLocal<T>. When using Akka.NET 1.5.59+,LogEvent.ActivityContextcaptures trace context at log creation time and flows it through to OpenTelemetryLogRecords via the newAkkaTraceContextProcessor. Register withoptions.AddAkkaTraceCorrelation()in your OpenTelemetry logging configuration.
Bug Fixes
- Fix semantic logging not capturing named placeholders as structured properties - resolved issue #701 where named placeholders like
{Event}in log messages were not captured as searchable structured properties. Made allLoggerConfigBuilderproperties optional and refactored message formatting code. - Fix TestKit startup timeout race condition - resolved race condition in
TestKit.InitializeAsync()whereCancellationTokenSource.Register()threw exceptions on the timer thread, causing unhandled exceptions that crashed the test host process. Also increased default startup timeout from 10s to 30s for CI environments.
Updates
- Bump Akka version from 1.5.58 to 1.5.59
- Added
OpenTelemetrypackage dependency (1.9.0+) for trace correlation support
Updates
New Features
- Add semantic logging support for Akka.NET 1.5.56+ - enables Microsoft.Extensions.Logging to receive properly structured state dictionaries instead of pre-formatted strings. When using Akka.NET 1.5.56+, log messages now include structured properties from the semantic logging API along with Akka metadata (ActorPath, Timestamp, Thread, LogSource). Fully backwards compatible with older Akka.NET versions.
Updates
Enhancements
- Expose options in journal and snapshot builders - resolved issue #690 by adding
Optionsproperty toAkkaPersistenceJournalBuilderandAkkaPersistenceSnapshotBuilder. Extension methods can now access configuration details without requiring options as explicit parameters, eliminating redundant option passing for connectivity health checks and other plugin-specific features
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
- Add support for custom certificate validation callbacks - integrated the new
CertificateValidationCallbackfeature from Akka.NET v1.5.55, allowing users to provide custom certificate validation logic for SSL/TLS connections. Enables advanced scenarios including certificate pinning, subject/issuer matching, custom business validation rules, and advanced mTLS scenarios
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
New Features
- Support custom health check registrations on Journal and Snapshot Builders - added API to support custom health check registrations for Akka.Persistence plugins, related to issue #678
Enhancements
- Add customizable tags parameter to health check methods - resolved issue #679 by adding new overload allowing custom tags for health checks while maintaining backward compatibility
- Made it easier to customize failureState and tags for all health checks - simplified health check configuration API for all health checks
Updates
Bug Fixes
- Fix event adapter callback API not invoking adapters at runtime - resolved critical bug where event adapters configured via the callback API were not being invoked at runtime. This fix is especially important for users who have migrated to the callback pattern following the deprecation of
JournalOptions.Adaptersproperty. The issue was caused by unnecessary fallback configuration that interfered with adapter registration during HOCON merging.
Updates
- Add SSL/TLS configuration settings from Akka.NET 1.5.52 and 1.5.53 - updated SSL/TLS configuration options to support new features and settings introduced in Akka.NET versions 1.5.52 and 1.5.53
- Bump Akka version from 1.5.52 to 1.5.53
API Changes
- Deprecate JournalOptions.Adapters property in favor of callback API - resolved issue #665 by deprecating the
JournalOptions.Adaptersproperty. Users should migrate to the unified callback pattern:builder.WithJournal(options, journal => journal.AddWriteEventAdapter<T>(...)). The deprecated property will be removed in v1.6.0.
Updates
Bug Fixes
- Fix journal health check registration without event adapters - resolved issue #666 where journal health checks were not being registered when using
.WithHealthCheck()without adding event adapters
New Features
- Added Akka.Persistence health checks - health check support for Akka.Persistence journal and snapshot stores with unified configuration API
- Added dependency-injected health checks -
WithHealthCheck<T>()generic methods for DI-resolved health checks
Updates