etcd: go.etcd.io/etcd/raft/raftpb Index | Files

package raftpb

import "go.etcd.io/etcd/raft/raftpb"

Package raftpb is a generated protocol buffer package.

It is generated from these files:

raft.proto

It has these top-level messages:

Entry
SnapshotMetadata
Snapshot
Message
HardState
ConfState
ConfChange
ConfChangeSingle
ConfChangeV2

Index

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")
)
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 Uses

func ConfChangesToString(ccs []ConfChangeSingle) string

ConfChangesToString is the inverse to ConfChangesFromString.

type ConfChange Uses

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"`
    XXX_unrecognized []byte `json:"-"`
}

func (ConfChange) AsV1 Uses

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

AsV1 returns the ConfChange and true.

func (ConfChange) AsV2 Uses

func (c ConfChange) AsV2() ConfChangeV2

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

func (*ConfChange) Descriptor Uses

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

func (*ConfChange) Marshal Uses

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

func (*ConfChange) MarshalTo Uses

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

func (*ConfChange) ProtoMessage Uses

func (*ConfChange) ProtoMessage()

func (*ConfChange) Reset Uses

func (m *ConfChange) Reset()

func (*ConfChange) Size Uses

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

func (*ConfChange) String Uses

func (m *ConfChange) String() string

func (*ConfChange) Unmarshal Uses

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

type ConfChangeI Uses

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

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

type ConfChangeSingle Uses

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"`
    XXX_unrecognized []byte         `json:"-"`
}

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

func ConfChangesFromString Uses

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 Uses

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

func (*ConfChangeSingle) Marshal Uses

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

func (*ConfChangeSingle) MarshalTo Uses

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

func (*ConfChangeSingle) ProtoMessage Uses

func (*ConfChangeSingle) ProtoMessage()

func (*ConfChangeSingle) Reset Uses

func (m *ConfChangeSingle) Reset()

func (*ConfChangeSingle) Size Uses

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

func (*ConfChangeSingle) String Uses

func (m *ConfChangeSingle) String() string

func (*ConfChangeSingle) Unmarshal Uses

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

type ConfChangeTransition Uses

type ConfChangeTransition int32

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

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 Uses

func (x ConfChangeTransition) Enum() *ConfChangeTransition

func (ConfChangeTransition) EnumDescriptor Uses

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

func (ConfChangeTransition) String Uses

func (x ConfChangeTransition) String() string

func (*ConfChangeTransition) UnmarshalJSON Uses

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

type ConfChangeType Uses

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

func (ConfChangeType) Enum Uses

func (x ConfChangeType) Enum() *ConfChangeType

func (ConfChangeType) EnumDescriptor Uses

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

func (ConfChangeType) String Uses

func (x ConfChangeType) String() string

func (*ConfChangeType) UnmarshalJSON Uses

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

type ConfChangeV2 Uses

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"`
    XXX_unrecognized []byte               `json:"-"`
}

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 paper[1], 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:

[1]: https://github.com/ongardie/dissertation/blob/master/online-trim.pdf

func (ConfChangeV2) AsV1 Uses

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

AsV1 returns ConfChange{} and false.

func (ConfChangeV2) AsV2 Uses

func (c ConfChangeV2) AsV2() ConfChangeV2

AsV2 is the identity.

func (*ConfChangeV2) Descriptor Uses

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

func (*ConfChangeV2) EnterJoint Uses

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 Uses

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 Uses

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

func (*ConfChangeV2) MarshalTo Uses

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

func (*ConfChangeV2) ProtoMessage Uses

func (*ConfChangeV2) ProtoMessage()

func (*ConfChangeV2) Reset Uses

func (m *ConfChangeV2) Reset()

func (*ConfChangeV2) Size Uses

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

func (*ConfChangeV2) String Uses

func (m *ConfChangeV2) String() string

func (*ConfChangeV2) Unmarshal Uses

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

type ConfState Uses

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"`
    XXX_unrecognized []byte `json:"-"`
}

func (*ConfState) Descriptor Uses

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

func (ConfState) Equivalent Uses

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 Uses

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

func (*ConfState) MarshalTo Uses

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

func (*ConfState) ProtoMessage Uses

func (*ConfState) ProtoMessage()

func (*ConfState) Reset Uses

func (m *ConfState) Reset()

func (*ConfState) Size Uses

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

func (*ConfState) String Uses

func (m *ConfState) String() string

func (*ConfState) Unmarshal Uses

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

type Entry Uses

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"`
    XXX_unrecognized []byte    `json:"-"`
}

func (*Entry) Descriptor Uses

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

func (*Entry) Marshal Uses

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

func (*Entry) MarshalTo Uses

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

func (*Entry) ProtoMessage Uses

func (*Entry) ProtoMessage()

func (*Entry) Reset Uses

func (m *Entry) Reset()

func (*Entry) Size Uses

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

func (*Entry) String Uses

func (m *Entry) String() string

func (*Entry) Unmarshal Uses

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

type EntryType Uses

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

func MarshalConfChange Uses

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 Uses

func (x EntryType) Enum() *EntryType

func (EntryType) EnumDescriptor Uses

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

func (EntryType) String Uses

func (x EntryType) String() string

func (*EntryType) UnmarshalJSON Uses

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

type HardState Uses

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"`
    XXX_unrecognized []byte `json:"-"`
}

func (*HardState) Descriptor Uses

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

func (*HardState) Marshal Uses

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

func (*HardState) MarshalTo Uses

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

func (*HardState) ProtoMessage Uses

func (*HardState) ProtoMessage()

func (*HardState) Reset Uses

func (m *HardState) Reset()

func (*HardState) Size Uses

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

func (*HardState) String Uses

func (m *HardState) String() string

func (*HardState) Unmarshal Uses

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

type Message Uses

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          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"`
    XXX_unrecognized []byte      `json:"-"`
}

func (*Message) Descriptor Uses

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

func (*Message) Marshal Uses

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

func (*Message) MarshalTo Uses

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

func (*Message) ProtoMessage Uses

func (*Message) ProtoMessage()

func (*Message) Reset Uses

func (m *Message) Reset()

func (*Message) Size Uses

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

func (*Message) String Uses

func (m *Message) String() string

func (*Message) Unmarshal Uses

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

type MessageType Uses

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 Uses

func (x MessageType) Enum() *MessageType

func (MessageType) EnumDescriptor Uses

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

func (MessageType) String Uses

func (x MessageType) String() string

func (*MessageType) UnmarshalJSON Uses

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

type Snapshot Uses

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

func (*Snapshot) Descriptor Uses

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

func (*Snapshot) Marshal Uses

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

func (*Snapshot) MarshalTo Uses

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

func (*Snapshot) ProtoMessage Uses

func (*Snapshot) ProtoMessage()

func (*Snapshot) Reset Uses

func (m *Snapshot) Reset()

func (*Snapshot) Size Uses

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

func (*Snapshot) String Uses

func (m *Snapshot) String() string

func (*Snapshot) Unmarshal Uses

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

type SnapshotMetadata Uses

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"`
    XXX_unrecognized []byte    `json:"-"`
}

func (*SnapshotMetadata) Descriptor Uses

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

func (*SnapshotMetadata) Marshal Uses

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

func (*SnapshotMetadata) MarshalTo Uses

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

func (*SnapshotMetadata) ProtoMessage Uses

func (*SnapshotMetadata) ProtoMessage()

func (*SnapshotMetadata) Reset Uses

func (m *SnapshotMetadata) Reset()

func (*SnapshotMetadata) Size Uses

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

func (*SnapshotMetadata) String Uses

func (m *SnapshotMetadata) String() string

func (*SnapshotMetadata) Unmarshal Uses

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

Package raftpb imports 10 packages (graph) and is imported by 147 packages. Updated 2019-08-14. Refresh now. Tools for package owners.