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
