On Jul 24, 2006, at 2:07 PM, Pete Wyckoff wrote:

[EMAIL PROTECTED] wrote on Mon, 24 Jul 2006 14:47 -0400:
3) the state machine language has a keyword that lets you state that the
next state is "terminate" which could be used to finish the state
machine, but right now the code has logic that detects this and prints a warning that you should NOT use this. I don't know why we created this
method and then made it illegal.  Go figure!

I prefer #3 by a large margin over the other options.  It's
explicit, not racy, doesn't over-use the return value for a
conceptually different event, and doesn't rely on modifying
parent state.  Wonder why it was disabled.

I think terminate ended up being more of a placeholder...we still use it in quite a few of our state machines, but the last state action is expected to call server_state_machine_complete which prevents the SM from transitioning to the 'terminate' state. I've thought of it as an assert: if you get here you're forgetting something.

It sounds like option 3 is best. My only concern would be using the state machine definition to define completion makes me forget about cleaning up in the last action (or actions). I wouldn't mind seeing option 3 and option 4 being required: check the return code and make sure the next state is 'terminate'. If one of those fails there's a bug in the code. I think that might help (at least me) verify that state actions that are meant to complete need to do cleanup first.

-sam


Regarding names, STATE_COMPLETE and STATE_MACHINE_TERMINATED seem
like find candidates as you have sort of suggested.

My pocket change.

                -- Pete
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers


_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to