Documentation ¶
Index ¶
- Variables
- func Get(db *bbolt.DB, key []byte) ([]byte, error)
- func IterateDB(db *bbolt.DB, f func(oid.Address) error) error
- func OpenDB(p string, ro bool, openFile func(string, int, fs.FileMode) (*os.File, error)) (*bbolt.DB, error)
- type Cache
- type Info
- type MainStorage
- type Metabase
- type Metrics
- type Option
- func WithBlobstor(bs MainStorage) Option
- func WithDisableBackgroundFlush() Option
- func WithFlushWorkersCount(c int) Option
- func WithLogger(log *logger.Logger) Option
- func WithMaxBatchDelay(d time.Duration) Option
- func WithMaxBatchSize(sz int) Option
- func WithMaxCacheSize(sz uint64) Option
- func WithMaxObjectSize(sz uint64) Option
- func WithMetabase(db Metabase) Option
- func WithMetrics(metrics Metrics) Option
- func WithNoSync(noSync bool) Option
- func WithOpenFile(f func(string, int, fs.FileMode) (*os.File, error)) Option
- func WithPath(path string) Option
- func WithReportErrorFunc(f func(string, error)) Option
- func WithSmallObjectSize(sz uint64) Option
- type StorageType
Constants ¶
This section is empty.
Variables ¶
var ( // ErrReadOnly is returned when Put/Write is performed in a read-only mode. ErrReadOnly = logicerr.New("write-cache is in read-only mode") // ErrNotInitialized is returned when write-cache is initializing. ErrNotInitialized = logicerr.New("write-cache is not initialized yet") // ErrBigObject is returned when object is too big to be placed in cache. ErrBigObject = errors.New("too big object") // ErrOutOfSpace is returned when there is no space left to put a new object. ErrOutOfSpace = errors.New("no space left in the write cache") )
var ErrNoDefaultBucket = errors.New("no default bucket")
ErrNoDefaultBucket is returned by IterateDB when default bucket for objects is missing.
Functions ¶
func Get ¶
Get fetches object from the underlying database. Key should be a stringified address.
Returns an error of type apistatus.ObjectNotFound if the requested object is missing in db.
func IterateDB ¶
IterateDB iterates over all objects stored in bbolt.DB instance and passes them to f until error return. It is assumed that db is an underlying database of some WriteCache instance.
Returns ErrNoDefaultBucket if there is no default bucket in db.
DB must not be nil and should be opened.
Types ¶
type Cache ¶
type Cache interface { Get(ctx context.Context, address oid.Address) (*objectSDK.Object, error) Head(context.Context, oid.Address) (*objectSDK.Object, error) // Delete removes object referenced by the given oid.Address from the // Cache. Returns any error encountered that prevented the object to be // removed. // // Returns apistatus.ObjectNotFound if object is missing in the Cache. // Returns ErrReadOnly if the Cache is currently in the read-only mode. Delete(context.Context, oid.Address) error Put(context.Context, common.PutPrm) (common.PutRes, error) SetMode(mode.Mode) error SetLogger(*logger.Logger) DumpInfo() Info Flush(context.Context, bool, bool) error Seal(context.Context, bool) error Init() error Open(ctx context.Context, mode mode.Mode) error Close() error GetMetrics() Metrics }
Cache represents write-cache for objects.
type Info ¶
type Info struct { // Full path to the write-cache. Path string }
Info groups the information about write-cache.
type MainStorage ¶ added in v0.37.0
type MainStorage interface { Compressor() *compression.Config Exists(context.Context, common.ExistsPrm) (common.ExistsRes, error) Put(context.Context, common.PutPrm) (common.PutRes, error) }
MainStorage is the interface of the underlying storage of Cache implementations.
type Metabase ¶ added in v0.37.0
type Metabase interface {
UpdateStorageID(context.Context, meta.UpdateStorageIDPrm) (meta.UpdateStorageIDRes, error)
}
Metabase is the interface of the metabase used by Cache implementations.
type Metrics ¶ added in v0.37.0
type Metrics interface { SetShardID(string) Get(d time.Duration, success bool, st StorageType) Delete(d time.Duration, success bool, st StorageType) Put(d time.Duration, success bool, st StorageType) Flush(success bool, st StorageType) Evict(st StorageType) SetEstimateSize(db, fstree uint64) SetMode(m mode.Mode) SetActualCounters(db, fstree uint64) Close() }
func DefaultMetrics ¶ added in v0.37.0
func DefaultMetrics() Metrics
type Option ¶
type Option func(*options)
Option represents write-cache configuration option.
func WithDisableBackgroundFlush ¶ added in v0.38.0
func WithDisableBackgroundFlush() Option
WithDisableBackgroundFlush disables background flush, for testing purposes only.
func WithFlushWorkersCount ¶
func WithMaxBatchDelay ¶
WithMaxBatchDelay sets max batch delay for the small object database.
func WithMaxBatchSize ¶
WithMaxBatchSize sets max batch size for the small object database.
func WithMaxCacheSize ¶
WithMaxCacheSize sets maximum write-cache size in bytes.
func WithMaxObjectSize ¶
WithMaxObjectSize sets maximum object size to be stored in write-cache.
func WithMetrics ¶ added in v0.38.0
WithMetrics sets metrics implementation.
func WithNoSync ¶
WithNoSync sets an option to allow returning to caller on PUT before write is persisted. Note, that we use this flag for FSTree only and DO NOT use it for a bolt DB because we cannot yet properly handle the corrupted database during the startup. This SHOULD NOT be relied upon and may be changed in future.
func WithOpenFile ¶
WithOpenFile sets the OpenFile function to use internally by bolt. Useful for hermetic testing.
func WithReportErrorFunc ¶
WithReportErrorFunc sets error reporting function.
func WithSmallObjectSize ¶
WithSmallObjectSize sets maximum object size to be stored in write-cache.
type StorageType ¶ added in v0.37.0
type StorageType string
const ( StorageTypeUndefined StorageType = "null" StorageTypeDB StorageType = "db" StorageTypeFSTree StorageType = "fstree" )
func (StorageType) String ¶ added in v0.37.0
func (t StorageType) String() string