@@ -58,16 +58,23 @@ public async Task CustomSerializerTest()
58
58
{
59
59
var probe = CreateTestProbe ( ) ;
60
60
61
+ // Sanity check to see that the system should serialize object type using MySerializer
62
+ var serializer = Sys . Serialization . FindSerializerForType ( typeof ( Persisted ) ) ;
63
+ serializer . Should ( ) . BeOfType < MySerializer > ( ) ;
64
+
61
65
var actor = Sys . ActorOf ( Props . Create ( ( ) => new PersistedActor ( "a" ) ) ) ;
62
- actor . Tell ( "a" , probe ) ;
63
- probe . ExpectMsg ( "a" ) ;
66
+ actor . Tell ( new Persisted ( "a" ) , probe ) ;
67
+ probe . ExpectMsg ( new Persisted ( "a" ) ) ;
64
68
69
+ // Read the database directly, make sure that we're using the correct object type serializer
65
70
var conn = new SqliteConnection ( "DataSource=AkkaJournal.db" ) ;
66
71
conn . Open ( ) ;
67
72
const string sql = "SELECT ej.serializer_id FROM event_journal ej WHERE ej.persistence_id = 'a'" ;
68
73
await using var cmd = new SqliteCommand ( sql , conn ) ;
69
74
var record = await cmd . ExecuteReaderAsync ( ) ;
70
75
await record . ReadAsync ( ) ;
76
+
77
+ // In the bug this fails, the serializer id is JSON id instead of MySerializer id
71
78
record [ 0 ] . Should ( ) . Be ( 9999 ) ;
72
79
}
73
80
@@ -83,6 +90,33 @@ public Task DisposeAsync()
83
90
return Task . CompletedTask ;
84
91
}
85
92
}
93
+
94
+ internal sealed class Persisted : IEquatable < Persisted >
95
+ {
96
+ public Persisted ( string payload )
97
+ {
98
+ Payload = payload ;
99
+ }
100
+
101
+ public string Payload { get ; }
102
+
103
+ public bool Equals ( Persisted other )
104
+ {
105
+ if ( ReferenceEquals ( null , other ) ) return false ;
106
+ if ( ReferenceEquals ( this , other ) ) return true ;
107
+ return Payload == other . Payload ;
108
+ }
109
+
110
+ public override bool Equals ( object obj )
111
+ {
112
+ return ReferenceEquals ( this , obj ) || obj is Persisted other && Equals ( other ) ;
113
+ }
114
+
115
+ public override int GetHashCode ( )
116
+ {
117
+ return ( Payload != null ? Payload . GetHashCode ( ) : 0 ) ;
118
+ }
119
+ }
86
120
87
121
internal class MySerializer : Serializer
88
122
{
0 commit comments