Let it recover: multiparty protocol-induced recovery
File(s)camera_ready.pdf (482.25 KB) p98-neykova.pdf (499.47 KB)
Accepted version
Published version
Author(s)
Neykova, R
Yoshida, N
Type
Conference Paper
Abstract
Fault-tolerant communication systems rely on recovery strategies
which are often error-prone (e.g. a programmer manually specifies
recovery strategies) or inefficient (e.g. the whole system is restarted
from the beginning). This paper proposes a static analysis based on
multiparty session types that can efficiently compute a safe global
state from which a system of interacting processes should be recov-
ered. We statically analyse the communication flow of a program,
given as a multiparty protocol, to extract the causal dependencies
between processes and to localise failures. We formalise our re-
covery algorithm and prove its safety. A recovered communication
system is free from deadlocks, orphan messages and reception er-
rors. Our recovery algorithm incurs less communication cost (only
affected processes are notified) and overall execution time (only
required states are repeated). On top of our analysis, we design
and implement a runtime framework in Erlang where failed pro-
cesses and their dependencies are soundly restarted from a com-
puted safe state. We evaluate our recovery framework on message-
passing benchmarks and a use case for crawling webpages. The
experimental results indicate our framework outperforms a built-in
static recovery strategy in Erlang when a part of the protocol can
be safely recovered.
which are often error-prone (e.g. a programmer manually specifies
recovery strategies) or inefficient (e.g. the whole system is restarted
from the beginning). This paper proposes a static analysis based on
multiparty session types that can efficiently compute a safe global
state from which a system of interacting processes should be recov-
ered. We statically analyse the communication flow of a program,
given as a multiparty protocol, to extract the causal dependencies
between processes and to localise failures. We formalise our re-
covery algorithm and prove its safety. A recovered communication
system is free from deadlocks, orphan messages and reception er-
rors. Our recovery algorithm incurs less communication cost (only
affected processes are notified) and overall execution time (only
required states are repeated). On top of our analysis, we design
and implement a runtime framework in Erlang where failed pro-
cesses and their dependencies are soundly restarted from a com-
puted safe state. We evaluate our recovery framework on message-
passing benchmarks and a use case for crawling webpages. The
experimental results indicate our framework outperforms a built-in
static recovery strategy in Erlang when a part of the protocol can
be safely recovered.
Date Issued
2017-05-02
Date Acceptance
2016-12-20
Citation
CC 2017 Proceedings of the 26th International Conference on Compiler Construction, 2017, pp.98-108
ISBN
978-1-4503-5233-8
Publisher
ACM
Start Page
98
End Page
108
Journal / Book Title
CC 2017 Proceedings of the 26th International Conference on Compiler Construction
Copyright Statement
Copyright is held by the owner/author(s). Creative Commons Attribution 4.0 International (CC BY 4.0)
Sponsor
Engineering & Physical Science Research Council (E
Engineering & Physical Science Research Council (E
Engineering & Physical Science Research Council (EPSRC)
Commission of the European Communities
Engineering & Physical Science Research Council (EPSRC)
Engineering & Physical Science Research Council (E
Grant Number
ERI 025567 (EP/K034413/1)
PO 1553380
EP/K011715/1
612985
EP/N027833/1
72043/2
Source
International Conference on Compiler Construction
Publication Status
Published
Start Date
2017-02-05
Finish Date
2017-02-06
Coverage Spatial
Austin, Texas