Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 50 lines (29 sloc) 2.942 kb
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
1 PASC
2 ====
3
555ca89 Daniel Gómez Ferro More info about pasc
dgomezferro authored
4 Fault-tolerant distributed systems need to tolerate not only crashes but also random data corruptions due to disk failures, bit-flips in memory, or CPU/bus errors. These random errors can propagate and have unpredictable effects. However, manually adding error detection checks is cumbersome and difficult. Which checks need to be added? Where to place them? What if the variables used for the checks are themselves corrupted?
5
2d238a7 Daniel Gómez Ferro Update README.md
dgomezferro authored
6 PASC is a Java library that automates the detection of Arbitrary State Corruption faults in processes of a distributed system. The motivation behind PASC is that developers should not care about these problems. They should focus on making their distributed system crash-tolerant. The PASC library wraps the processes of the system and takes care of executing all the checks that are necessary to transform arbitrary state corruptions into crashes and dropped messages. All this is transparent to the application. If a faulty process wrapped with PASC sends a corrupted messages, this corruption is exposed to the receiver, which discards the message.
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
7
6712f4c Daniel Gómez Ferro Update README.md
dgomezferro authored
8 If you have any question, please see hour [wiki](https://github.com/yahoo/pasc/wiki) or contact us at pasc-library@yahoogroups.com
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
9
555ca89 Daniel Gómez Ferro More info about pasc
dgomezferro authored
10 How to use PASC?
11 ----------------
12
13 A message-passing distributed systems consists of processes. Processes can be modeled as collections of message handlers, each processing a different type of messages. All message handlers modify the state of the process.
14
15 A PASC process is implemented by specifying classes describing the **process state**, **event handlers** and the **messages** using the templates provided by the library.
16
17
18 Architecture
19 ------------
20
21 The PASC library uses five techniques to handle ASC faults: state replication, redundant message handling, updates comparison, control-flow checks, and message verification. The main entry point to the library is the PascRuntime, which is responsible for dispachting messages and executing the message handlers guaranteeing ASC invariants. The user defined state is replicated and the message handlers are executed twice, checking that the result is always the same.
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
22
555ca89 Daniel Gómez Ferro More info about pasc
dgomezferro authored
23 ### Including PASC in a distributed system
24
25 The PASC runtime is initialized when the process is started.
26
9bc3262 Daniel Gómez Ferro Fix formatting
dgomezferro authored
27 final PascRuntime runtime = new PascRuntime(protection);
555ca89 Daniel Gómez Ferro More info about pasc
dgomezferro authored
28
29 The protection flag allows to turn off PASC if needed.
30
31 The initialization procedure must pass the process state, message handler and message classes used to the runtime. During the normal operations, all is needed to process an input message is to tell the runtime to handle the message.
32
9bc3262 Daniel Gómez Ferro Fix formatting
dgomezferro authored
33 List<Message> outputMessages = runtime.handleMessage(inputMessage)
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
34
35 Compilation
36 -----------
37
38 The library is implemented in Java and depends on several other projects:
39 * Javassist
40 * asm
41 * StringTemplate (ANTLR)
42 * Objenesis
43 * Cloning
44
45 Pasc uses maven as its buildsystem. Compile with
555ca89 Daniel Gómez Ferro More info about pasc
dgomezferro authored
46
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
47 $ mvn install
555ca89 Daniel Gómez Ferro More info about pasc
dgomezferro authored
48
5b444d4 Daniel Gómez Ferro Create README.md
dgomezferro authored
49 Tests should run cleanly.
Something went wrong with that request. Please try again.