Uploaded image for project: 'controller'
  1. controller
  2. CONTROLLER-1513

sal-akka-raft: separate Shard and RaftActor

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • None
    • None
    • clustering
    • 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.

            Unassigned Unassigned
            rovarga Robert Varga
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: