Skip to content

feat(persistence): add completion callbacks and async handler support - #7937

Closed
Aaronontheweb wants to merge 2 commits into
akkadotnet:devfrom
Aaronontheweb:feature/persistence-completion-callbacks
Closed

feat(persistence): add completion callbacks and async handler support#7937
Aaronontheweb wants to merge 2 commits into
akkadotnet:devfrom
Aaronontheweb:feature/persistence-completion-callbacks

Merge branch 'dev' into feature/persistence-completion-callbacks

f4440b6
Select commit
Loading
Failed to load commit list.
Azure Pipelines / PR Validation failed Nov 24, 2025 in 22m 19s

Build #2025.11.24.5 had test failures

Details

Tests

  • Failed: 3 (0.11%)
  • Passed: 2,719 (98.59%)
  • Other: 36 (1.31%)
  • Total: 2,758

Annotations

Check failure on line 1473 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Build log #L1473

Cmd.exe exited with code '-1'.

Check failure on line 1474 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Build log #L1474

Bash exited with code '255'.

Check failure on line 14 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Build log #L14

ECHO is off.

Check failure on line 14 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Build log #L14

ECHO is off.

Check failure on line 1 in Akka.API.Tests.CoreAPISpec.ApprovePersistence

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Akka.API.Tests.CoreAPISpec.ApprovePersistence

VerifyException : Directory: /home/vsts/work/1/s/src/core/Akka.API.Tests/verify
NotEqual:
  - Received: CoreAPISpec.ApprovePersistence.DotNet8_0.received.txt
    Verified: CoreAPISpec.ApprovePersistence.DotNet.verified.txt

FileContent:

NotEqual:

Received: CoreAPISpec.ApprovePersistence.DotNet8_0.received.txt
Verified: CoreAPISpec.ApprovePersistence.DotNet.verified.txt
Compare Result:
  [assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Persistence.TCK")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Persistence.Tests")]
  [assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
  [assembly: System.Runtime.InteropServices.GuidAttribute("e3bcba88-003c-4cda-8a60-f0c2553fe3c8")]
  [assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName=".NET 6.0")]
  namespace Akka.Persistence
  {
-     public sealed class AsyncHandlerInvocation : Akka.Persistence.IPendingHandlerInvocation
-     {
-         public AsyncHandlerInvocation(object evt, System.Action<object> handler) { }
-         public object Event { get; }
-         public System.Action<object> Handler { get; }
-     }
      public abstract class AtLeastOnceDeliveryActor : Akka.Persistence.PersistentActor
      {
          protected AtLeastOnceDeliveryActor() { }
          protected AtLeastOnceDeliveryActor(Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings settings) { }
          protected AtLeastOnceDeliveryActor(System.Func<Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings, Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings) { }
          public int MaxUnconfirmedMessages { get; }
          public System.TimeSpan RedeliverInterval { get; }
          public int RedeliveryBurstLimit { get; }
          public int UnconfirmedCount { get; }
          public int WarnAfterNumberOfUnconfirmedAttempts { get; }
          public override void AroundPostStop() { }
          public override void AroundPreRestart(System.Exception cause, object message) { }
          protected override bool AroundReceive(Akka.Actor.Receive receive, object message) { }
          public bool ConfirmDelivery(long deliveryId) { }
          public void Deliver(Akka.Actor.ActorPath destination, System.Func<long, object> deliveryMessageMapper) { }
          public void Deliver(Akka.Actor.ActorSelection destination, System.Func<long, object> deliveryMessageMapper) { }
          public Akka.Persistence.AtLeastOnceDeliverySnapshot GetDeliverySnapshot() { }
          protected override void OnReplaySuccess() { }
          public void SetDeliverySnapshot(Akka.Persistence.AtLeastOnceDeliverySnapshot snapshot) { }
      }
      public abstract class AtLeastOnceDeliveryReceiveActor : Akka.Persistence.ReceivePersistentActor
      {
          protected AtLeastOnceDeliveryReceiveActor() { }
          protected AtLeastOnceDeliveryReceiveActor(Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings settings) { }
          protected AtLeastOnceDeliveryReceiveActor(System.Func<Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings, Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings) { }
          public int MaxUnconfirmedMessages { get; }
          public System.TimeSpan RedeliverInterval { get; }
          public int RedeliveryBurstLimit { get; }
          public int UnconfirmedCount { get; }
          public int WarnAfterNumberOfUnconfirmedAttempts { get; }
          public override void AroundPostStop() { }
          public override void AroundPreRestart(System.Exception cause, object message) { }
          protected override bool AroundReceive(Akka.Actor.Receive receive, object m

Check failure on line 1 in Akka.API.Tests.CoreAPISpec.ApprovePersistence

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Akka.API.Tests.CoreAPISpec.ApprovePersistence

VerifyException : Directory: D:\a\1\s\src\core\Akka.API.Tests\verify
NotEqual:
  - Received: CoreAPISpec.ApprovePersistence.DotNet8_0.received.txt
    Verified: CoreAPISpec.ApprovePersistence.DotNet.verified.txt

FileContent:

NotEqual:

Received: CoreAPISpec.ApprovePersistence.DotNet8_0.received.txt
Verified: CoreAPISpec.ApprovePersistence.DotNet.verified.txt
Compare Result:
  [assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Persistence.TCK")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Persistence.Tests")]
  [assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
  [assembly: System.Runtime.InteropServices.GuidAttribute("e3bcba88-003c-4cda-8a60-f0c2553fe3c8")]
  [assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName=".NET 6.0")]
  namespace Akka.Persistence
  {
-     public sealed class AsyncHandlerInvocation : Akka.Persistence.IPendingHandlerInvocation
-     {
-         public AsyncHandlerInvocation(object evt, System.Action<object> handler) { }
-         public object Event { get; }
-         public System.Action<object> Handler { get; }
-     }
      public abstract class AtLeastOnceDeliveryActor : Akka.Persistence.PersistentActor
      {
          protected AtLeastOnceDeliveryActor() { }
          protected AtLeastOnceDeliveryActor(Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings settings) { }
          protected AtLeastOnceDeliveryActor(System.Func<Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings, Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings) { }
          public int MaxUnconfirmedMessages { get; }
          public System.TimeSpan RedeliverInterval { get; }
          public int RedeliveryBurstLimit { get; }
          public int UnconfirmedCount { get; }
          public int WarnAfterNumberOfUnconfirmedAttempts { get; }
          public override void AroundPostStop() { }
          public override void AroundPreRestart(System.Exception cause, object message) { }
          protected override bool AroundReceive(Akka.Actor.Receive receive, object message) { }
          public bool ConfirmDelivery(long deliveryId) { }
          public void Deliver(Akka.Actor.ActorPath destination, System.Func<long, object> deliveryMessageMapper) { }
          public void Deliver(Akka.Actor.ActorSelection destination, System.Func<long, object> deliveryMessageMapper) { }
          public Akka.Persistence.AtLeastOnceDeliverySnapshot GetDeliverySnapshot() { }
          protected override void OnReplaySuccess() { }
          public void SetDeliverySnapshot(Akka.Persistence.AtLeastOnceDeliverySnapshot snapshot) { }
      }
      public abstract class AtLeastOnceDeliveryReceiveActor : Akka.Persistence.ReceivePersistentActor
      {
          protected AtLeastOnceDeliveryReceiveActor() { }
          protected AtLeastOnceDeliveryReceiveActor(Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings settings) { }
          protected AtLeastOnceDeliveryReceiveActor(System.Func<Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings, Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings) { }
          public int MaxUnconfirmedMessages { get; }
          public System.TimeSpan RedeliverInterval { get; }
          public int RedeliveryBurstLimit { get; }
          public int UnconfirmedCount { get; }
          public int WarnAfterNumberOfUnconfirmedAttempts { get; }
          public override void AroundPostStop() { }
          public override void AroundPreRestart(System.Exception cause, object message) { }
          protected override bool AroundReceive(

Check failure on line 1 in Akka.API.Tests.CoreAPISpec.ApprovePersistence

See this annotation in the file changed.

@azure-pipelines azure-pipelines / PR Validation

Akka.API.Tests.CoreAPISpec.ApprovePersistence

VerifyException : Directory: D:\a\1\s\src\core\Akka.API.Tests\verify
NotEqual:
  - Received: CoreAPISpec.ApprovePersistence.Net4_8.received.txt
    Verified: CoreAPISpec.ApprovePersistence.Net.verified.txt

FileContent:

NotEqual:

Received: CoreAPISpec.ApprovePersistence.Net4_8.received.txt
Verified: CoreAPISpec.ApprovePersistence.Net.verified.txt
Compare Result:
  [assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/akkadotnet/akka.net")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Cluster.Sharding")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Persistence.TCK")]
  [assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("Akka.Persistence.Tests")]
  [assembly: System.Runtime.InteropServices.ComVisibleAttribute(false)]
  [assembly: System.Runtime.InteropServices.GuidAttribute("e3bcba88-003c-4cda-8a60-f0c2553fe3c8")]
  [assembly: System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName=".NET Standard 2.0")]
  namespace Akka.Persistence
  {
-     public sealed class AsyncHandlerInvocation : Akka.Persistence.IPendingHandlerInvocation
-     {
-         public AsyncHandlerInvocation(object evt, System.Action<object> handler) { }
-         public object Event { get; }
-         public System.Action<object> Handler { get; }
-     }
      public abstract class AtLeastOnceDeliveryActor : Akka.Persistence.PersistentActor
      {
          protected AtLeastOnceDeliveryActor() { }
          protected AtLeastOnceDeliveryActor(Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings settings) { }
          protected AtLeastOnceDeliveryActor(System.Func<Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings, Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings) { }
          public int MaxUnconfirmedMessages { get; }
          public System.TimeSpan RedeliverInterval { get; }
          public int RedeliveryBurstLimit { get; }
          public int UnconfirmedCount { get; }
          public int WarnAfterNumberOfUnconfirmedAttempts { get; }
          public override void AroundPostStop() { }
          public override void AroundPreRestart(System.Exception cause, object message) { }
          protected override bool AroundReceive(Akka.Actor.Receive receive, object message) { }
          public bool ConfirmDelivery(long deliveryId) { }
          public void Deliver(Akka.Actor.ActorPath destination, System.Func<long, object> deliveryMessageMapper) { }
          public void Deliver(Akka.Actor.ActorSelection destination, System.Func<long, object> deliveryMessageMapper) { }
          public Akka.Persistence.AtLeastOnceDeliverySnapshot GetDeliverySnapshot() { }
          protected override void OnReplaySuccess() { }
          public void SetDeliverySnapshot(Akka.Persistence.AtLeastOnceDeliverySnapshot snapshot) { }
      }
      public abstract class AtLeastOnceDeliveryReceiveActor : Akka.Persistence.ReceivePersistentActor
      {
          protected AtLeastOnceDeliveryReceiveActor() { }
          protected AtLeastOnceDeliveryReceiveActor(Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings settings) { }
          protected AtLeastOnceDeliveryReceiveActor(System.Func<Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings, Akka.Persistence.PersistenceSettings.AtLeastOnceDeliverySettings> overrideSettings) { }
          public int MaxUnconfirmedMessages { get; }
          public System.TimeSpan RedeliverInterval { get; }
          public int RedeliveryBurstLimit { get; }
          public int UnconfirmedCount { get; }
          public int WarnAfterNumberOfUnconfirmedAttempts { get; }
          public override void AroundPostStop() { }
          public override void AroundPreRestart(System.Exception cause, object message) { }
          protected override bool AroundReceive(Ak