diff --git a/p5.md b/p5.md index 9bd17673d3fd760510e7d66587fdf97fe52f419c..7148e161540f92b929ac317b4848b857a7450e1a 100644 --- a/p5.md +++ b/p5.md @@ -1,7 +1,12 @@ # RAFT -**v1.1** +**v1.11** ## Due: Nov 19, 2023, 11:59:59 pm +Latest changes: +- Follower replica getting a command request should forward to the +leader (and wait). The incoming context should be used in the +forward. This change should took about two lines of code. + ## Setup Download files [here](https://sedna.cs.umd.edu/818/projects/p5.tgz?1). @@ -55,8 +60,11 @@ Your servers and clients are called as follows: of the system and the command is a simple uninterpreted string. For example: `go run client.go localhost:8002 one` submits the command "one" to - `localhost:8002`. If this host is not the leader it returns *false* - to the client, which prints this out. The RPC to the server will not + `localhost:8002`. If this host is not the leader, the request should + be forwarded to the true leader using the same context. So the + client will be waiting on the local raft gothread, which is waiting + on the remote replica gothread, which is waiting on the channel that + will be activated when the command commits. The RPC to the server will not return until the command is committed, at which point the client will print out "true".