shardmaster

package
v0.0.0-...-ae99a8b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OK               = "OK"
	ErrWrongLeader   = "ErrWrongLeader"
	ErrTimeout       = "ErrTimeout"
	InvalidConfigNum = 0
	InvalidGID       = 0
)
View Source
const (
	JOIN  = "Join"
	LEAVE = "Leave"
	MOVE  = "Move"
	QUERY = "Query"
)
View Source
const NShards = 10

The number of shards.

View Source
const TryNextServerInterval = 20 * time.Millisecond
View Source
const WaitOpTimeOut = time.Millisecond * 500

Variables

This section is empty.

Functions

This section is empty.

Types

type Clerk

type Clerk struct {
	// contains filtered or unexported fields
}

func MakeClerk

func MakeClerk(servers []*labrpc.ClientEnd) *Clerk

func (*Clerk) Join

func (ck *Clerk) Join(servers map[int][]string)

func (*Clerk) Leave

func (ck *Clerk) Leave(gids []int)

func (*Clerk) Move

func (ck *Clerk) Move(shard int, gid int)

func (*Clerk) Query

func (ck *Clerk) Query(num int) Config

type ClerkMsgId

type ClerkMsgId int64

type Config

type Config struct {
	Num    int              // config number
	Shards [NShards]int     // shard -> gid
	Groups map[int][]string // gid -> servers[]
}

A configuration -- an assignment of shards to groups. Please don't change this.

type Err

type Err string

type ExeResult

type ExeResult struct {
	Config Config
	Err    Err
}

type JoinArgs

type JoinArgs struct {
	Servers  map[int][]string // new GID -> servers mappings
	ClientId TypeClientId
	MsgId    ClerkMsgId
}

type JoinReply

type JoinReply struct {
	WrongLeader bool
	Err         Err
}

type LeaveArgs

type LeaveArgs struct {
	GIDs     []int
	ClientId TypeClientId
	MsgId    ClerkMsgId
}

type LeaveReply

type LeaveReply struct {
	WrongLeader bool
	Err         Err
}

type Method

type Method string

type MoveArgs

type MoveArgs struct {
	Shard    int
	GID      int
	ClientId TypeClientId
	MsgId    ClerkMsgId
}

type MoveReply

type MoveReply struct {
	WrongLeader bool
	Err         Err
	ClientId    TypeClientId
	MsgId       ClerkMsgId
}

type Op

type Op struct {
	// Your data here.
	Method    Method
	JoinArgs  JoinArgs
	LeaveArgs LeaveArgs
	MoveArgs  MoveArgs
	QueryArgs QueryArgs

	ClientId TypeClientId
	MsgId    ClerkMsgId

	// ServerId + OpId is unique for each op
	ServerId int
	OpId     TypeOpId
}

type QueryArgs

type QueryArgs struct {
	Num      int // desired config number
	ClientId TypeClientId
	MsgId    ClerkMsgId
}

type QueryReply

type QueryReply struct {
	WrongLeader bool
	Err         Err
	Config      Config
}

type ShardMaster

type ShardMaster struct {
	// contains filtered or unexported fields
}

func StartServer

func StartServer(servers []*labrpc.ClientEnd, me int, persister *raft.Persister) *ShardMaster

servers[] contains the ports of the set of servers that will cooperate via Paxos to form the fault-tolerant shardmaster service. me is the index of the current server in servers[].

func (*ShardMaster) Join

func (sm *ShardMaster) Join(args *JoinArgs, reply *JoinReply)

func (*ShardMaster) Kill

func (sm *ShardMaster) Kill()

the tester calls Kill() when a ShardMaster instance won't be needed again. you are not required to do anything in Kill(), but it might be convenient to (for example) turn off debug output from this instance.

func (*ShardMaster) Leave

func (sm *ShardMaster) Leave(args *LeaveArgs, reply *LeaveReply)

func (*ShardMaster) Move

func (sm *ShardMaster) Move(args *MoveArgs, reply *MoveReply)

func (*ShardMaster) Query

func (sm *ShardMaster) Query(args *QueryArgs, reply *QueryReply)

func (*ShardMaster) Raft

func (sm *ShardMaster) Raft() *raft.Raft

needed by shardkv tester

type TypeClientId

type TypeClientId int64

type TypeOpId

type TypeOpId int64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL