update
This commit is contained in:
parent
8f21c11cfc
commit
bb597de980
@ -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
|
||||
}
|
||||
|
||||
|
@ -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 ""
|
||||
}
|
||||
|
@ -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{})
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user