From bb597de9805a076d4a4ff95c66b5a8aa6737bb12 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 2 Apr 2025 06:49:54 -0400 Subject: [PATCH] update --- src/shardkv1/shardctrler/shardctrler.go | 6 +++--- src/shardkv1/shardgrp/client.go | 4 ++-- src/shardkv1/shardgrp/server.go | 14 ++++++------- src/shardkv1/shardgrp/shardrpc/shardrpc.go | 16 ++------------- src/shardkv1/shardkv_test.go | 24 +++++++++++----------- src/shardkv1/test.go | 10 ++++----- 6 files changed, 31 insertions(+), 43 deletions(-) diff --git a/src/shardkv1/shardctrler/shardctrler.go b/src/shardkv1/shardctrler/shardctrler.go index 27b555a..144fe84 100644 --- a/src/shardkv1/shardctrler/shardctrler.go +++ b/src/shardkv1/shardctrler/shardctrler.go @@ -57,9 +57,9 @@ func (sck *ShardCtrler) ChangeConfigTo(new *shardcfg.ShardConfig) { } -// Return the current configuration and its version number -func (sck *ShardCtrler) Query() (*shardcfg.ShardConfig, rpc.Tversion) { +// Return the current configuration +func (sck *ShardCtrler) Query() *shardcfg.ShardConfig { // Your code here. - return nil, 0 + return nil } diff --git a/src/shardkv1/shardgrp/client.go b/src/shardkv1/shardgrp/client.go index 9461fbf..ed2b209 100644 --- a/src/shardkv1/shardgrp/client.go +++ b/src/shardkv1/shardgrp/client.go @@ -29,7 +29,7 @@ func (ck *Clerk) Put(key string, value string, version rpc.Tversion) rpc.Err { return "" } -func (ck *Clerk) Freeze(s shardcfg.Tshid, num shardcfg.Tnum) ([]byte, rpc.Err) { +func (ck *Clerk) FreezeShard(s shardcfg.Tshid, num shardcfg.Tnum) ([]byte, rpc.Err) { return nil, "" } @@ -37,6 +37,6 @@ func (ck *Clerk) InstallShard(s shardcfg.Tshid, state []byte, num shardcfg.Tnum) return "" } -func (ck *Clerk) Delete(s shardcfg.Tshid, num shardcfg.Tnum) rpc.Err { +func (ck *Clerk) DeleteShard(s shardcfg.Tshid, num shardcfg.Tnum) rpc.Err { return "" } diff --git a/src/shardkv1/shardgrp/server.go b/src/shardkv1/shardgrp/server.go index a723a95..d982bc3 100644 --- a/src/shardkv1/shardgrp/server.go +++ b/src/shardkv1/shardgrp/server.go @@ -37,17 +37,17 @@ func (kv *KVServer) Restore(data []byte) { // Your code here } -func (kv *KVServer) Get(args *shardrpc.GetArgs, reply *rpc.GetReply) { +func (kv *KVServer) Get(args *rpc.GetArgs, reply *rpc.GetReply) { // Your code here } -func (kv *KVServer) Put(args *shardrpc.PutArgs, reply *rpc.PutReply) { +func (kv *KVServer) Put(args *rpc.PutArgs, reply *rpc.PutReply) { // Your code here } // Freeze the specified shard (i.e., reject future Get/Puts for this // shard) and return the key/values stored in that shard. -func (kv *KVServer) Freeze(args *shardrpc.FreezeArgs, reply *shardrpc.FreezeReply) { +func (kv *KVServer) FreezeShard(args *shardrpc.FreezeShardArgs, reply *shardrpc.FreezeShardReply) { // Your code here } @@ -57,7 +57,7 @@ func (kv *KVServer) InstallShard(args *shardrpc.InstallShardArgs, reply *shardrp } // Delete the specified shard. -func (kv *KVServer) Delete(args *shardrpc.DeleteShardArgs, reply *shardrpc.DeleteShardReply) { +func (kv *KVServer) DeleteShard(args *shardrpc.DeleteShardArgs, reply *shardrpc.DeleteShardReply) { // Your code here } @@ -86,9 +86,9 @@ func (kv *KVServer) killed() bool { func StartServerShardGrp(servers []*labrpc.ClientEnd, gid tester.Tgid, me int, persister *tester.Persister, maxraftstate int) []tester.IService { // call labgob.Register on structures you want // Go's RPC library to marshall/unmarshall. - labgob.Register(shardrpc.PutArgs{}) - labgob.Register(shardrpc.GetArgs{}) - labgob.Register(shardrpc.FreezeArgs{}) + labgob.Register(rpc.PutArgs{}) + labgob.Register(rpc.GetArgs{}) + labgob.Register(shardrpc.FreezeShardArgs{}) labgob.Register(shardrpc.InstallShardArgs{}) labgob.Register(shardrpc.DeleteShardArgs{}) labgob.Register(rsm.Op{}) diff --git a/src/shardkv1/shardgrp/shardrpc/shardrpc.go b/src/shardkv1/shardgrp/shardrpc/shardrpc.go index 007f11c..980c078 100644 --- a/src/shardkv1/shardgrp/shardrpc/shardrpc.go +++ b/src/shardkv1/shardgrp/shardrpc/shardrpc.go @@ -5,24 +5,12 @@ import ( "6.5840/shardkv1/shardcfg" ) -// Same as Put in kvsrv1/rpc -type PutArgs struct { - Key string - Value string - Version rpc.Tversion -} - -// Same as Get in kvsrv1/rpc -type GetArgs struct { - Key string -} - -type FreezeArgs struct { +type FreezeShardArgs struct { Shard shardcfg.Tshid Num shardcfg.Tnum } -type FreezeReply struct { +type FreezeShardReply struct { State []byte Num shardcfg.Tnum Err rpc.Err diff --git a/src/shardkv1/shardkv_test.go b/src/shardkv1/shardkv_test.go index 8dc41bc..1107ccd 100644 --- a/src/shardkv1/shardkv_test.go +++ b/src/shardkv1/shardkv_test.go @@ -40,9 +40,9 @@ func TestInitQuery5A(t *testing.T) { sck.InitConfig(scfg) // Read the initial configuration and check it - cfg, v := sck.Query() - if v != 1 || cfg.Num != 1 || cfg.Shards[0] != shardcfg.Gid1 { - ts.t.Fatalf("Static wrong %v %v", cfg, v) + cfg := sck.Query() + if cfg.Num != 1 || cfg.Shards[0] != shardcfg.Gid1 { + ts.t.Fatalf("Static wrong %v", cfg) } cfg.CheckConfig(t, []tester.Tgid{shardcfg.Gid1}) } @@ -86,14 +86,14 @@ func TestJoinBasic5A(t *testing.T) { ka, va := ts.SpreadPuts(ck, NKEYS) sck := ts.ShardCtrler() - cfg, _ := sck.Query() + cfg := sck.Query() gid2 := ts.newGid() if ok := ts.joinGroups(sck, []tester.Tgid{gid2}); !ok { ts.t.Fatalf("TestJoinBasic5A: joinGroups failed") } - cfg1, _ := sck.Query() + cfg1 := sck.Query() if cfg.Num+1 != cfg1.Num { ts.t.Fatalf("TestJoinBasic5A: wrong num %d expected %d ", cfg1.Num, cfg.Num+1) } @@ -269,7 +269,7 @@ func TestShutdown5A(t *testing.T) { // Test that Gets for keys at groups that are alive // return -func TestProgressShutdown(t *testing.T) { +func TestProgressShutdown5A(t *testing.T) { const ( NJOIN = 4 NSEC = 2 @@ -298,7 +298,7 @@ func TestProgressShutdown(t *testing.T) { alive[g] = true } - cfg, _ := sck.Query() + cfg := sck.Query() ch := make(chan rpc.Err) go func() { @@ -321,7 +321,7 @@ func TestProgressShutdown(t *testing.T) { } // Test that Gets from a non-moving shard return quickly -func TestProgressJoin(t *testing.T) { +func TestProgressJoin5A(t *testing.T) { const ( NJOIN = 4 NSEC = 4 @@ -340,7 +340,7 @@ func TestProgressJoin(t *testing.T) { grps := ts.groups(NJOIN) ts.joinGroups(sck, grps) - cfg, _ := sck.Query() + cfg := sck.Query() newcfg := cfg.Copy() newgid := tester.Tgid(NJOIN + 3) if ok := newcfg.JoinBalance(map[tester.Tgid][]string{newgid: []string{"xxx"}}); !ok { @@ -491,7 +491,7 @@ func TestJoinLeave5B(t *testing.T) { ka, va := ts.SpreadPuts(ck, NKEYS) sck := ts.ShardCtrler() - cfg, _ := sck.Query() + cfg := sck.Query() ts.Group(gid1).Shutdown() @@ -520,7 +520,7 @@ func TestJoinLeave5B(t *testing.T) { ts.Fatalf("Join didn't complete") } - cfg1, _ := sck.Query() + cfg1 := sck.Query() if cfg.Num+1 != cfg1.Num { ts.t.Fatalf("wrong num %d expected %d ", cfg1.Num, cfg.Num+1) } @@ -636,7 +636,7 @@ func TestPartitionControllerJoin5C(t *testing.T) { sck0 := ts.makeShardCtrler() sck0.InitController() - scfg, _ := sck0.Query() + scfg := sck0.Query() if !scfg.IsMember(ngid) { t.Fatalf("Didn't recover gid %d", ngid) } diff --git a/src/shardkv1/test.go b/src/shardkv1/test.go index 3ee5ad1..607b16c 100644 --- a/src/shardkv1/test.go +++ b/src/shardkv1/test.go @@ -127,14 +127,14 @@ func (ts *Test) StartServerShardGrp(servers []*labrpc.ClientEnd, gid tester.Tgid } func (ts *Test) checkMember(sck *shardctrler.ShardCtrler, gid tester.Tgid) bool { - cfg, _ := sck.Query() + cfg := sck.Query() ok := cfg.IsMember(gid) return ok } // Add group gid func (ts *Test) join(sck *shardctrler.ShardCtrler, gid tester.Tgid, srvs []string) { - cfg, _ := sck.Query() + cfg := sck.Query() newcfg := cfg.Copy() ok := newcfg.JoinBalance(map[tester.Tgid][]string{gid: srvs}) if !ok { @@ -157,7 +157,7 @@ func (ts *Test) joinGroups(sck *shardctrler.ShardCtrler, gids []tester.Tgid) boo // Group gid leaves. func (ts *Test) leave(sck *shardctrler.ShardCtrler, gid tester.Tgid) { - cfg, _ := sck.Query() + cfg := sck.Query() newcfg := cfg.Copy() ok := newcfg.LeaveBalance([]tester.Tgid{gid}) if !ok { @@ -267,7 +267,7 @@ func (ts *Test) partitionCtrler(ck kvtest.IKVClerk, gid tester.Tgid, ka, va []st sck, clnt := ts.makeShardCtrlerClnt() sck.InitController() - cfg, _ := ts.ShardCtrler().Query() + cfg := ts.ShardCtrler().Query() num := cfg.Num state := 0 @@ -320,7 +320,7 @@ func (ts *Test) partitionCtrler(ck kvtest.IKVClerk, gid tester.Tgid, ka, va []st sck0, clnt0 := ts.makeShardCtrlerClnt() sck0.InitController() - cfg, _ = sck0.Query() + cfg = sck0.Query() s := "join" if state == LEAVE { s = "leave"