Convergence and Forced Operations
Cfengine is about convergence to a stable state. The state of the system should
normally be at a fixed point, or else it should be returned to a fixed point.
Occasionally changes in dependencies lead us to force changes, e.g. kill and
restart a daemon.
commands:
"Stop command";
"Start command";
or
processes:
"myprocess" signal => "term";
commands:
"start command";
The problem with these commands is that they are not "guarded" (in the sense of Dijkstra's
guarded commands). Such a command is not a convergent change unless it is qualified by a
guarding class.
e.g.
processes:
change_in_dependency::
"myprocess" signal => "term";
commands:
change_in_dependency::
"start command"
or
execution:
change_in_dependency::
"Stop command";
"Start command";
or even
processes:
change_in_dependency::
"myprocess"
signal => "term"
# define newclass ;
commands:
new_class::
"start command"
Mark Burgess
Last modified: Sat Aug 2 09:58:12 CEST 2008