Skip to content

Commit

Permalink
Add default constructor to Akka.Remote.Ack to fix JSON serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
Arkatufus committed Feb 16, 2021
1 parent 1502dbc commit b14fcab
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/core/Akka.Remote.Tests/Serialization/BugFix4399Spec.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Akka.Actor;
using Akka.Serialization;
using Akka.TestKit;
using Xunit;

namespace Akka.Remote.Tests.Serialization
{
public class BugFix4399Spec : AkkaSpec
{
[Fact]
public void JsonSerializer_should_be_able_to_serialize_Ack()
{
var serializer = new NewtonSoftJsonSerializer((ExtendedActorSystem) Sys);

var nacks = new List<SeqNo>();
for (var i = 100; i < 200; ++i)
{
nacks.Add(new SeqNo(i));
}

var message = new Ack(new SeqNo(666), nacks);
var serializedBytes = serializer.ToBinary(message);
var deserialized = (Ack)serializer.FromBinary(serializedBytes, typeof(Ack));

deserialized.CumulativeAck.RawValue.ShouldBe(666);
deserialized.Nacks.Count.ShouldBe(100);
var seqNos = deserialized.Nacks.Select(ack => (int)ack.RawValue);
seqNos.ShouldOnlyContainInOrder(Enumerable.Range(100, 100).ToArray());
}
}
}
4 changes: 4 additions & 0 deletions src/core/Akka.Remote/AckedDelivery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,10 @@ internal interface IHasSequenceNumber
/// </summary>
internal sealed class Ack
{
[Obsolete("Only used for serialization", true)]
public Ack()
{ }

/// <summary>
/// Class representing an acknowledgement with select negative acknowledgements.
/// </summary>
Expand Down

0 comments on commit b14fcab

Please sign in to comment.