mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00

Compaction is now treated as an implementation detail of Storage implementations; Node.Compact() and related functionality have been removed. Ready.Snapshot is now used only for incoming snapshots. A return value has been added to ApplyConfChange to allow applications to track the node information that must be stored in the snapshot. raftpb.Snapshot has been split into Snapshot and SnapshotMetadata, to allow the full snapshot data to be read from disk only when needed. raft.Storage has new methods Snapshot, ApplySnapshot, HardState, and SetHardState. The Snapshot and HardState parameters have been removed from RestartNode() and will now be loaded from Storage instead. The only remaining difference between StartNode and RestartNode is that the former bootstraps an initial list of Peers.
80 lines
2.5 KiB
Protocol Buffer
80 lines
2.5 KiB
Protocol Buffer
package raftpb;
|
|
|
|
import "code.google.com/p/gogoprotobuf/gogoproto/gogo.proto";
|
|
|
|
option (gogoproto.marshaler_all) = true;
|
|
option (gogoproto.sizer_all) = true;
|
|
option (gogoproto.unmarshaler_all) = true;
|
|
option (gogoproto.goproto_getters_all) = false;
|
|
option (gogoproto.goproto_enum_prefix_all) = false;
|
|
|
|
enum EntryType {
|
|
EntryNormal = 0;
|
|
EntryConfChange = 1;
|
|
}
|
|
|
|
message Entry {
|
|
required EntryType Type = 1 [(gogoproto.nullable) = false];
|
|
required uint64 Term = 2 [(gogoproto.nullable) = false];
|
|
required uint64 Index = 3 [(gogoproto.nullable) = false];
|
|
optional bytes Data = 4 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
message SnapshotMetadata {
|
|
required ConfState conf_state = 1 [(gogoproto.nullable) = false];
|
|
required uint64 index = 2 [(gogoproto.nullable) = false];
|
|
required uint64 term = 3 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
message Snapshot {
|
|
optional bytes data = 1 [(gogoproto.nullable) = false];
|
|
required SnapshotMetadata metadata = 2 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
enum MessageType {
|
|
MsgHup = 0;
|
|
MsgBeat = 1;
|
|
MsgProp = 2;
|
|
MsgApp = 3;
|
|
MsgAppResp = 4;
|
|
MsgVote = 5;
|
|
MsgVoteResp = 6;
|
|
MsgSnap = 7;
|
|
}
|
|
|
|
message Message {
|
|
required MessageType type = 1 [(gogoproto.nullable) = false];
|
|
required uint64 to = 2 [(gogoproto.nullable) = false];
|
|
required uint64 from = 3 [(gogoproto.nullable) = false];
|
|
required uint64 term = 4 [(gogoproto.nullable) = false];
|
|
required uint64 logTerm = 5 [(gogoproto.nullable) = false];
|
|
required uint64 index = 6 [(gogoproto.nullable) = false];
|
|
repeated Entry entries = 7 [(gogoproto.nullable) = false];
|
|
required uint64 commit = 8 [(gogoproto.nullable) = false];
|
|
required Snapshot snapshot = 9 [(gogoproto.nullable) = false];
|
|
required bool reject = 10 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
message HardState {
|
|
required uint64 term = 1 [(gogoproto.nullable) = false];
|
|
required uint64 vote = 2 [(gogoproto.nullable) = false];
|
|
required uint64 commit = 3 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
message ConfState {
|
|
repeated uint64 nodes = 1 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
enum ConfChangeType {
|
|
ConfChangeAddNode = 0;
|
|
ConfChangeRemoveNode = 1;
|
|
ConfChangeUpdateNode = 2;
|
|
}
|
|
|
|
message ConfChange {
|
|
required uint64 ID = 1 [(gogoproto.nullable) = false];
|
|
required ConfChangeType Type = 2 [(gogoproto.nullable) = false];
|
|
required uint64 NodeID = 3 [(gogoproto.nullable) = false];
|
|
optional bytes Context = 4 [(gogoproto.nullable) = false];
|
|
}
|