...

Package raftpb

import "go.etcd.io/etcd/raft/v3/raftpb"
Overview
Index

Overview ▾

Index ▾

Variables
func ConfChangesToString(ccs []ConfChangeSingle) string
type ConfChange
    func (c ConfChange) AsV1() (ConfChange, bool)
    func (c ConfChange) AsV2() ConfChangeV2
    func (*ConfChange) Descriptor() ([]byte, []int)
    func (m *ConfChange) Marshal() (dAtA []byte, err error)
    func (m *ConfChange) MarshalTo(dAtA []byte) (int, error)
    func (m *ConfChange) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*ConfChange) ProtoMessage()
    func (m *ConfChange) Reset()
    func (m *ConfChange) Size() (n int)
    func (m *ConfChange) String() string
    func (m *ConfChange) Unmarshal(dAtA []byte) error
    func (m *ConfChange) XXX_DiscardUnknown()
    func (m *ConfChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *ConfChange) XXX_Merge(src proto.Message)
    func (m *ConfChange) XXX_Size() int
    func (m *ConfChange) XXX_Unmarshal(b []byte) error
type ConfChangeI
type ConfChangeSingle
    func ConfChangesFromString(s string) ([]ConfChangeSingle, error)
    func (*ConfChangeSingle) Descriptor() ([]byte, []int)
    func (m *ConfChangeSingle) Marshal() (dAtA []byte, err error)
    func (m *ConfChangeSingle) MarshalTo(dAtA []byte) (int, error)
    func (m *ConfChangeSingle) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*ConfChangeSingle) ProtoMessage()
    func (m *ConfChangeSingle) Reset()
    func (m *ConfChangeSingle) Size() (n int)
    func (m *ConfChangeSingle) String() string
    func (m *ConfChangeSingle) Unmarshal(dAtA []byte) error
    func (m *ConfChangeSingle) XXX_DiscardUnknown()
    func (m *ConfChangeSingle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *ConfChangeSingle) XXX_Merge(src proto.Message)
    func (m *ConfChangeSingle) XXX_Size() int
    func (m *ConfChangeSingle) XXX_Unmarshal(b []byte) error
type ConfChangeTransition
    func (x ConfChangeTransition) Enum() *ConfChangeTransition
    func (ConfChangeTransition) EnumDescriptor() ([]byte, []int)
    func (x ConfChangeTransition) String() string
    func (x *ConfChangeTransition) UnmarshalJSON(data []byte) error
type ConfChangeType
    func (x ConfChangeType) Enum() *ConfChangeType
    func (ConfChangeType) EnumDescriptor() ([]byte, []int)
    func (x ConfChangeType) String() string
    func (x *ConfChangeType) UnmarshalJSON(data []byte) error
type ConfChangeV2
    func (c ConfChangeV2) AsV1() (ConfChange, bool)
    func (c ConfChangeV2) AsV2() ConfChangeV2
    func (*ConfChangeV2) Descriptor() ([]byte, []int)
    func (c ConfChangeV2) EnterJoint() (autoLeave bool, ok bool)
    func (c ConfChangeV2) LeaveJoint() bool
    func (m *ConfChangeV2) Marshal() (dAtA []byte, err error)
    func (m *ConfChangeV2) MarshalTo(dAtA []byte) (int, error)
    func (m *ConfChangeV2) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*ConfChangeV2) ProtoMessage()
    func (m *ConfChangeV2) Reset()
    func (m *ConfChangeV2) Size() (n int)
    func (m *ConfChangeV2) String() string
    func (m *ConfChangeV2) Unmarshal(dAtA []byte) error
    func (m *ConfChangeV2) XXX_DiscardUnknown()
    func (m *ConfChangeV2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *ConfChangeV2) XXX_Merge(src proto.Message)
    func (m *ConfChangeV2) XXX_Size() int
    func (m *ConfChangeV2) XXX_Unmarshal(b []byte) error
type ConfState
    func (*ConfState) Descriptor() ([]byte, []int)
    func (cs ConfState) Equivalent(cs2 ConfState) error
    func (m *ConfState) Marshal() (dAtA []byte, err error)
    func (m *ConfState) MarshalTo(dAtA []byte) (int, error)
    func (m *ConfState) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*ConfState) ProtoMessage()
    func (m *ConfState) Reset()
    func (m *ConfState) Size() (n int)
    func (m *ConfState) String() string
    func (m *ConfState) Unmarshal(dAtA []byte) error
    func (m *ConfState) XXX_DiscardUnknown()
    func (m *ConfState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *ConfState) XXX_Merge(src proto.Message)
    func (m *ConfState) XXX_Size() int
    func (m *ConfState) XXX_Unmarshal(b []byte) error
type Entry
    func (*Entry) Descriptor() ([]byte, []int)
    func (m *Entry) Marshal() (dAtA []byte, err error)
    func (m *Entry) MarshalTo(dAtA []byte) (int, error)
    func (m *Entry) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*Entry) ProtoMessage()
    func (m *Entry) Reset()
    func (m *Entry) Size() (n int)
    func (m *Entry) String() string
    func (m *Entry) Unmarshal(dAtA []byte) error
    func (m *Entry) XXX_DiscardUnknown()
    func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *Entry) XXX_Merge(src proto.Message)
    func (m *Entry) XXX_Size() int
    func (m *Entry) XXX_Unmarshal(b []byte) error
type EntryType
    func MarshalConfChange(c ConfChangeI) (EntryType, []byte, error)
    func (x EntryType) Enum() *EntryType
    func (EntryType) EnumDescriptor() ([]byte, []int)
    func (x EntryType) String() string
    func (x *EntryType) UnmarshalJSON(data []byte) error
type HardState
    func (*HardState) Descriptor() ([]byte, []int)
    func (m *HardState) Marshal() (dAtA []byte, err error)
    func (m *HardState) MarshalTo(dAtA []byte) (int, error)
    func (m *HardState) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*HardState) ProtoMessage()
    func (m *HardState) Reset()
    func (m *HardState) Size() (n int)
    func (m *HardState) String() string
    func (m *HardState) Unmarshal(dAtA []byte) error
    func (m *HardState) XXX_DiscardUnknown()
    func (m *HardState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *HardState) XXX_Merge(src proto.Message)
    func (m *HardState) XXX_Size() int
    func (m *HardState) XXX_Unmarshal(b []byte) error
type Message
    func (*Message) Descriptor() ([]byte, []int)
    func (m *Message) Marshal() (dAtA []byte, err error)
    func (m *Message) MarshalTo(dAtA []byte) (int, error)
    func (m *Message) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*Message) ProtoMessage()
    func (m *Message) Reset()
    func (m *Message) Size() (n int)
    func (m *Message) String() string
    func (m *Message) Unmarshal(dAtA []byte) error
    func (m *Message) XXX_DiscardUnknown()
    func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *Message) XXX_Merge(src proto.Message)
    func (m *Message) XXX_Size() int
    func (m *Message) XXX_Unmarshal(b []byte) error
type MessageType
    func (x MessageType) Enum() *MessageType
    func (MessageType) EnumDescriptor() ([]byte, []int)
    func (x MessageType) String() string
    func (x *MessageType) UnmarshalJSON(data []byte) error
type Snapshot
    func (*Snapshot) Descriptor() ([]byte, []int)
    func (m *Snapshot) Marshal() (dAtA []byte, err error)
    func (m *Snapshot) MarshalTo(dAtA []byte) (int, error)
    func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*Snapshot) ProtoMessage()
    func (m *Snapshot) Reset()
    func (m *Snapshot) Size() (n int)
    func (m *Snapshot) String() string
    func (m *Snapshot) Unmarshal(dAtA []byte) error
    func (m *Snapshot) XXX_DiscardUnknown()
    func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *Snapshot) XXX_Merge(src proto.Message)
    func (m *Snapshot) XXX_Size() int
    func (m *Snapshot) XXX_Unmarshal(b []byte) error
type SnapshotMetadata
    func (*SnapshotMetadata) Descriptor() ([]byte, []int)
    func (m *SnapshotMetadata) Marshal() (dAtA []byte, err error)
    func (m *SnapshotMetadata) MarshalTo(dAtA []byte) (int, error)
    func (m *SnapshotMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error)
    func (*SnapshotMetadata) ProtoMessage()
    func (m *SnapshotMetadata) Reset()
    func (m *SnapshotMetadata) Size() (n int)
    func (m *SnapshotMetadata) String() string
    func (m *SnapshotMetadata) Unmarshal(dAtA []byte) error
    func (m *SnapshotMetadata) XXX_DiscardUnknown()
    func (m *SnapshotMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
    func (m *SnapshotMetadata) XXX_Merge(src proto.Message)
    func (m *SnapshotMetadata) XXX_Size() int
    func (m *SnapshotMetadata) XXX_Unmarshal(b []byte) error

Package files

confchange.go confstate.go raft.pb.go

Variables

var (
    ErrInvalidLengthRaft        = fmt.Errorf("proto: negative length found during unmarshaling")
    ErrIntOverflowRaft          = fmt.Errorf("proto: integer overflow")
    ErrUnexpectedEndOfGroupRaft = fmt.Errorf("proto: unexpected end of group")
)
var ConfChangeTransition_name = map[int32]string{
    0: "ConfChangeTransitionAuto",
    1: "ConfChangeTransitionJointImplicit",
    2: "ConfChangeTransitionJointExplicit",
}
var ConfChangeTransition_value = map[string]int32{
    "ConfChangeTransitionAuto":          0,
    "ConfChangeTransitionJointImplicit": 1,
    "ConfChangeTransitionJointExplicit": 2,
}
var ConfChangeType_name = map[int32]string{
    0: "ConfChangeAddNode",
    1: "ConfChangeRemoveNode",
    2: "ConfChangeUpdateNode",
    3: "ConfChangeAddLearnerNode",
}
var ConfChangeType_value = map[string]int32{
    "ConfChangeAddNode":        0,
    "ConfChangeRemoveNode":     1,
    "ConfChangeUpdateNode":     2,
    "ConfChangeAddLearnerNode": 3,
}
var EntryType_name = map[int32]string{
    0: "EntryNormal",
    1: "EntryConfChange",
    2: "EntryConfChangeV2",
}
var EntryType_value = map[string]int32{
    "EntryNormal":       0,
    "EntryConfChange":   1,
    "EntryConfChangeV2": 2,
}
var MessageType_name = map[int32]string{
    0:  "MsgHup",
    1:  "MsgBeat",
    2:  "MsgProp",
    3:  "MsgApp",
    4:  "MsgAppResp",
    5:  "MsgVote",
    6:  "MsgVoteResp",
    7:  "MsgSnap",
    8:  "MsgHeartbeat",
    9:  "MsgHeartbeatResp",
    10: "MsgUnreachable",
    11: "MsgSnapStatus",
    12: "MsgCheckQuorum",
    13: "MsgTransferLeader",
    14: "MsgTimeoutNow",
    15: "MsgReadIndex",
    16: "MsgReadIndexResp",
    17: "MsgPreVote",
    18: "MsgPreVoteResp",
}
var MessageType_value = map[string]int32{
    "MsgHup":            0,
    "MsgBeat":           1,
    "MsgProp":           2,
    "MsgApp":            3,
    "MsgAppResp":        4,
    "MsgVote":           5,
    "MsgVoteResp":       6,
    "MsgSnap":           7,
    "MsgHeartbeat":      8,
    "MsgHeartbeatResp":  9,
    "MsgUnreachable":    10,
    "MsgSnapStatus":     11,
    "MsgCheckQuorum":    12,
    "MsgTransferLeader": 13,
    "MsgTimeoutNow":     14,
    "MsgReadIndex":      15,
    "MsgReadIndexResp":  16,
    "MsgPreVote":        17,
    "MsgPreVoteResp":    18,
}

func ConfChangesToString

func ConfChangesToString(ccs []ConfChangeSingle) string

ConfChangesToString is the inverse to ConfChangesFromString.

type ConfChange

type ConfChange struct {
    Type    ConfChangeType `protobuf:"varint,2,opt,name=type,enum=raftpb.ConfChangeType" json:"type"`
    NodeID  uint64         `protobuf:"varint,3,opt,name=node_id,json=nodeId" json:"node_id"`
    Context []byte         `protobuf:"bytes,4,opt,name=context" json:"context,omitempty"`
    // NB: this is used only by etcd to thread through a unique identifier.
    // Ideally it should really use the Context instead. No counterpart to
    // this field exists in ConfChangeV2.
    ID uint64 `protobuf:"varint,1,opt,name=id" json:"id"`
}

func (ConfChange) AsV1

func (c ConfChange) AsV1() (ConfChange, bool)

AsV1 returns the ConfChange and true.

func (ConfChange) AsV2

func (c ConfChange) AsV2() ConfChangeV2

AsV2 returns a V2 configuration change carrying out the same operation.

func (*ConfChange) Descriptor

func (*ConfChange) Descriptor() ([]byte, []int)

func (*ConfChange) Marshal

func (m *ConfChange) Marshal() (dAtA []byte, err error)

func (*ConfChange) MarshalTo

func (m *ConfChange) MarshalTo(dAtA []byte) (int, error)

func (*ConfChange) MarshalToSizedBuffer

func (m *ConfChange) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ConfChange) ProtoMessage

func (*ConfChange) ProtoMessage()

func (*ConfChange) Reset

func (m *ConfChange) Reset()

func (*ConfChange) Size

func (m *ConfChange) Size() (n int)

func (*ConfChange) String

func (m *ConfChange) String() string

func (*ConfChange) Unmarshal

func (m *ConfChange) Unmarshal(dAtA []byte) error

func (*ConfChange) XXX_DiscardUnknown

func (m *ConfChange) XXX_DiscardUnknown()

func (*ConfChange) XXX_Marshal

func (m *ConfChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ConfChange) XXX_Merge

func (m *ConfChange) XXX_Merge(src proto.Message)

func (*ConfChange) XXX_Size

func (m *ConfChange) XXX_Size() int

func (*ConfChange) XXX_Unmarshal

func (m *ConfChange) XXX_Unmarshal(b []byte) error

type ConfChangeI

ConfChangeI abstracts over ConfChangeV2 and (legacy) ConfChange to allow treating them in a unified manner.

type ConfChangeI interface {
    AsV2() ConfChangeV2
    AsV1() (ConfChange, bool)
}

type ConfChangeSingle

ConfChangeSingle is an individual configuration change operation. Multiple such operations can be carried out atomically via a ConfChangeV2.

type ConfChangeSingle struct {
    Type   ConfChangeType `protobuf:"varint,1,opt,name=type,enum=raftpb.ConfChangeType" json:"type"`
    NodeID uint64         `protobuf:"varint,2,opt,name=node_id,json=nodeId" json:"node_id"`
}

func ConfChangesFromString

func ConfChangesFromString(s string) ([]ConfChangeSingle, error)

ConfChangesFromString parses a Space-delimited sequence of operations into a slice of ConfChangeSingle. The supported operations are: - vn: make n a voter, - ln: make n a learner, - rn: remove n, and - un: update n.

func (*ConfChangeSingle) Descriptor

func (*ConfChangeSingle) Descriptor() ([]byte, []int)

func (*ConfChangeSingle) Marshal

func (m *ConfChangeSingle) Marshal() (dAtA []byte, err error)

func (*ConfChangeSingle) MarshalTo

func (m *ConfChangeSingle) MarshalTo(dAtA []byte) (int, error)

func (*ConfChangeSingle) MarshalToSizedBuffer

func (m *ConfChangeSingle) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ConfChangeSingle) ProtoMessage

func (*ConfChangeSingle) ProtoMessage()

func (*ConfChangeSingle) Reset

func (m *ConfChangeSingle) Reset()

func (*ConfChangeSingle) Size

func (m *ConfChangeSingle) Size() (n int)

func (*ConfChangeSingle) String

func (m *ConfChangeSingle) String() string

func (*ConfChangeSingle) Unmarshal

func (m *ConfChangeSingle) Unmarshal(dAtA []byte) error

func (*ConfChangeSingle) XXX_DiscardUnknown

func (m *ConfChangeSingle) XXX_DiscardUnknown()

func (*ConfChangeSingle) XXX_Marshal

func (m *ConfChangeSingle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ConfChangeSingle) XXX_Merge

func (m *ConfChangeSingle) XXX_Merge(src proto.Message)

func (*ConfChangeSingle) XXX_Size

func (m *ConfChangeSingle) XXX_Size() int

func (*ConfChangeSingle) XXX_Unmarshal

func (m *ConfChangeSingle) XXX_Unmarshal(b []byte) error

type ConfChangeTransition

ConfChangeTransition specifies the behavior of a configuration change with respect to joint consensus.

type ConfChangeTransition int32
const (
    // Automatically use the simple protocol if possible, otherwise fall back
    // to ConfChangeJointImplicit. Most applications will want to use this.
    ConfChangeTransitionAuto ConfChangeTransition = 0
    // Use joint consensus unconditionally, and transition out of them
    // automatically (by proposing a zero configuration change).
    //
    // This option is suitable for applications that want to minimize the time
    // spent in the joint configuration and do not store the joint configuration
    // in the state machine (outside of InitialState).
    ConfChangeTransitionJointImplicit ConfChangeTransition = 1
    // Use joint consensus and remain in the joint configuration until the
    // application proposes a no-op configuration change. This is suitable for
    // applications that want to explicitly control the transitions, for example
    // to use a custom payload (via the Context field).
    ConfChangeTransitionJointExplicit ConfChangeTransition = 2
)

func (ConfChangeTransition) Enum

func (x ConfChangeTransition) Enum() *ConfChangeTransition

func (ConfChangeTransition) EnumDescriptor

func (ConfChangeTransition) EnumDescriptor() ([]byte, []int)

func (ConfChangeTransition) String

func (x ConfChangeTransition) String() string

func (*ConfChangeTransition) UnmarshalJSON

func (x *ConfChangeTransition) UnmarshalJSON(data []byte) error

type ConfChangeType

type ConfChangeType int32
const (
    ConfChangeAddNode        ConfChangeType = 0
    ConfChangeRemoveNode     ConfChangeType = 1
    ConfChangeUpdateNode     ConfChangeType = 2
    ConfChangeAddLearnerNode ConfChangeType = 3
)

func (ConfChangeType) Enum

func (x ConfChangeType) Enum() *ConfChangeType

func (ConfChangeType) EnumDescriptor

func (ConfChangeType) EnumDescriptor() ([]byte, []int)

func (ConfChangeType) String

func (x ConfChangeType) String() string

func (*ConfChangeType) UnmarshalJSON

func (x *ConfChangeType) UnmarshalJSON(data []byte) error

type ConfChangeV2

ConfChangeV2 messages initiate configuration changes. They support both the simple "one at a time" membership change protocol and full Joint Consensus allowing for arbitrary changes in membership.

The supplied context is treated as an opaque payload and can be used to attach an action on the state machine to the application of the config change proposal. Note that contrary to Joint Consensus as outlined in the Raft paper1, configuration changes become active when they are *applied* to the state machine (not when they are appended to the log).

The simple protocol can be used whenever only a single change is made.

Non-simple changes require the use of Joint Consensus, for which two configuration changes are run. The first configuration change specifies the desired changes and transitions the Raft group into the joint configuration, in which quorum requires a majority of both the pre-changes and post-changes configuration. Joint Consensus avoids entering fragile intermediate configurations that could compromise survivability. For example, without the use of Joint Consensus and running across three availability zones with a replication factor of three, it is not possible to replace a voter without entering an intermediate configuration that does not survive the outage of one availability zone.

The provided ConfChangeTransition specifies how (and whether) Joint Consensus is used, and assigns the task of leaving the joint configuration either to Raft or the application. Leaving the joint configuration is accomplished by proposing a ConfChangeV2 with only and optionally the Context field populated.

For details on Raft membership changes, see:

type ConfChangeV2 struct {
    Transition ConfChangeTransition `protobuf:"varint,1,opt,name=transition,enum=raftpb.ConfChangeTransition" json:"transition"`
    Changes    []ConfChangeSingle   `protobuf:"bytes,2,rep,name=changes" json:"changes"`
    Context    []byte               `protobuf:"bytes,3,opt,name=context" json:"context,omitempty"`
}

func (ConfChangeV2) AsV1

func (c ConfChangeV2) AsV1() (ConfChange, bool)

AsV1 returns ConfChange{} and false.

func (ConfChangeV2) AsV2

func (c ConfChangeV2) AsV2() ConfChangeV2

AsV2 is the identity.

func (*ConfChangeV2) Descriptor

func (*ConfChangeV2) Descriptor() ([]byte, []int)

func (ConfChangeV2) EnterJoint

func (c ConfChangeV2) EnterJoint() (autoLeave bool, ok bool)

EnterJoint returns two bools. The second bool is true if and only if this config change will use Joint Consensus, which is the case if it contains more than one change or if the use of Joint Consensus was requested explicitly. The first bool can only be true if second one is, and indicates whether the Joint State will be left automatically.

func (ConfChangeV2) LeaveJoint

func (c ConfChangeV2) LeaveJoint() bool

LeaveJoint is true if the configuration change leaves a joint configuration. This is the case if the ConfChangeV2 is zero, with the possible exception of the Context field.

func (*ConfChangeV2) Marshal

func (m *ConfChangeV2) Marshal() (dAtA []byte, err error)

func (*ConfChangeV2) MarshalTo

func (m *ConfChangeV2) MarshalTo(dAtA []byte) (int, error)

func (*ConfChangeV2) MarshalToSizedBuffer

func (m *ConfChangeV2) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ConfChangeV2) ProtoMessage

func (*ConfChangeV2) ProtoMessage()

func (*ConfChangeV2) Reset

func (m *ConfChangeV2) Reset()

func (*ConfChangeV2) Size

func (m *ConfChangeV2) Size() (n int)

func (*ConfChangeV2) String

func (m *ConfChangeV2) String() string

func (*ConfChangeV2) Unmarshal

func (m *ConfChangeV2) Unmarshal(dAtA []byte) error

func (*ConfChangeV2) XXX_DiscardUnknown

func (m *ConfChangeV2) XXX_DiscardUnknown()

func (*ConfChangeV2) XXX_Marshal

func (m *ConfChangeV2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ConfChangeV2) XXX_Merge

func (m *ConfChangeV2) XXX_Merge(src proto.Message)

func (*ConfChangeV2) XXX_Size

func (m *ConfChangeV2) XXX_Size() int

func (*ConfChangeV2) XXX_Unmarshal

func (m *ConfChangeV2) XXX_Unmarshal(b []byte) error

type ConfState

type ConfState struct {
    // The voters in the incoming config. (If the configuration is not joint,
    // then the outgoing config is empty).
    Voters []uint64 `protobuf:"varint,1,rep,name=voters" json:"voters,omitempty"`
    // The learners in the incoming config.
    Learners []uint64 `protobuf:"varint,2,rep,name=learners" json:"learners,omitempty"`
    // The voters in the outgoing config.
    VotersOutgoing []uint64 `protobuf:"varint,3,rep,name=voters_outgoing,json=votersOutgoing" json:"voters_outgoing,omitempty"`
    // The nodes that will become learners when the outgoing config is removed.
    // These nodes are necessarily currently in nodes_joint (or they would have
    // been added to the incoming config right away).
    LearnersNext []uint64 `protobuf:"varint,4,rep,name=learners_next,json=learnersNext" json:"learners_next,omitempty"`
    // If set, the config is joint and Raft will automatically transition into
    // the final config (i.e. remove the outgoing config) when this is safe.
    AutoLeave bool `protobuf:"varint,5,opt,name=auto_leave,json=autoLeave" json:"auto_leave"`
}

func (*ConfState) Descriptor

func (*ConfState) Descriptor() ([]byte, []int)

func (ConfState) Equivalent

func (cs ConfState) Equivalent(cs2 ConfState) error

Equivalent returns a nil error if the inputs describe the same configuration. On mismatch, returns a descriptive error showing the differences.

func (*ConfState) Marshal

func (m *ConfState) Marshal() (dAtA []byte, err error)

func (*ConfState) MarshalTo

func (m *ConfState) MarshalTo(dAtA []byte) (int, error)

func (*ConfState) MarshalToSizedBuffer

func (m *ConfState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*ConfState) ProtoMessage

func (*ConfState) ProtoMessage()

func (*ConfState) Reset

func (m *ConfState) Reset()

func (*ConfState) Size

func (m *ConfState) Size() (n int)

func (*ConfState) String

func (m *ConfState) String() string

func (*ConfState) Unmarshal

func (m *ConfState) Unmarshal(dAtA []byte) error

func (*ConfState) XXX_DiscardUnknown

func (m *ConfState) XXX_DiscardUnknown()

func (*ConfState) XXX_Marshal

func (m *ConfState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ConfState) XXX_Merge

func (m *ConfState) XXX_Merge(src proto.Message)

func (*ConfState) XXX_Size

func (m *ConfState) XXX_Size() int

func (*ConfState) XXX_Unmarshal

func (m *ConfState) XXX_Unmarshal(b []byte) error

type Entry

type Entry struct {
    Term  uint64    `protobuf:"varint,2,opt,name=Term" json:"Term"`
    Index uint64    `protobuf:"varint,3,opt,name=Index" json:"Index"`
    Type  EntryType `protobuf:"varint,1,opt,name=Type,enum=raftpb.EntryType" json:"Type"`
    Data  []byte    `protobuf:"bytes,4,opt,name=Data" json:"Data,omitempty"`
}

func (*Entry) Descriptor

func (*Entry) Descriptor() ([]byte, []int)

func (*Entry) Marshal

func (m *Entry) Marshal() (dAtA []byte, err error)

func (*Entry) MarshalTo

func (m *Entry) MarshalTo(dAtA []byte) (int, error)

func (*Entry) MarshalToSizedBuffer

func (m *Entry) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Entry) ProtoMessage

func (*Entry) ProtoMessage()

func (*Entry) Reset

func (m *Entry) Reset()

func (*Entry) Size

func (m *Entry) Size() (n int)

func (*Entry) String

func (m *Entry) String() string

func (*Entry) Unmarshal

func (m *Entry) Unmarshal(dAtA []byte) error

func (*Entry) XXX_DiscardUnknown

func (m *Entry) XXX_DiscardUnknown()

func (*Entry) XXX_Marshal

func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Entry) XXX_Merge

func (m *Entry) XXX_Merge(src proto.Message)

func (*Entry) XXX_Size

func (m *Entry) XXX_Size() int

func (*Entry) XXX_Unmarshal

func (m *Entry) XXX_Unmarshal(b []byte) error

type EntryType

type EntryType int32
const (
    EntryNormal       EntryType = 0
    EntryConfChange   EntryType = 1
    EntryConfChangeV2 EntryType = 2
)

func MarshalConfChange

func MarshalConfChange(c ConfChangeI) (EntryType, []byte, error)

MarshalConfChange calls Marshal on the underlying ConfChange or ConfChangeV2 and returns the result along with the corresponding EntryType.

func (EntryType) Enum

func (x EntryType) Enum() *EntryType

func (EntryType) EnumDescriptor

func (EntryType) EnumDescriptor() ([]byte, []int)

func (EntryType) String

func (x EntryType) String() string

func (*EntryType) UnmarshalJSON

func (x *EntryType) UnmarshalJSON(data []byte) error

type HardState

type HardState struct {
    Term   uint64 `protobuf:"varint,1,opt,name=term" json:"term"`
    Vote   uint64 `protobuf:"varint,2,opt,name=vote" json:"vote"`
    Commit uint64 `protobuf:"varint,3,opt,name=commit" json:"commit"`
}

func (*HardState) Descriptor

func (*HardState) Descriptor() ([]byte, []int)

func (*HardState) Marshal

func (m *HardState) Marshal() (dAtA []byte, err error)

func (*HardState) MarshalTo

func (m *HardState) MarshalTo(dAtA []byte) (int, error)

func (*HardState) MarshalToSizedBuffer

func (m *HardState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*HardState) ProtoMessage

func (*HardState) ProtoMessage()

func (*HardState) Reset

func (m *HardState) Reset()

func (*HardState) Size

func (m *HardState) Size() (n int)

func (*HardState) String

func (m *HardState) String() string

func (*HardState) Unmarshal

func (m *HardState) Unmarshal(dAtA []byte) error

func (*HardState) XXX_DiscardUnknown

func (m *HardState) XXX_DiscardUnknown()

func (*HardState) XXX_Marshal

func (m *HardState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*HardState) XXX_Merge

func (m *HardState) XXX_Merge(src proto.Message)

func (*HardState) XXX_Size

func (m *HardState) XXX_Size() int

func (*HardState) XXX_Unmarshal

func (m *HardState) XXX_Unmarshal(b []byte) error

type Message

type Message struct {
    Type MessageType `protobuf:"varint,1,opt,name=type,enum=raftpb.MessageType" json:"type"`
    To   uint64      `protobuf:"varint,2,opt,name=to" json:"to"`
    From uint64      `protobuf:"varint,3,opt,name=from" json:"from"`
    Term uint64      `protobuf:"varint,4,opt,name=term" json:"term"`
    // logTerm is generally used for appending Raft logs to followers. For example,
    // (type=MsgApp,index=100,logTerm=5) means leader appends entries starting at
    // index=101, and the term of entry at index 100 is 5.
    // (type=MsgAppResp,reject=true,index=100,logTerm=5) means follower rejects some
    // entries from its leader as it already has an entry with term 5 at index 100.
    LogTerm    uint64   `protobuf:"varint,5,opt,name=logTerm" json:"logTerm"`
    Index      uint64   `protobuf:"varint,6,opt,name=index" json:"index"`
    Entries    []Entry  `protobuf:"bytes,7,rep,name=entries" json:"entries"`
    Commit     uint64   `protobuf:"varint,8,opt,name=commit" json:"commit"`
    Snapshot   Snapshot `protobuf:"bytes,9,opt,name=snapshot" json:"snapshot"`
    Reject     bool     `protobuf:"varint,10,opt,name=reject" json:"reject"`
    RejectHint uint64   `protobuf:"varint,11,opt,name=rejectHint" json:"rejectHint"`
    Context    []byte   `protobuf:"bytes,12,opt,name=context" json:"context,omitempty"`
}

func (*Message) Descriptor

func (*Message) Descriptor() ([]byte, []int)

func (*Message) Marshal

func (m *Message) Marshal() (dAtA []byte, err error)

func (*Message) MarshalTo

func (m *Message) MarshalTo(dAtA []byte) (int, error)

func (*Message) MarshalToSizedBuffer

func (m *Message) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Message) ProtoMessage

func (*Message) ProtoMessage()

func (*Message) Reset

func (m *Message) Reset()

func (*Message) Size

func (m *Message) Size() (n int)

func (*Message) String

func (m *Message) String() string

func (*Message) Unmarshal

func (m *Message) Unmarshal(dAtA []byte) error

func (*Message) XXX_DiscardUnknown

func (m *Message) XXX_DiscardUnknown()

func (*Message) XXX_Marshal

func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Message) XXX_Merge

func (m *Message) XXX_Merge(src proto.Message)

func (*Message) XXX_Size

func (m *Message) XXX_Size() int

func (*Message) XXX_Unmarshal

func (m *Message) XXX_Unmarshal(b []byte) error

type MessageType

For description of different message types, see: https://pkg.go.dev/go.etcd.io/etcd/raft/v3#hdr-MessageType

type MessageType int32
const (
    MsgHup            MessageType = 0
    MsgBeat           MessageType = 1
    MsgProp           MessageType = 2
    MsgApp            MessageType = 3
    MsgAppResp        MessageType = 4
    MsgVote           MessageType = 5
    MsgVoteResp       MessageType = 6
    MsgSnap           MessageType = 7
    MsgHeartbeat      MessageType = 8
    MsgHeartbeatResp  MessageType = 9
    MsgUnreachable    MessageType = 10
    MsgSnapStatus     MessageType = 11
    MsgCheckQuorum    MessageType = 12
    MsgTransferLeader MessageType = 13
    MsgTimeoutNow     MessageType = 14
    MsgReadIndex      MessageType = 15
    MsgReadIndexResp  MessageType = 16
    MsgPreVote        MessageType = 17
    MsgPreVoteResp    MessageType = 18
)

func (MessageType) Enum

func (x MessageType) Enum() *MessageType

func (MessageType) EnumDescriptor

func (MessageType) EnumDescriptor() ([]byte, []int)

func (MessageType) String

func (x MessageType) String() string

func (*MessageType) UnmarshalJSON

func (x *MessageType) UnmarshalJSON(data []byte) error

type Snapshot

type Snapshot struct {
    Data     []byte           `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
    Metadata SnapshotMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata"`
}

func (*Snapshot) Descriptor

func (*Snapshot) Descriptor() ([]byte, []int)

func (*Snapshot) Marshal

func (m *Snapshot) Marshal() (dAtA []byte, err error)

func (*Snapshot) MarshalTo

func (m *Snapshot) MarshalTo(dAtA []byte) (int, error)

func (*Snapshot) MarshalToSizedBuffer

func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Snapshot) ProtoMessage

func (*Snapshot) ProtoMessage()

func (*Snapshot) Reset

func (m *Snapshot) Reset()

func (*Snapshot) Size

func (m *Snapshot) Size() (n int)

func (*Snapshot) String

func (m *Snapshot) String() string

func (*Snapshot) Unmarshal

func (m *Snapshot) Unmarshal(dAtA []byte) error

func (*Snapshot) XXX_DiscardUnknown

func (m *Snapshot) XXX_DiscardUnknown()

func (*Snapshot) XXX_Marshal

func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Snapshot) XXX_Merge

func (m *Snapshot) XXX_Merge(src proto.Message)

func (*Snapshot) XXX_Size

func (m *Snapshot) XXX_Size() int

func (*Snapshot) XXX_Unmarshal

func (m *Snapshot) XXX_Unmarshal(b []byte) error

type SnapshotMetadata

type SnapshotMetadata struct {
    ConfState ConfState `protobuf:"bytes,1,opt,name=conf_state,json=confState" json:"conf_state"`
    Index     uint64    `protobuf:"varint,2,opt,name=index" json:"index"`
    Term      uint64    `protobuf:"varint,3,opt,name=term" json:"term"`
}

func (*SnapshotMetadata) Descriptor

func (*SnapshotMetadata) Descriptor() ([]byte, []int)

func (*SnapshotMetadata) Marshal

func (m *SnapshotMetadata) Marshal() (dAtA []byte, err error)

func (*SnapshotMetadata) MarshalTo

func (m *SnapshotMetadata) MarshalTo(dAtA []byte) (int, error)

func (*SnapshotMetadata) MarshalToSizedBuffer

func (m *SnapshotMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*SnapshotMetadata) ProtoMessage

func (*SnapshotMetadata) ProtoMessage()

func (*SnapshotMetadata) Reset

func (m *SnapshotMetadata) Reset()

func (*SnapshotMetadata) Size

func (m *SnapshotMetadata) Size() (n int)

func (*SnapshotMetadata) String

func (m *SnapshotMetadata) String() string

func (*SnapshotMetadata) Unmarshal

func (m *SnapshotMetadata) Unmarshal(dAtA []byte) error

func (*SnapshotMetadata) XXX_DiscardUnknown

func (m *SnapshotMetadata) XXX_DiscardUnknown()

func (*SnapshotMetadata) XXX_Marshal

func (m *SnapshotMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SnapshotMetadata) XXX_Merge

func (m *SnapshotMetadata) XXX_Merge(src proto.Message)

func (*SnapshotMetadata) XXX_Size

func (m *SnapshotMetadata) XXX_Size() int

func (*SnapshotMetadata) XXX_Unmarshal

func (m *SnapshotMetadata) XXX_Unmarshal(b []byte) error