backupstorage

package
v2.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2016 License: BSD-3-Clause Imports: 3 Imported by: 0

Documentation

Overview

Package backupstorage contains the interface and file system implementation of the backup system.

Index

Constants

This section is empty.

Variables

View Source
var (
	// BackupStorageImplementation is the implementation to use
	// for BackupStorage. Exported for test purposes.
	BackupStorageImplementation = flag.String("backup_storage_implementation", "", "which implementation to use for the backup storage feature")
)
View Source
var BackupStorageMap = make(map[string]BackupStorage)

BackupStorageMap contains the registered implementations for BackupStorage

Functions

This section is empty.

Types

type BackupHandle

type BackupHandle interface {
	// Directory is the location of the backup. Will contain keyspace/shard.
	Directory() string

	// Name is the individual name of the backup. Will contain
	// tabletAlias-timestamp.
	Name() string

	// AddFile opens a new file to be added to the backup.
	// Only works for read-write backups (created by StartBackup).
	// filename is guaranteed to only contain alphanumerical
	// characters and hyphens.
	// It should be thread safe, it is possible to call AddFile in
	// multiple go routines once a backup has been started.
	AddFile(filename string) (io.WriteCloser, error)

	// EndBackup stops and closes a backup. The contents should be kept.
	// Only works for read-write backups (created by StartBackup).
	EndBackup() error

	// AbortBackup stops a backup, and removes the contents that
	// have been copied already. It is called if an error occurs
	// while the backup is being taken, and the backup cannot be finished.
	// Only works for read-write backups (created by StartBackup).
	AbortBackup() error

	// ReadFile starts reading a file from a backup.
	// Only works for read-only backups (created by ListBackups).
	ReadFile(filename string) (io.ReadCloser, error)
}

BackupHandle describes an individual backup.

type BackupStorage

type BackupStorage interface {
	// ListBackups returns all the backups in a directory.  The
	// returned backups are read-only (ReadFile can be called, but
	// AddFile/EndBackup/AbortBackup cannot).
	// The backups are string-sorted by Name(), ascending (ends up
	// being the oldest backup first).
	ListBackups(dir string) ([]BackupHandle, error)

	// StartBackup creates a new backup with the given name.  If a
	// backup with the same name already exists, it's an error.
	// The returned backup is read-write
	// (AddFile/EndBackup/AbortBackup cann all be called, not
	// ReadFile)
	StartBackup(dir, name string) (BackupHandle, error)

	// RemoveBackup removes all the data associated with a backup.
	// It will not appear in ListBackups after RemoveBackup succeeds.
	RemoveBackup(dir, name string) error

	// Close frees resources associated with an active backup session,
	// such as closing connections. Implementations of BackupStorage must support
	// being reused after Close() is called.
	Close() error
}

BackupStorage is the interface to the storage system

func GetBackupStorage

func GetBackupStorage() (BackupStorage, error)

GetBackupStorage returns the current BackupStorage implementation. Should be called after flags have been initialized. When all operations are done, call BackupStorage.Close() to free resources.

Jump to

Keyboard shortcuts

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