{'fraction_non_alphanumeric': 0.017605633802816902, 'fraction_numerical': 0.0, 'mean_word_length': 5.247252747252747, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Recovery guarantees in mobile systems

Mobile applications increasingly require transaction-like properties, particularly those of recovery. Because there is a lack of abstractions to decompose the machinery of recovery, realizing recovery is difficultand error-prone, especially in a novel context like mobile systems. We introduce recovery guarantees to tackle this problem by characterizing the assurances relevant to recovery that a subsystem must give to another. They describe the what can be expected but not the how it is implemented for recovery. Guarantees are complemented by recovery protocols, which prescribe behaviors subsystems should follow in order to take advantage of the guarantees. In this paper we use the notions of recovery guarantees and protocols to show the relationships, vis-` recovery, between the components of a mobile system. Our analysis shows which components of recovery remain unchanged (from a conventional recovery design) and which respond to the particular needs of mobile systems. This sheds light not just on how to do recovery on mobile systems but also on the nature of recovery in general.