You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@helix.apache.org by kishore g <g....@gmail.com> on 2013/06/14 18:27:21 UTC

Extending the state machine

Hi,

We have been thinking about this for a while at LinkedIn and wanted to
share the requirement and some ideas.

Currently in Helix we have a state machine per resource. While this is good
in most cases it has the following limitations


   1. We can really express the dependency between two resources, for
   example on one resource can trigger a transition on another resource.
   2. A state machine can only be FSM, we cant really express infinite
   states for example config versions keep monotonically increasing v1,v2 ....
   3. A partition can only have two attributes location and state but in
   reality there can be more than these two attributes associated with a
   partition. For example, we can say a partition also has a config version
   etc.
   4. A partition can have multiple state machines for example a partition
   represent both data and index but the state machine for data can be
   different from index. Think of the example where data can be operated while
   index is being created.


We were thinking of introducing the following concepts in Helix


   1. Entry/Exit criteria for each state/transitions. Allows us to model
   dependency between resources.
   2. Hierarchical state machine, this allows dependency and might allow us
   to express more complex behavior.

See
http://en.wikipedia.org/wiki/UML_state_machine
https://code.google.com/p/bbvfsm/wiki/GettingStarted

Thoughts ?

Thanks,
Kishore G