operator

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: May 17, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ExpireTime         = 15 * time.Second
	NoopEpoch   uint64 = 0
	NoopShardID uint64 = 0
)

Variables

This section is empty.

Functions

func IsEndStatus

func IsEndStatus(s OpStatus) bool

IsEndStatus checks whether s is an end status.

func OpStatusToString

func OpStatusToString(s OpStatus) string

OpStatusToString converts Status to string.

Types

type AddLogService

type AddLogService struct {
	Target string
	Replica
}

func (AddLogService) IsFinish

func (a AddLogService) IsFinish(state ClusterState) bool

func (AddLogService) String

func (a AddLogService) String() string

type AddTnReplica added in v1.0.0

type AddTnReplica struct {
	StoreID            string
	ShardID, ReplicaID uint64
	LogShardID         uint64
}

func (AddTnReplica) IsFinish added in v1.0.0

func (a AddTnReplica) IsFinish(state ClusterState) bool

func (AddTnReplica) String added in v1.0.0

func (a AddTnReplica) String() string

type Builder

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

Builder is used to create operators. Usage:

op, err := NewBuilder(desc, cluster, shard).
            RemovePeer(store1).
            AddPeer(peer1).
            Build(kind)

The generated Operator will choose the most appropriate execution order according to various constraints.

func NewBuilder

func NewBuilder(desc string, shardInfo logservice.LogShardInfo) *Builder

NewBuilder creates a Builder.

func (*Builder) AddPeer

func (b *Builder) AddPeer(uuid string, peer uint64) *Builder

AddPeer records an add Peer operation in Builder.

func (*Builder) Build

func (b *Builder) Build() (*Operator, error)

Build creates the Operator.

func (*Builder) RemovePeer

func (b *Builder) RemovePeer(uuid string) *Builder

RemovePeer records a remove peer operation in Builder.

type ClusterState added in v1.1.0

type ClusterState struct {
	LogState   pb.LogState
	TNState    pb.TNState
	CNState    pb.CNState
	ProxyState pb.ProxyState
}

type Controller

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

Controller is used to manage operators.

func NewController

func NewController() *Controller

func (*Controller) Dispatch

func (c *Controller) Dispatch(ops []*Operator, logState pb.LogState,
	tnState pb.TNState, cnState pb.CNState, proxyState pb.ProxyState) (commands []pb.ScheduleCommand)

func (*Controller) GetExecutingReplicas added in v0.6.0

func (c *Controller) GetExecutingReplicas() ExecutingReplicas

func (*Controller) GetOperators

func (c *Controller) GetOperators(shardID uint64) []*Operator

GetOperators gets operators from the given shard.

func (*Controller) RemoveFinishedOperator

func (c *Controller) RemoveFinishedOperator(
	logState pb.LogState, tnState pb.TNState, cnState pb.CNState, proxyState pb.ProxyState,
)

func (*Controller) RemoveOperator

func (c *Controller) RemoveOperator(op *Operator) bool

RemoveOperator removes an operator from the operators.

type CreateTaskService added in v0.6.0

type CreateTaskService struct {
	StoreID   string
	StoreType pb.ServiceType
	TaskUser  pb.TaskTableUser
}

func (CreateTaskService) IsFinish added in v0.6.0

func (a CreateTaskService) IsFinish(state ClusterState) bool

func (CreateTaskService) String added in v0.6.0

func (a CreateTaskService) String() string

type DeleteCNStore added in v0.7.0

type DeleteCNStore struct {
	StoreID string
}

func (DeleteCNStore) IsFinish added in v0.7.0

func (a DeleteCNStore) IsFinish(state ClusterState) bool

func (DeleteCNStore) String added in v0.7.0

func (a DeleteCNStore) String() string

type DeleteProxyStore added in v1.1.0

type DeleteProxyStore struct {
	StoreID string
}

func (DeleteProxyStore) IsFinish added in v1.1.0

func (a DeleteProxyStore) IsFinish(state ClusterState) bool

func (DeleteProxyStore) String added in v1.1.0

func (a DeleteProxyStore) String() string

type ExecutingReplicas added in v0.6.0

type ExecutingReplicas struct {
	Adding   map[uint64][]uint64
	Removing map[uint64][]uint64
	Starting map[uint64][]uint64
}

type JoinGossipCluster added in v1.0.0

type JoinGossipCluster struct {
	StoreID  string
	Existing []string
}

func (JoinGossipCluster) IsFinish added in v1.0.0

func (a JoinGossipCluster) IsFinish(state ClusterState) bool

func (JoinGossipCluster) String added in v1.0.0

func (a JoinGossipCluster) String() string

type KillLogZombie added in v0.6.0

type KillLogZombie struct {
	Replica
}

func (KillLogZombie) IsFinish added in v0.6.0

func (a KillLogZombie) IsFinish(state ClusterState) bool

func (KillLogZombie) String added in v0.6.0

func (a KillLogZombie) String() string

type OpStatus

type OpStatus = uint32

OpStatus represents the status of an Operator.

const (

	// STARTED and not finished. Next status: { SUCCESS, CANCELED, EXPIRED}.
	STARTED OpStatus = iota

	// SUCCESS Finished successfully
	SUCCESS

	// CANCELED due to some reason
	CANCELED

	// EXPIRED waiting for too long
	EXPIRED
)

Status list

type OpStatusTracker

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

OpStatusTracker represents the status of an operator.

func NewOpStatusTracker

func NewOpStatusTracker() OpStatusTracker

NewOpStatusTracker creates an OpStatus.

func (*OpStatusTracker) CheckExpired

func (trk *OpStatusTracker) CheckExpired(exp time.Duration) bool

CheckExpired checks if expired, and update the current status.

func (*OpStatusTracker) IsEnd

func (trk *OpStatusTracker) IsEnd() bool

IsEnd checks whether the current status is an end status.

func (*OpStatusTracker) ReachTime

func (trk *OpStatusTracker) ReachTime() time.Time

ReachTime returns the reach time of current status.

func (*OpStatusTracker) ReachTimeOf

func (trk *OpStatusTracker) ReachTimeOf(s OpStatus) time.Time

ReachTimeOf returns the time when reached given status. If didn't reached the given status, return zero.

func (*OpStatusTracker) Status

func (trk *OpStatusTracker) Status() OpStatus

Status returns current status.

func (*OpStatusTracker) String

func (trk *OpStatusTracker) String() string

String implements fmt.Stringer.

func (*OpStatusTracker) To

func (trk *OpStatusTracker) To(dst OpStatus) bool

To transfer the current status to dst if this transition is valid, returns whether transferred.

type OpStep

type OpStep interface {
	fmt.Stringer

	IsFinish(state ClusterState) bool
}

type Operator

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

Operator contains execution steps generated by scheduler.

func CreateAddReplica

func CreateAddReplica(uuid string, shardInfo pb.LogShardInfo, replicaID uint64) (*Operator, error)

func CreateDeleteCNOp added in v0.7.0

func CreateDeleteCNOp(brief, uuid string) *Operator

func CreateDeleteProxyOp added in v1.1.0

func CreateDeleteProxyOp(brief, uuid string) *Operator

func CreateKillZombie added in v0.6.0

func CreateKillZombie(brief, uuid string, shardID, replicaID uint64) *Operator

func CreateRemoveReplica

func CreateRemoveReplica(uuid string, shardInfo pb.LogShardInfo) (*Operator, error)

func CreateStartReplica

func CreateStartReplica(brief, uuid string, shardID, replicaID uint64) *Operator

func CreateStopReplica

func CreateStopReplica(brief string, uuid string, shardID uint64, epoch uint64) *Operator

func CreateTaskServiceOp added in v0.6.0

func CreateTaskServiceOp(brief, uuid string, serviceType pb.ServiceType, user pb.TaskTableUser) *Operator

func JoinGossipClusterOp added in v1.0.0

func JoinGossipClusterOp(brief, uuid string, existing []string) *Operator

func NewOperator

func NewOperator(brief string, shardID uint64, epoch uint64, steps ...OpStep) *Operator

NewOperator creates a new operator.

func (*Operator) Cancel

func (o *Operator) Cancel() bool

Cancel marks the operator canceled.

func (*Operator) Check

func (o *Operator) Check(
	logState pb.LogState, tnState pb.TNState, cnState pb.CNState, proxyState pb.ProxyState,
) OpStep

func (*Operator) CheckExpired

func (o *Operator) CheckExpired() bool

CheckExpired checks if the operator is timeout, and update the status.

func (*Operator) CheckSuccess

func (o *Operator) CheckSuccess() bool

CheckSuccess checks if all steps are finished, and update the status.

func (*Operator) GetStartTime

func (o *Operator) GetStartTime() time.Time

GetStartTime gets the start time of operator.

func (*Operator) HasStarted

func (o *Operator) HasStarted() bool

HasStarted returns whether operator has started.

func (*Operator) IsEnd

func (o *Operator) IsEnd() bool

IsEnd checks if the operator is at and end status.

func (*Operator) OpSteps

func (o *Operator) OpSteps() []OpStep

OpSteps returns operator steps.

func (*Operator) SetStatus added in v0.5.1

func (o *Operator) SetStatus(status OpStatus)

SetStatus only used for tests.

func (*Operator) ShardID

func (o *Operator) ShardID() uint64

ShardID returns shard ID.

func (*Operator) Status

func (o *Operator) Status() OpStatus

Status returns operator status.

type RemoveLogService

type RemoveLogService struct {
	Target string
	Replica
}

func (RemoveLogService) IsFinish

func (a RemoveLogService) IsFinish(state ClusterState) bool

func (RemoveLogService) String

func (a RemoveLogService) String() string

type RemoveTnReplica added in v1.0.0

type RemoveTnReplica struct {
	StoreID            string
	ShardID, ReplicaID uint64
	LogShardID         uint64
}

func (RemoveTnReplica) IsFinish added in v1.0.0

func (a RemoveTnReplica) IsFinish(state ClusterState) bool

func (RemoveTnReplica) String added in v1.0.0

func (a RemoveTnReplica) String() string

type Replica added in v0.6.0

type Replica struct {
	UUID      string
	ShardID   uint64
	ReplicaID uint64
	Epoch     uint64
}

type StartLogService

type StartLogService struct {
	Replica
}

func (StartLogService) IsFinish

func (a StartLogService) IsFinish(state ClusterState) bool

func (StartLogService) String

func (a StartLogService) String() string

type StopLogService

type StopLogService struct {
	Replica
}

func (StopLogService) IsFinish

func (a StopLogService) IsFinish(state ClusterState) bool

func (StopLogService) String

func (a StopLogService) String() string

type StopLogStore

type StopLogStore struct {
	StoreID string
}

StopLogStore corresponds to log store shutdown command.

func (StopLogStore) IsFinish

func (a StopLogStore) IsFinish(state ClusterState) bool

func (StopLogStore) String

func (a StopLogStore) String() string

type StopTnStore added in v1.0.0

type StopTnStore struct {
	StoreID string
}

StopTnStore corresponds to tn store shutdown command.

func (StopTnStore) IsFinish added in v1.0.0

func (a StopTnStore) IsFinish(state ClusterState) bool

func (StopTnStore) String added in v1.0.0

func (a StopTnStore) String() string

Jump to

Keyboard shortcuts

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