Documentation ¶
Index ¶
- func DrainChunks(chunks <-chan io.ReadCloser)
- type ChunkReader
- type ChunkWriter
- type Manager
- func (m *Manager) Create(height uint64) (*types.Snapshot, error)
- func (m *Manager) List() ([]*types.Snapshot, error)
- func (m *Manager) LoadChunk(height uint64, format uint32, chunk uint32) ([]byte, error)
- func (m *Manager) Prune(retain uint32) (uint64, error)
- func (m *Manager) Restore(snapshot types.Snapshot) error
- func (m *Manager) RestoreChunk(chunk []byte) (bool, error)
- type Store
- func (s *Store) Delete(height uint64, format uint32) error
- func (s *Store) Get(height uint64, format uint32) (*types.Snapshot, error)
- func (s *Store) GetLatest() (*types.Snapshot, error)
- func (s *Store) List() ([]*types.Snapshot, error)
- func (s *Store) Load(height uint64, format uint32) (*types.Snapshot, <-chan io.ReadCloser, error)
- func (s *Store) LoadChunk(height uint64, format uint32, chunk uint32) (io.ReadCloser, error)
- func (s *Store) Prune(retain uint32) (uint64, error)
- func (s *Store) Save(height uint64, format uint32, chunks <-chan io.ReadCloser) (*types.Snapshot, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DrainChunks ¶
func DrainChunks(chunks <-chan io.ReadCloser)
DrainChunks drains and closes all remaining chunks from a chunk channel.
Types ¶
type ChunkReader ¶
type ChunkReader struct {
// contains filtered or unexported fields
}
ChunkReader reads chunks from a channel of io.ReadClosers and outputs them as an io.Reader
func NewChunkReader ¶
func NewChunkReader(ch <-chan io.ReadCloser) *ChunkReader
NewChunkReader creates a new ChunkReader.
type ChunkWriter ¶
type ChunkWriter struct {
// contains filtered or unexported fields
}
ChunkWriter reads an input stream, splits it into fixed-size chunks, and writes them to a sequence of io.ReadClosers via a channel.
func NewChunkWriter ¶
func NewChunkWriter(ch chan<- io.ReadCloser, chunkSize uint64) *ChunkWriter
NewChunkWriter creates a new ChunkWriter. If chunkSize is 0, no chunking will be done.
func (*ChunkWriter) CloseWithError ¶
func (w *ChunkWriter) CloseWithError(err error)
CloseWithError closes the writer and sends an error to the reader.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages snapshot and restore operations for an app, making sure only a single long-running operation is in progress at any given time, and provides convenience methods mirroring the ABCI interface.
Although the ABCI interface (and this manager) passes chunks as byte slices, the internal snapshot/restore APIs use IO streams (i.e. chan io.ReadCloser), for two reasons:
- In the future, ABCI should support streaming. Consider e.g. InitChain during chain upgrades, which currently passes the entire chain state as an in-memory byte slice. https://github.com/tendermint/tendermint/issues/5184
- io.ReadCloser streams automatically propagate IO errors, and can pass arbitrary errors via io.Pipe.CloseWithError().
func NewManager ¶
func NewManager(store *Store, target types.Snapshotter) *Manager
NewManager creates a new manager.
func (*Manager) List ¶
List lists snapshots, mirroring ABCI ListSnapshots. It can be concurrent with other operations.
func (*Manager) LoadChunk ¶
LoadChunk loads a chunk into a byte slice, mirroring ABCI LoadChunk. It can be called concurrently with other operations. If the chunk does not exist, nil is returned.
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store is a snapshot store, containing snapshot metadata and binary chunks.
func (*Store) Load ¶
Load loads a snapshot (both metadata and binary chunks). The chunks must be consumed and closed. Returns nil if the snapshot does not exist.
func (*Store) LoadChunk ¶
LoadChunk loads a chunk from disk, or returns nil if it does not exist. The caller must call Close() on it when done.