From 7b670fdd4808dcb4c3e1ba384e3aeaea9eecd9b9 Mon Sep 17 00:00:00 2001 From: kenctrl Date: Sun, 3 Mar 2024 16:30:37 -0500 Subject: [PATCH 1/3] update PutAppend spec --- src/kvraft/server.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/kvraft/server.go b/src/kvraft/server.go index 5e8a6ec..551b8ae 100644 --- a/src/kvraft/server.go +++ b/src/kvraft/server.go @@ -1,12 +1,13 @@ package kvraft import ( - "6.5840/labgob" - "6.5840/labrpc" - "6.5840/raft" "log" "sync" "sync/atomic" + + "6.5840/labgob" + "6.5840/labrpc" + "6.5840/raft" ) const Debug = false @@ -18,7 +19,6 @@ func DPrintf(format string, a ...interface{}) (n int, err error) { return } - type Op struct { // Your definitions here. // Field names must start with capital letters, @@ -37,11 +37,12 @@ type KVServer struct { // Your definitions here. } - func (kv *KVServer) Get(args *GetArgs, reply *GetReply) { // Your code here. } +// unlike in lab 2, neither Put nor Append should return a value. +// this is already reflected in the PutAppendReply struct. func (kv *KVServer) PutAppend(args *PutAppendArgs, reply *PutAppendReply) { // Your code here. } From 52bf53742ef29d4e86ac40f4c8790c5c13b99a57 Mon Sep 17 00:00:00 2001 From: kenctrl Date: Tue, 5 Mar 2024 01:21:16 -0500 Subject: [PATCH 2/3] separate Put and Append in lab 4 kvsrv --- src/kvraft/common.go | 1 - src/kvraft/server.go | 8 ++++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/kvraft/common.go b/src/kvraft/common.go index e5ee442..bca7ed1 100644 --- a/src/kvraft/common.go +++ b/src/kvraft/common.go @@ -12,7 +12,6 @@ type Err string type PutAppendArgs struct { Key string Value string - Op string // "Put" or "Append" // You'll have to add definitions here. // Field names must start with capital letters, // otherwise RPC will break. diff --git a/src/kvraft/server.go b/src/kvraft/server.go index 551b8ae..3baa05f 100644 --- a/src/kvraft/server.go +++ b/src/kvraft/server.go @@ -43,7 +43,11 @@ func (kv *KVServer) Get(args *GetArgs, reply *GetReply) { // unlike in lab 2, neither Put nor Append should return a value. // this is already reflected in the PutAppendReply struct. -func (kv *KVServer) PutAppend(args *PutAppendArgs, reply *PutAppendReply) { +func (kv *KVServer) Put(args *PutAppendArgs, reply *PutAppendReply) { + // Your code here. +} + +func (kv *KVServer) Append(args *PutAppendArgs, reply *PutAppendReply) { // Your code here. } @@ -82,7 +86,7 @@ func StartKVServer(servers []*labrpc.ClientEnd, me int, persister *raft.Persiste // call labgob.Register on structures you want // Go's RPC library to marshall/unmarshall. labgob.Register(Op{}) - + kv := new(KVServer) kv.me = me kv.maxraftstate = maxraftstate From f4310a86ebfe0a4c276d9db9ad51c727a5d57eb9 Mon Sep 17 00:00:00 2001 From: Ananya Jain Date: Tue, 5 Mar 2024 09:23:25 -0500 Subject: [PATCH 3/3] Update Clerk comment to reflect new Put/Append RPCs --- src/kvraft/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kvraft/client.go b/src/kvraft/client.go index 4762894..60d329f 100644 --- a/src/kvraft/client.go +++ b/src/kvraft/client.go @@ -43,7 +43,7 @@ func (ck *Clerk) Get(key string) string { // shared by Put and Append. // // you can send an RPC with code like this: -// ok := ck.servers[i].Call("KVServer.PutAppend", &args, &reply) +// ok := ck.servers[i].Call("KVServer."+op, &args, &reply) // // the types of args and reply (including whether they are pointers) // must match the declared types of the RPC handler function's