# Functions
CacheRefreshContext returns a context with an added value denoting if the cache should attempt a refresh.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Implements the transaction interface.
IsUnfencedWrite returns whether or not the context passed has the unfenced flag value set.
NewCache returns a physical cache of the given size.
NewErrorInjector returns a wrapped physical backend to inject error.
NewLatencyInjector returns a wrapped physical backend to simulate latency.
NewPermitPool returns a new permit pool with the provided number of permits.
No description provided by the author
NewStorageEncoding returns a wrapped physical backend and verifies the key encoding.
No description provided by the author
NewTransactionalErrorInjector creates a new transactional ErrorInjector.
NewTransactionalLatencyInjector creates a new transactional LatencyInjector jitter is the random percent that latency will vary between.
NewView takes an underlying physical backend and returns a view of it that can only operate with the given prefix.
Prefixes is a shared helper function returns all parent 'folders' for a given vault key.
No description provided by the author
UnfencedWriteCtx adds metadata to a ctx such that any writes performed directly on a FencingHABackend using that context will _not_ add a fencing token.
# Constants
DefaultCacheSize is used if no cache size is specified for NewCache.
DefaultErrorPercent is used to determin how often we error.
DefaultJitterPercent is used if no cache size is specified for NewCache.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
Cache is used to wrap an underlying physical backend and provide an LRU cache layer on top.
Entry is used to represent data stored by the physical backend.
ErrorInjector is used to add errors into underlying physical requests.
LatencyInjector is used to add latency into underlying physical requests.
PermitPool is used to limit maximum outstanding requests Deprecated: use permitpool.Pool from go-secure-stdlib.
PhysicalAccess is a wrapper around physical.Backend that allows Core to expose its physical storage operations through PhysicalAccess() while restricting the ability to modify Core.physical itself.
StorageEncoding is used to add errors into underlying physical requests.
No description provided by the author
No description provided by the author
TransactionalCache is a Cache that wraps the physical that is transactional.
TransactionalErrorInjector is the transactional version of the error injector.
TransactionalLatencyInjector is the transactional version of the latency injector.
TransactionalStorageEncoding is the transactional version of the error injector.
TxnEntry is an operation that takes atomically as part of a transactional update.
View represents a prefixed view of a physical backend.
# Interfaces
Backend is the interface required for a physical backend.
FencingHABackend is an HABackend which provides the additional guarantee that each Lock it returns from LockWith is also a FencingLock.
HABackend is an extensions to the standard physical backend to support high-availability.
No description provided by the author
MountTableLimitingBackend is an optional interface a Backend can implement that allows it to support different entry size limits for mount-table-related paths.
No description provided by the author
RedirectDetect is an optional interface that an HABackend can implement.
RemovableNodeHABackend is used for HA backends that can remove nodes from their cluster.
ToggleablePurgemonster is an interface for backends that can toggle on or off special functionality and/or support purging.
Transactional is an optional interface for backends that support doing transactional updates of multiple keys.
No description provided by the author
TransactionalLimits SHOULD be implemented by all TransactionalBackend implementations.