-
Notifications
You must be signed in to change notification settings - Fork 1
/
vsr_documentation.txt
33 lines (28 loc) · 2.15 KB
/
vsr_documentation.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
List of Actors:
1. Client
The configuration and the current view-number allows it to know which replica is currently the primary.
Each msg sent to the client informs it of the current view num.
Client can have atmost one outstanding request at any time. Later request should have larger req numbers
2. Replica
Replicas participate in processing of client requests only when their status is normal.
All participating replicas are in the same view.
Initial view number is 0
Status can be "NORMAL , "VIEW_CHANGE" or "RECOVERY". Always starts in Normal mode.
Sends Commit Message incase there are no REQUEST from client within timwout period
In case the primary fails, the client will timeout and the backup replicas will initiate the view change protocol.
client will resend the request to all the replicas and wait for the new primary to respond. View change protociol will
ensure that the new primary is decided. The new primary then reply back with the updated view number so that the client can
update that as well.
1. Create an external process which will be used for error injection. this will automate the error scenarios.
2. Selected processes will crash and they will enter into recovery mode after a certain timeout which will be decided by the test node.
3. Message Loss can be tested
4. Reconfiguration - Not Supported
VR - State at Replica
• The configuration: This is a sorted array containing the IP addresses of each of the 2f + 1 replicas.
• The replica number: This is the index into the configuration where this replica’s IP address is stored.
• The current view-number, initially 0.
• The current status, either normal, view-change, or recovering.
• The op-number assigned to the most recently received request, initially 0.
• The log. This is an array containing op-number entries. The entries contain the requests that have been received so far in their assigned order.
• The commit-number is the op-number of the most recently committed operation.
• The client-table: This records for each client the number of its most recent request, plus, if the request has been executed, the result sent for that request.