etcd: Index | Files | Directories

package snap

import ""

Package snap handles Raft nodes' states with snapshots. The snapshot logic is internal to etcd server and raft package.


Package Files

db.go doc.go message.go metrics.go snapshotter.go


var (
    ErrNoSnapshot    = errors.New("snap: no available snapshot")
    ErrEmptySnapshot = errors.New("snap: empty snapshot")
    ErrCRCMismatch   = errors.New("snap: crc mismatch")
var ErrNoDBSnapshot = errors.New("snap: snapshot file doesn't exist")

func Read Uses

func Read(lg *zap.Logger, snapname string) (*raftpb.Snapshot, error)

Read reads the snapshot named by snapname and returns the snapshot.

type Message Uses

type Message struct {
    ReadCloser io.ReadCloser
    TotalSize  int64
    // contains filtered or unexported fields

Message is a struct that contains a raft Message and a ReadCloser. The type of raft message MUST be MsgSnap, which contains the raft meta-data and an additional data []byte field that contains the snapshot of the actual state machine. Message contains the ReadCloser field for handling large snapshot. This avoid copying the entire snapshot into a byte array, which consumes a lot of memory.

User of Message should close the Message after sending it.

func NewMessage Uses

func NewMessage(rs raftpb.Message, rc io.ReadCloser, rcSize int64) *Message

func (Message) CloseNotify Uses

func (m Message) CloseNotify() <-chan bool

CloseNotify returns a channel that receives a single value when the message sent is finished. true indicates the sent is successful.

func (Message) CloseWithError Uses

func (m Message) CloseWithError(err error)

type Snapshotter Uses

type Snapshotter struct {
    // contains filtered or unexported fields

func New Uses

func New(lg *zap.Logger, dir string) *Snapshotter

func (*Snapshotter) DBFilePath Uses

func (s *Snapshotter) DBFilePath(id uint64) (string, error)

DBFilePath returns the file path for the snapshot of the database with given id. If the snapshot does not exist, it returns error.

func (*Snapshotter) Load Uses

func (s *Snapshotter) Load() (*raftpb.Snapshot, error)

Load returns the newest snapshot.

func (*Snapshotter) LoadNewestAvailable Uses

func (s *Snapshotter) LoadNewestAvailable(walSnaps []walpb.Snapshot) (*raftpb.Snapshot, error)

LoadNewestAvailable loads the newest snapshot available that is in walSnaps.

func (*Snapshotter) ReleaseSnapDBs Uses

func (s *Snapshotter) ReleaseSnapDBs(snap raftpb.Snapshot) error

func (*Snapshotter) SaveDBFrom Uses

func (s *Snapshotter) SaveDBFrom(r io.Reader, id uint64) (int64, error)

SaveDBFrom saves snapshot of the database from the given reader. It guarantees the save operation is atomic.

func (*Snapshotter) SaveSnap Uses

func (s *Snapshotter) SaveSnap(snapshot raftpb.Snapshot) error


snappbPackage snappb is a generated protocol buffer package.

Package snap imports 21 packages (graph) and is imported by 140 packages. Updated 2020-08-29. Refresh now. Tools for package owners.