etcd: github.com/coreos/etcd/etcdserver/api/snap Index | Files | Directories

package snap

import "github.com/coreos/etcd/etcdserver/api/snap"

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

Index

Package Files

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

Variables

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 {
    raftpb.Message
    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)

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

Directories

PathSynopsis
snappbPackage snappb is a generated protocol buffer package.

Package snap imports 20 packages (graph) and is imported by 6 packages. Updated 2019-07-30. Refresh now. Tools for package owners.