The ability of a system to recover from unexpected change in its environment or disruptions to its internal state is an indication of robust design and autonomous control. Recovery can be constrained by service availability requirements, so that even during periods of recovery, new service requests should be admitted and processed in a timely manner. Given that complex systems are constructed from many components, it is sensible to investigate how individual components can facilitate recovery and also satisfy availability requirements. The component presented is a search tree data structure that can recover from any disruption: it is a self-stabilizing data structure. No matter how severe the damage to its internal state, new operations on the data structure behave properly and the responses to operations are accurate indicators of any change to the search tree, even as the search tree recovery is underway. This paper resolves, for the first time, issues of dynamic allocation and pointer organization in a stabilizing data structure. After any sequence of O(m) operations in an arbitrary initial search tree of m nodes, the tree becomes balanced, all operations have O(lg n) running time, and free chains are adequate to supply new nodes for insertions. To meet availability constraints, operations have O(lg K) running time during periods of recovery, where K is the maximum number of items that the data structure can contain.
['Ted Herman', 'Toshimitsu Masuzawa']
A stabilizing search tree with availability properties