Interface Shard.EntityState

  • All Known Subinterfaces:
    Shard.WithRef
    All Known Implementing Classes:
    Shard.Active, Shard.NoState$, Shard.Passivating, Shard.RememberedButNotCreated$, Shard.RememberingStart, Shard.RememberingStop$, Shard.WaitingForRestart$
    Enclosing class:
    Shard

    public static interface Shard.EntityState
    State machine for an entity:
    
                                                                           Started on another shard bc. shard id extractor changed (we need to store that)
                                                                    +------------------------------------------------------------------+
                                                                    |                                                                  |
                  Entity id remembered on shard start     +-------------------------+    StartEntity or early message for entity       |
                       +--------------------------------->| RememberedButNotCreated |------------------------------+                   |
                       |                                  +-------------------------+                              |                   |
                       |                                                                                           |                   |
                       |                                                                                           |                   |
                       |   Remember entities                                                                       |                   |
                       |   message or StartEntity         +-------------------+   start stored and entity started  |                   |
                       |        +-----------------------> | RememberingStart  |-------------+                      v                   |
     No state for id   |        |                         +-------------------+             |               +------------+             |
          +---+        |        |                                                           +-------------> |   Active   |             |
          |   |--------|--------+-----------------------------------------------------------+               +------------+             |
          +---+                 |   Non remember entities message or StartEntity                                   |                   |
            ^                   |                                                                                  |                   |
            |                   |                                                             entity terminated    |                   |
            |                   |      restart after backoff                                  without passivation  |    passivation    |
            |                   |      or message for entity    +-------------------+    remember ent.             |     initiated     \          +-------------+
            |                   +<------------------------------| WaitingForRestart |<---+-------------+-----------+--------------------|-------> | Passivating |
            |                   |                               +-------------------+    |             |                               /          +-------------+
            |                   |                                                        |             | remember entities             |     entity     |
            |                   |                                                        |             | not used                      |     terminated +--------------+
            |                   |                                                        |             |                               |                v              |
            |                   |            There were buffered messages for entity     |             |                               |      +-------------------+    |
            |                   +<-------------------------------------------------------+             |                               +----> |   RememberingStop |    | remember entities
            |                                                                                          |                                      +-------------------+    | not used
            |                                                                                          |                                                |              |
            |                                                                                          v                                                |              |
            +------------------------------------------------------------------------------------------+------------------------------------------------+<-------------+
                           stop stored/passivation complete