190 likes | 309 Views
This paper presents a systematic protocol for tree construction, focusing on designing fault-tolerant systems that maintain tree invariants and fault-span properties. Each process in the system has a unique ID and maintains a parent variable, forming a tree structure in an ideal state. Faults can lead to unrooted or multiple rooted trees, and nodes need to be aware of their statuses. The approach involves using colored variables to signify the state of each node (green for rooted, red for unrooted) and ensures that corrective actions do not violate existing constraints during reconstruction.
E N D
Design of Nonmasking Tree Algorithm • Goal: design a tree construction protocol systematically by constructing its invariant and fault-span
Ideal State • Each process j maintains a variable P.j. P.j denotes the parent of j in the tree. • Each process also has a unique ID • In an ideal state the graph imposed by the parent relation forms a tree
Faults • Can fail or repair a process • Goal: Reconstruct the tree with the available processes
Due to faults, we may have • Unrooted trees • Because some node’s parent has failed • Multiple (rooted) trees • For example, when a node is repaired, it may form a tree by itself • Observe that there are no cycles. In other words, in the presence of faults, a cycle is not created. • We may want to preserve this during reconstruction. • I.e., this constraint should be in the fault-span
Predicates for Fault-Span (1) • The graph imposed by the parent relation is a forest
Approach for Reconstruction • Dealing with unrooted trees • Somehow the nodes in unrooted trees should be informed so that they know that they are in an unrooted tree • Approach: Introduce a variable color (col) • Green = node thinks it is in rooted tree • Red = node thinks it is in unrooted tree
Action (1) col.j = green (P.j N.j col.(P.j) = red) col.j = red
Predicate in Invariant • What is it that we would like to have true if this action is executed • (P.j N.j col.(P.j) = red) col.j = red
Predicate in Fault-Span (2) • The graph imposed by the parent relation is a forest • col.j = red (P.j N.j col.(P.j) = red)
Note • Observe that Action (1) is aimed at correcting a predicate in the invariant • Must ensure that during correction, the fault-span constraints are not violated
Predicate in Invariant • (P.j N.j col.(P.j) = red) col.j = red • col.j = green
Action (2) • When should a node set its color to green • Need to ensure that constraints of fault-span are not violated • Need to ensure that constraints of previous predicates in invariant are not violated
Action (2) col.j = red (????) col.j = green Choose ???? so that this action does not affect fault-span predicate/previous predicates in invariant
Merging Multiple Trees • Introduce variable root • root.j denotes the ID of the process that j believes to be the root • If a process finds another process with higher root value, it can choose to switch to it.
Action (2) modified col.j = red (j has no children) col.j = green, P.j = j, root.j = j
Predicate in Invariant (3) • (P.j N.j col.(P.j) = red) col.j = red • col.j = green • root.j = root.k
Action (3) root.j < root.k (????) root.j = root.k, P.j = k
Predicate in Fault-Span • The graph imposed by the parent relation is a forest • col.j = red (P.j N.j col.(P.j) = red) • col.(P.j) = green root.j root.(P.j)
Recovery Action for Process Recovery of node j col.j = red, P.j = j, root.j = j