-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Version: 1.3.13 and later.
Without putting too fine a polish in it, it's clear to me after working on #3744 that the current implementation of Akka.Persistence serialization in Akka.NET is unsustainable and that a serious error in judgement was made when we decided to allow individual Akka.Persistence plugins to choose their own "native-friendly" serialization instead of relying on the Protobuf envelopes that Akka.Persistence provides by default. This is especially true of our Akka.Persistence.Sql plugins.
As the new Akka.Persistence.TCK specifications will make perfectly clear in Akka.NET v1.4.0+, it is very difficult for Akka.Persistence plugin implementations to correctly support things like IActorRef
serialization since that requires access to some internal fields and properties, such as CurrentTransportInformation
that aren't meant to be exposed outside of Akka.NET for safety reasons.
Most journal and snapshot store plugins will fail the new serialization checks, because the current design of many Akka.Persistence plugins requires them to come up with their own techniques for serialization, virtually none of which are consistent with Akka.NET best practices.
Going forward, we should to streamline everything on top of the built-in Akka.Persistence MessageSerializer
and SnapshotSerializer
implementations so we can correctly support Akka.Persistence features like multi-tenant journals, snapshot stores, and more.
This is too big and drastic of a change for v1.4.0, but I'd suggest we put it on the table for 1.5.0.