Documentation ¶
Overview ¶
Package backend defines a standard interface for etcd's backend MVCC storage.
Index ¶
Constants ¶
View Source
const ( ENV_VERIFY = "ETCD_VERIFY" ENV_VERIFY_ALL_VALUE = "all" ENV_VERIFY_LOCK = "lock" )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Backend ¶
type Backend interface { // ReadTx returns a read transaction. It is replaced by ConcurrentReadTx in the main data path, see #10523. ReadTx() ReadTx BatchTx() BatchTx // ConcurrentReadTx returns a non-blocking read transaction. ConcurrentReadTx() ReadTx Snapshot() Snapshot Hash(ignores func(bucketName, keyName []byte) bool) (uint32, error) // Size returns the current size of the backend physically allocated. // The backend can hold DB space that is not utilized at the moment, // since it can conduct pre-allocation or spare unused space for recycling. // Use SizeInUse() instead for the actual DB size. Size() int64 // SizeInUse returns the current size of the backend logically in use. // Since the backend can manage free space in a non-byte unit such as // number of pages, the returned value can be not exactly accurate in bytes. SizeInUse() int64 // OpenReadTxN returns the number of currently open read transactions in the backend. OpenReadTxN() int64 Defrag() error ForceCommit() Close() error // SetTxPostLockInsideApplyHook sets a txPostLockInsideApplyHook. SetTxPostLockInsideApplyHook(func()) }
func New ¶
func New(bcfg BackendConfig) Backend
func NewDefaultBackend ¶
type BackendConfig ¶
type BackendConfig struct { // Path is the file path to the backend file. Path string // BatchInterval is the maximum time before flushing the BatchTx. BatchInterval time.Duration // BatchLimit is the maximum puts before flushing the BatchTx. BatchLimit int // BackendFreelistType is the backend boltdb's freelist type. BackendFreelistType bolt.FreelistType // MmapSize is the number of bytes to mmap for the backend. MmapSize uint64 // Logger logs backend-side operations. Logger *zap.Logger // UnsafeNoFsync disables all uses of fsync. UnsafeNoFsync bool `json:"unsafe-no-fsync"` // Mlock prevents backend database file to be swapped Mlock bool // Hooks are getting executed during lifecycle of Backend's transactions. Hooks Hooks }
func DefaultBackendConfig ¶
func DefaultBackendConfig() BackendConfig
type BatchTx ¶
type BatchTx interface { ReadTx UnsafeCreateBucket(bucket Bucket) UnsafeDeleteBucket(bucket Bucket) UnsafePut(bucket Bucket, key []byte, value []byte) UnsafeSeqPut(bucket Bucket, key []byte, value []byte) UnsafeDelete(bucket Bucket, key []byte) // Commit commits a previous tx and begins a new writable one. Commit() // CommitAndStop commits the previous tx and does not create a new one. CommitAndStop() LockInsideApply() LockOutsideApply() }
type Bucket ¶
type Bucket interface { // ID returns a unique identifier of a bucket. // The id must NOT be persisted and can be used as lightweight identificator // in the in-memory maps. ID() BucketID Name() []byte // String implements Stringer (human readable name). String() string // IsSafeRangeBucket is a hack to avoid inadvertently reading duplicate keys; // overwrites on a bucket should only fetch with limit=1, but safeRangeBucket // is known to never overwrite any key so range is safe. IsSafeRangeBucket() bool }
type Hooks ¶
type Hooks interface { // OnPreCommitUnsafe is executed before Commit of transactions. // The given transaction is already locked. OnPreCommitUnsafe(tx BatchTx) }
Hooks allow to add additional logic executed during transaction lifetime.
Source Files ¶
Click to show internal directories.
Click to hide internal directories.