ev
General Instructions. Students are required to work together in teams. You may work in the team you used for an earlier phase or you may form a new team. An assignment submitted on behalf of a "team" having fewer than 3 or more than 5 students will receive a grade of F. All members of the team are responsible for understanding the entire assignment.
This assignment builds on Phase IV. Feel free to use any team's solutions to that phase as the basis for your solution to this phase.
No late assignments will be accepted.
Academic Integrity. Collaboration between groups is prohibited and will be treated as a violation of the University's academic integrity code.
Processor Restarts. "Recovery code" is executed following the repair of a faulty branch server. Phase IV ignored this; it's now time to write that recovery code. Your recovery code should reconstruct the state of the branch server for the local branch and for all branch server replicas that were being executed and failed along with it.
For testing your system, it's probably a good idea to extend the branch GUI with some additional status indicators to signal which replicas at that branch are operational, which are executing recovery code, and which are halted (due to failures).
State Machine Reconfiguration. An extremely flexible implementation of replicated state machines would provide a new management interface (accessible through a new GUI) that allows state machine replicas on any host to be terminated and allows new state machine replicas to be started on any host. The CONFIG file now is interpreted as defining the initial configuration for the system, and subsequent actions by system administrators (over this new interface) cause other configurations to exist.
Such a new management interface will get additional credit; we will be evaluating both the new interface, what it permits and doesn't permit, and how the new interface is integrated into existing system components (e.g., branch GUI). A good design for accomplishing system reconfiguration will build as much as possible on existing functionality. For example, terminating a server replica is not very different from a fail-stop failure and starting a server replica is not very different from restarting a server replica when a failed host is restarted.
A new GUI is not the only way to leverage the new management interface. One might also employ a configuration management process to instigate configuration changes. This process, for example, would start state-machine replicas in response to host failures so that the total number of replicas for each state machine remains near some preferred level. This configuration management process instigates action in response to processor failures and restarts. Credit will be awarded for sensible implementations of such functionality.
Submission Procedure. Create a directory containing the files you wish us to grade. Call this directory xxxxx0, where xxxxx is the Cornell network id of the team member whose net id is alphabetically smallest of your team. Then copy this directory to the following folder:
\\Goose\courses\cs514-fall01\proj05.submit
Don't be disturbed by warnings informing you that the file cannot be accessed after it has been copied.
Should you wish to revise your submission after you have copied it to our folder, then simply correct the files and re-copy the entire directory---but this time use the name xxxxx1. Revisions to that should be named xxxxx2, and so on. We will grade only the largest-numbered file of a series. No late submissions will be accepted.
Your directory should contain the following files (at least):
Grading. Your grade will be based on the following elements: