Next: Trying all permutations Up: Homogeneity Previous: Homogeneity

Avoiding precedence

A set of scripts that exhibit awareness, convergence, and homogeneity with one another has unexpected properties that may not be evident at first glance.

Proposition 3: Scripts that are convergent and homogeneous may be executed in any order without harm to a functioning network.
Since they will not repair non-problems, they will do nothing in a functioning network, and since they will agree on results, they will not undo each others' changes.

This means that even if we do not know the dependencies between scripts, we can dynamically discover an order in which they work properly:

Proposition 4: Given a set of aware, convergent, and homogeneous scripts that repair parts of a network, we can assure network function by cycling through all possible permutations of the scripts.
Given a little thought, this claim is relatively obvious. If a script is safe to repeat until it works, and innocuous when not needed, one can simply try it in all possible contexts until it works. If there is an order in which the scripts will work, that order will be tried, so that precedences will be satisfied.

In our decision tree example, step H depends upon the success of step G, while step F depends upon the success of step H, so that the appropriate execution order is ``GHF''. But even if we do not know this order, we can still utilize the tests effectively by repeating them so that all possible orders will be contained in the pattern of repetition. If we execute the steps in the order ``FGHFGHF'', the appropriate ``GHF'' subsequence is present in that ordering. The sequence ``FGHFGHF'' contains all possible permutations of F,G, and H as subsequences:

```
(FGHFGHF)
FGH....
F.H.G..
.GHF...
.G.F.H.
..HFG..
..H.G.F
```
After this sequence of executions, ftp will be running if it possibly can be made to run by the debugging processes as given.

Next: Trying all permutations Up: Homogeneity Previous: Homogeneity
Alva L. Couch
2001-10-02