Akka.NET v1.4.47
1.4.47 December 9th 2022
Akka.NET v1.4.47 is a maintenance patch for Akka.NET v1.4.46 that includes a variety of bug fixes, performance improvements, and new features.
Actor Telemetry
Starting in Akka.NET v1.4.47 local and remotely deployed actors will now emit events when being started, stopped, and restarted:
public interface IActorTelemetryEvent : INoSerializationVerificationNeeded, INotInfluenceReceiveTimeout
{
/// <summary>
/// The actor who emitted this event.
/// </summary>
IActorRef Subject {get;}
/// <summary>
/// The implementation type for this actor.
/// </summary>
Type ActorType { get; }
}
/// <summary>
/// Event emitted when actor starts.
/// </summary>
public sealed class ActorStarted : IActorTelemetryEvent
{
public IActorRef Subject { get; }
public Type ActorType { get; }
}
/// <summary>
/// Event emitted when actor shuts down.
/// </summary>
public sealed class ActorStopped : IActorTelemetryEvent
{
public IActorRef Subject { get; }
public Type ActorType { get; }
}
/// <summary>
/// Emitted when an actor restarts.
/// </summary>
public sealed class ActorRestarted : IActorTelemetryEvent
{
public IActorRef Subject { get; }
public Type ActorType { get; }
public Exception Reason { get; }
}
These events will be consumed from popular Akka.NET observability and management tools such as Phobos and Petabridge.Cmd to help provide users with more accurate insights into actor workloads over time, but you can also consume these events yourself by subscribing to them via the EventStream
:
// subscribe to all actor telemetry events
Context.System.EventStream.Subscribe(Self, typeof(IActorTelemetryEvent));
By default actor telemetry is disabled - to enable it you'll need to turn it on via the following HOCON setting:
akka.actor.telemetry.enabled = on
The performance impact of enabling telemetry is negligible, as you can see via our benchmarks.
Fixes and Updates
- Akka.Streams: Fixed
System.NotSupportedException
when disposing stage with materializedIAsyncEnumerable
- Akka.Streams:
ReuseLatest
stage to repeatedly emit the most recent value until a newer one is pushed - Akka.Remote: eliminate
ActorPath.ToSerializationFormat
UID allocations - should provide a noticeable Akka.Remote performance improvement. - Akka.Remote: Remoting and an exception as a payload message -
Exception
types are now serialized properly insideStatus.Failure
messages over the wire.Status.Failure
andStatus.Success
messages are now managed by Protobuf - so you might see some deserialization errors while upgrading if those types are being exchanged over the wire. - Akka.TestKit:
TestActorRef
can not catch exceptions on asynchronous methods
You can see the full set of tracked issues for Akka.NET v1.4.47 here.
COMMITS | LOC+ | LOC- | AUTHOR |
---|---|---|---|
10 | 2027 | 188 | Aaron Stannard |
1 | 157 | 10 | Gregorius Soedharmo |
Changes:
- 791bd10 added v1.4.47 release notes (#6301)
- 998dcca
Exception
serialization support for built-in messages (#6297) [ #3903 ] - 7f68c48 add simple actor telemetry (#6294) [ #6293 ]
- 3156272 Akka:Streams Resolve
IAsyncEnumerator.DisposeAsync
bug (#6290) [ #6280 ] - 1974404 Added .NET 7.0 support for release pipelines (#6288) (#6289)
- 2eb3004 [BACKPORT #6281] Add ReceiveAsync to TestActorRef (#6286)
- 37179fe eliminate
ActorPath.ToSerializationFormat
UID allocations (#6195) - b17ce60 Enable dynamic PGO for RemotePingPong and PingPong (#6277)
- bb7435e added real UID to
ActorPathBenchmarks
(#6276) - 76c9364 Akka.Streams:
ReuseLatest
stage to repeatedly emit the most recent value until a newer one is pushed (#6262)
See More
- d914eb3 converted build system to .NET 7.0 (#6263)
- 7068ba9 cleaned up duplicate System.Collections.Immutable package reference (#6264)
This list of changes was auto generated.