snap

package
v0.0.0-...-1338f1b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2024 License: Apache-2.0 Imports: 24 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ApplyOptions

type ApplyOptions struct {
	DB     *badger.DB
	Region *metapb.Region
}

func NewApplyOptions

func NewApplyOptions(db *badger.DB, region *metapb.Region) *ApplyOptions

type ApplySnapAbortError

type ApplySnapAbortError string

func (ApplySnapAbortError) Error

func (e ApplySnapAbortError) Error() string

type CFFile

type CFFile struct {
	CF          string
	Path        string
	TmpPath     string
	SstWriter   *table.Builder
	File        *os.File
	KVCount     int
	Size        uint64
	WrittenSize uint64
	Checksum    uint32
	WriteDigest hash.Hash32
}

type MetaFile

type MetaFile struct {
	Meta *rspb.SnapshotMeta
	Path string
	File *os.File

	// for writing snapshot
	TmpPath string
}

type Snap

type Snap struct {
	CFFiles []*CFFile

	MetaFile  *MetaFile
	SizeTrack *int64
	// contains filtered or unexported fields
}

func NewSnap

func NewSnap(dir string, key SnapKey, sizeTrack *int64, isSending, toBuild bool,
	deleter SnapshotDeleter) (*Snap, error)

func NewSnapForApplying

func NewSnapForApplying(dir string, key SnapKey, sizeTrack *int64, deleter SnapshotDeleter) (*Snap, error)

func NewSnapForBuilding

func NewSnapForBuilding(dir string, key SnapKey, sizeTrack *int64, deleter SnapshotDeleter) (*Snap, error)

func NewSnapForReceiving

func NewSnapForReceiving(dir string, key SnapKey, snapshotMeta *rspb.SnapshotMeta,
	sizeTrack *int64, deleter SnapshotDeleter) (*Snap, error)

func NewSnapForSending

func NewSnapForSending(dir string, key SnapKey, sizeTrack *int64, deleter SnapshotDeleter) (*Snap, error)

func (*Snap) Apply

func (s *Snap) Apply(opts ApplyOptions) error

func (*Snap) Build

func (s *Snap) Build(dbSnap *badger.Txn, region *metapb.Region, snapData *rspb.RaftSnapshotData, stat *SnapStatistics, deleter SnapshotDeleter) error

func (*Snap) Delete

func (s *Snap) Delete()

func (*Snap) Drop

func (s *Snap) Drop()

func (*Snap) Exists

func (s *Snap) Exists() bool

func (*Snap) Meta

func (s *Snap) Meta() (os.FileInfo, error)

func (*Snap) Path

func (s *Snap) Path() string

func (*Snap) Read

func (s *Snap) Read(b []byte) (int, error)

func (*Snap) Save

func (s *Snap) Save() error

func (*Snap) TotalSize

func (s *Snap) TotalSize() (total uint64)

func (*Snap) Write

func (s *Snap) Write(b []byte) (int, error)

type SnapEntry

type SnapEntry int
const (
	SnapEntryGenerating SnapEntry = 1
	SnapEntrySending    SnapEntry = 2
	SnapEntryReceiving  SnapEntry = 3
	SnapEntryApplying   SnapEntry = 4
)

func (SnapEntry) String

func (e SnapEntry) String() string

type SnapKey

type SnapKey struct {
	RegionID uint64
	Term     uint64
	Index    uint64
}

func SnapKeyFromRegionSnap

func SnapKeyFromRegionSnap(regionID uint64, snap *eraftpb.Snapshot) SnapKey

func SnapKeyFromSnap

func SnapKeyFromSnap(snap *eraftpb.Snapshot) (SnapKey, error)

func (SnapKey) String

func (k SnapKey) String() string

type SnapKeyWithSending

type SnapKeyWithSending struct {
	SnapKey   SnapKey
	IsSending bool
}

type SnapManager

type SnapManager struct {
	MaxTotalSize uint64
	// contains filtered or unexported fields
}

func NewSnapManager

func NewSnapManager(path string) *SnapManager

func (*SnapManager) DeleteSnapshot

func (sm *SnapManager) DeleteSnapshot(key SnapKey, snapshot Snapshot, checkEntry bool) bool

func (*SnapManager) Deregister

func (sm *SnapManager) Deregister(key SnapKey, entry SnapEntry)

func (*SnapManager) GetSnapshotForApplying

func (sm *SnapManager) GetSnapshotForApplying(snapKey SnapKey) (Snapshot, error)

func (*SnapManager) GetSnapshotForBuilding

func (sm *SnapManager) GetSnapshotForBuilding(key SnapKey) (Snapshot, error)

func (*SnapManager) GetSnapshotForReceiving

func (sm *SnapManager) GetSnapshotForReceiving(snapKey SnapKey, data []byte) (Snapshot, error)

func (*SnapManager) GetSnapshotForSending

func (sm *SnapManager) GetSnapshotForSending(snapKey SnapKey) (Snapshot, error)

func (*SnapManager) GetTotalSnapSize

func (sm *SnapManager) GetTotalSnapSize() uint64

func (*SnapManager) HasRegistered

func (sm *SnapManager) HasRegistered(key SnapKey) bool

func (*SnapManager) Init

func (sm *SnapManager) Init() error

func (*SnapManager) ListIdleSnap

func (sm *SnapManager) ListIdleSnap() ([]SnapKeyWithSending, error)

func (*SnapManager) Register

func (sm *SnapManager) Register(key SnapKey, entry SnapEntry)

func (*SnapManager) Stats

func (sm *SnapManager) Stats() SnapStats

type SnapManagerBuilder

type SnapManagerBuilder struct {
	// contains filtered or unexported fields
}

func (*SnapManagerBuilder) Build

func (smb *SnapManagerBuilder) Build(path string) *SnapManager

func (*SnapManagerBuilder) MaxTotalSize

func (smb *SnapManagerBuilder) MaxTotalSize(v uint64) *SnapManagerBuilder

type SnapState

type SnapState struct {
	StateType SnapStateType
	Receiver  chan *eraftpb.Snapshot
}

type SnapStateType

type SnapStateType int
const (
	SnapState_Relax SnapStateType = 0 + iota
	SnapState_Generating
	SnapState_Applying
)

type SnapStatistics

type SnapStatistics struct {
	Size    uint64
	KVCount int
}

type SnapStats

type SnapStats struct {
	ReceivingCount int
	SendingCount   int
}

type Snapshot

type Snapshot interface {
	io.Reader
	io.Writer
	Build(dbSnap *badger.Txn, region *metapb.Region, snapData *rspb.RaftSnapshotData, stat *SnapStatistics, deleter SnapshotDeleter) error
	Path() string
	Exists() bool
	Delete()
	Meta() (os.FileInfo, error)
	TotalSize() uint64
	Save() error
	Apply(option ApplyOptions) error
}

`Snapshot` is an interface for snapshot. It's used in these scenarios:

  1. build local snapshot
  2. read local snapshot and then replicate it to remote raftstores
  3. receive snapshot from remote raftstore and write it to local storage
  4. apply snapshot
  5. snapshot gc

type SnapshotDeleter

type SnapshotDeleter interface {
	// DeleteSnapshot returns true if it successfully delete the specified snapshot.
	DeleteSnapshot(key SnapKey, snapshot Snapshot, checkEntry bool) bool
}

`SnapshotDeleter` is a trait for deleting snapshot. It's used to ensure that the snapshot deletion happens under the protection of locking to avoid race case for concurrent read/write.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL