-
Bug
-
Resolution: Won't Do
-
None
-
None
-
None
-
Operating System: All
Platform: All
-
5800
In our current implementation, RaftActor is an abstract class, which defines callbacks to its subclasses – one of which is the Shard.
This separation is not quite aligned with how services are decomposed in Akka and it creates tight coupling between the two components. That coupling is used for three things:
- RAFT state synchronization (i.e. RaftActor.isLeader())
- data persistence, which is currently synchronous
- shutdown synchronization
The first need can easily be satisfied by massaging between Shard and RaftActor. The second one is stickier, but as it turns out we want to make Shard persistence asynchronous anyway, hence it can be turned into messaging between parent and child actors. The third one can easily be solved by having Shard as the parent process, which requests handoff and shuts RaftActor (child) down once the handoff is completed.
- is blocked by
-
CONTROLLER-1490 Allow Shard to persist commits asynchronously
- Resolved
-
CONTROLLER-1512 sal-akka-raft: Use akka.dispatch.ControlMessage for messages
- Resolved