Documentation ¶
Index ¶
- Variables
- func IsErrNotFound(err error) bool
- func IsErrObjectExpired(err error) bool
- func IsErrOutOfRange(err error) bool
- func IsErrRemoved(err error) bool
- type Cursor
- type DeletedLockCallback
- type Event
- type ExpiredObjectsCallback
- type ExpiredTombstonesCallback
- type ID
- type Info
- type MetricsWriter
- type ObjectStatus
- type Option
- func WithBlobStorOptions(opts ...blobstor.Option) Option
- func WithDeletedLockCallback(v DeletedLockCallback) Option
- func WithExpiredLocksCallback(cb ExpiredObjectsCallback) Option
- func WithExpiredObjectsCallback(cb ExpiredObjectsCallback) Option
- func WithGCRemoverSleepInterval(dur time.Duration) Option
- func WithGCWorkerPoolInitializer(wpInit func(int) util.WorkerPool) Option
- func WithID(id *ID) Option
- func WithLogger(l *zap.Logger) Option
- func WithMetaBaseOptions(opts ...meta.Option) Option
- func WithMetricsWriter(v MetricsWriter) Option
- func WithMode(v mode.Mode) Option
- func WithPiloramaOptions(opts ...pilorama.Option) Option
- func WithRemoverBatchSize(sz int) Option
- func WithReportErrorFunc(f func(selfID string, message string, err error)) Option
- func WithResyncMetabase(v bool) Option
- func WithWriteCache(use bool) Option
- func WithWriteCacheOptions(opts ...writecache.Option) Option
- type Shard
- func (s *Shard) Close() error
- func (s *Shard) ContainerSize(cnr cid.ID) (uint64, error)
- func (s *Shard) Delete(addrs []oid.Address) error
- func (s *Shard) DeleteContainer(_ context.Context, cID cid.ID) error
- func (s *Shard) Dump(w io.Writer, ignoreErrors bool) (int, error)
- func (s *Shard) DumpInfo() Info
- func (s *Shard) Exists(addr oid.Address, ignoreExpiration bool) (bool, error)
- func (s *Shard) FlushWriteCache(ignoreErrors bool) error
- func (s *Shard) Get(addr oid.Address, skipMeta bool) (*objectSDK.Object, error)
- func (s *Shard) GetBytes(addr oid.Address) ([]byte, error)
- func (s *Shard) GetBytesWithMetadataLookup(addr oid.Address) ([]byte, error)
- func (s *Shard) GetMode() mode.Mode
- func (s *Shard) GetRange(addr oid.Address, offset uint64, length uint64, skipMeta bool) (*object.Object, error)
- func (s *Shard) HandleDeletedLocks(lockers []oid.Address)
- func (s *Shard) HandleExpiredLocks(lockers []oid.Address)
- func (s *Shard) Head(addr oid.Address, raw bool) (*objectSDK.Object, error)
- func (s *Shard) ID() *ID
- func (s *Shard) Inhume(tombstone oid.Address, tombExpiration uint64, addrs ...oid.Address) error
- func (s *Shard) InhumeContainer(cID cid.ID) error
- func (s *Shard) Init() error
- func (s *Shard) IsLocked(addr oid.Address) (bool, error)
- func (s *Shard) List() ([]oid.Address, error)
- func (s *Shard) ListContainers() ([]cid.ID, error)
- func (s *Shard) ListWithCursor(count int, cursor *Cursor) ([]objectcore.AddressWithType, *Cursor, error)
- func (s *Shard) Lock(idCnr cid.ID, locker oid.ID, locked []oid.ID) error
- func (s *Shard) MarkGarbage(force bool, addrs ...oid.Address) error
- func (s *Shard) NotificationChannel() chan<- Event
- func (s *Shard) ObjectStatus(address oid.Address) (ObjectStatus, error)
- func (s *Shard) Open() error
- func (s *Shard) Put(obj *object.Object, objBin []byte, hdrLen int) error
- func (s *Shard) Reload(opts ...Option) error
- func (s *Shard) Restore(r io.Reader, ignoreErrors bool) (int, int, error)
- func (s *Shard) ReviveObject(addr oid.Address) (meta.ReviveStatus, error)
- func (s *Shard) Select(cnr cid.ID, filters object.SearchFilters) ([]oid.Address, error)
- func (s *Shard) SetMode(m mode.Mode) error
- func (s *Shard) ToMoveIt(addr oid.Address) error
- func (s *Shard) TreeAddByPath(d pilorama.CIDDescriptor, treeID string, attr string, path []string, ...) ([]pilorama.LogMove, error)
- func (s *Shard) TreeApply(d pilorama.CIDDescriptor, treeID string, m *pilorama.Move, backgroundSync bool) error
- func (s *Shard) TreeDrop(cid cidSDK.ID, treeID string) error
- func (s *Shard) TreeExists(cid cidSDK.ID, treeID string) (bool, error)
- func (s *Shard) TreeGetByPath(cid cidSDK.ID, treeID string, attr string, path []string, latest bool) ([]pilorama.Node, error)
- func (s *Shard) TreeGetChildren(cid cidSDK.ID, treeID string, nodeID pilorama.Node) ([]uint64, error)
- func (s *Shard) TreeGetMeta(cid cidSDK.ID, treeID string, nodeID pilorama.Node) (pilorama.Meta, uint64, error)
- func (s *Shard) TreeGetOpLog(cid cidSDK.ID, treeID string, height uint64) (pilorama.Move, error)
- func (s *Shard) TreeList(cid cidSDK.ID) ([]string, error)
- func (s *Shard) TreeMove(d pilorama.CIDDescriptor, treeID string, m *pilorama.Move) (*pilorama.LogMove, error)
- func (s *Shard) UpdateID() (err error)
Constants ¶
This section is empty.
Variables ¶
var ErrDegradedMode = logicerr.New("shard is in degraded mode")
ErrDegradedMode is returned when operation requiring metabase is executed in degraded mode.
var ErrEndOfListing = meta.ErrEndOfListing
ErrEndOfListing is returned from object listing with cursor when storage can't return any more objects after provided cursor. Use nil cursor object to start listing again.
var ErrInvalidMagic = logicerr.New("invalid magic")
ErrInvalidMagic is returned when dump format is invalid.
var ErrLockObjectRemoval = meta.ErrLockObjectRemoval
ErrLockObjectRemoval is returned when inhume operation is being performed on lock object, and it is not a forced object removal.
var ErrMetaWithNoObject = errors.New("got meta, but no object")
ErrMetaWithNoObject is returned when shard has metadata, but no object.
var ErrMustBeReadOnly = logicerr.New("shard must be in read-only mode")
var ErrPiloramaDisabled = logicerr.New("pilorama is disabled")
ErrPiloramaDisabled is returned when pilorama was disabled in the configuration.
var ErrReadOnlyMode = logicerr.New("shard is in read-only mode")
ErrReadOnlyMode is returned when it is impossible to apply operation that changes shard's memory due to the "read-only" shard's mode.
Functions ¶
func IsErrNotFound ¶ added in v0.28.0
IsErrNotFound checks if error returned by Shard Get/Head/GetRange method corresponds to missing object.
func IsErrObjectExpired ¶ added in v0.31.0
IsErrObjectExpired checks if an error returned by Shard corresponds to expired object.
func IsErrOutOfRange ¶ added in v0.30.0
IsErrOutOfRange checks if an error returned by Shard GetRange method corresponds to exceeding the object bounds.
func IsErrRemoved ¶ added in v0.28.0
IsErrRemoved checks if error returned by Shard Exists/Get/Head/GetRange method corresponds to removed object.
Types ¶
type DeletedLockCallback ¶ added in v0.30.0
DeletedLockCallback is a callback handling list of deleted LOCK objects.
type Event ¶ added in v0.16.0
type Event interface {
// contains filtered or unexported methods
}
Event represents class of external events.
func EventNewEpoch ¶ added in v0.16.0
EventNewEpoch returns new epoch event.
type ExpiredObjectsCallback ¶ added in v0.16.0
ExpiredObjectsCallback is a callback handling list of expired objects.
type ExpiredTombstonesCallback ¶ added in v0.28.0
type ExpiredTombstonesCallback func([]meta.TombstonedObject)
ExpiredTombstonesCallback is a callback handling list of expired tombstones.
type ID ¶
type ID []byte
ID represents Shard identifier.
Each shard should have the unique ID within a single instance of local storage.
func NewIDFromBytes ¶
NewIDFromBytes constructs ID from byte slice.
type Info ¶
type Info struct { // Identifier of the shard. ID *ID // Shard mode. Mode mode.Mode // Information about the metabase. MetaBaseInfo meta.Info // Information about the BLOB storage. BlobStorInfo blobstor.Info // Information about the Write Cache. WriteCacheInfo writecache.Info // ErrorCount contains amount of errors occurred in shard operations. ErrorCount uint32 // PiloramaInfo contains information about trees stored on this shard. PiloramaInfo pilorama.Info }
Info groups the information about Shard.
type MetricsWriter ¶ added in v0.32.0
type MetricsWriter interface { // SetObjectCounter must set object counter taking into account object type. SetObjectCounter(objectType string, v uint64) // AddToObjectCounter must update object counter taking into account object // type. // Negative parameter must decrease the counter. AddToObjectCounter(objectType string, delta int) // AddToContainerSize must add a value to the container size. // Value can be negative. AddToContainerSize(cnr string, value int64) // AddToPayloadSize must add a value to the payload size. // Value can be negative. AddToPayloadSize(value int64) // IncObjectCounter must increment shard's object counter taking into account // object type. IncObjectCounter(objectType string) // DecObjectCounter must decrement shard's object counter taking into account // object type. DecObjectCounter(objectType string) // SetShardID must set (update) the shard identifier that will be used in // metrics. SetShardID(id string) // SetReadonly must set shard readonly state. SetReadonly(readonly bool) }
MetricsWriter is an interface that must store shard's metrics.
type ObjectStatus ¶ added in v0.39.0
type ObjectStatus struct { Blob blobstor.ObjectStatus Metabase meta.ObjectStatus Writecache writecache.ObjectStatus Errors []error }
ObjectStatus represents the status of an object in a storage system. It contains information about the object's status in various sub-components such as Blob storage, Metabase, and Writecache. Additionally, it includes a slice of errors that may have occurred at the object level.
type Option ¶
type Option func(*cfg)
Option represents Shard's constructor option.
func WithBlobStorOptions ¶
WithBlobStorOptions returns option to set internal BlobStor options.
func WithDeletedLockCallback ¶ added in v0.30.0
func WithDeletedLockCallback(v DeletedLockCallback) Option
WithDeletedLockCallback returns option to specify callback of the deleted LOCK objects handler.
func WithExpiredLocksCallback ¶ added in v0.28.0
func WithExpiredLocksCallback(cb ExpiredObjectsCallback) Option
WithExpiredLocksCallback returns option to specify callback of the expired LOCK objects handler.
func WithExpiredObjectsCallback ¶ added in v0.16.0
func WithExpiredObjectsCallback(cb ExpiredObjectsCallback) Option
WithExpiredObjectsCallback returns option to specify callback of the expired objects handler.
func WithGCRemoverSleepInterval ¶ added in v0.16.0
WithGCRemoverSleepInterval returns option to specify sleep interval between object remover executions.
func WithGCWorkerPoolInitializer ¶ added in v0.16.0
func WithGCWorkerPoolInitializer(wpInit func(int) util.WorkerPool) Option
WithGCWorkerPoolInitializer returns option to set initializer of worker pool with specified worker number.
func WithLogger ¶
WithLogger returns option to set Shard's logger.
func WithMetaBaseOptions ¶
WithMetaBaseOptions returns option to set internal metabase options.
func WithMetricsWriter ¶ added in v0.32.0
func WithMetricsWriter(v MetricsWriter) Option
WithMetricsWriter returns option to specify storage of the shard's metrics.
func WithMode ¶ added in v0.27.3
WithMode returns option to set shard's mode. Mode must be one of the predefined:
- mode.ReadWrite;
- mode.ReadOnly.
func WithPiloramaOptions ¶ added in v0.30.0
WithPiloramaOptions returns option to set internal write cache options.
func WithRemoverBatchSize ¶ added in v0.16.0
WithRemoverBatchSize returns option to set batch size of single removal operation.
func WithReportErrorFunc ¶ added in v0.36.0
WithReportErrorFunc returns option to specify callback for handling storage-related errors in the background workers.
func WithResyncMetabase ¶ added in v0.44.0
WithResyncMetabase returns option to set flag to refill the Metabase on Shard's initialization step.
func WithWriteCache ¶
WithWriteCache returns option to toggle write cache usage.
func WithWriteCacheOptions ¶
func WithWriteCacheOptions(opts ...writecache.Option) Option
WithWriteCacheOptions returns option to set internal write cache options.
type Shard ¶
type Shard struct {
// contains filtered or unexported fields
}
Shard represents single shard of NeoFS Local Storage Engine.
func (*Shard) ContainerSize ¶ added in v0.15.0
func (*Shard) DeleteContainer ¶ added in v0.40.0
DeleteContainer deletes any information related to the container including: - Metabase; - Blobstor; - Pilorama (if configured); - Write-cache (if configured).
func (*Shard) Dump ¶ added in v0.27.5
DumpToStream dumps all objects from the shard to a given stream.
Returns any error encountered and the number of objects written.
func (*Shard) Exists ¶
Exists checks if object is presented in shard. ignoreExpiration flag allows to check for expired objects.
Returns any error encountered that does not allow to unambiguously determine the presence of an object.
Returns an error of type apistatus.ObjectAlreadyRemoved if object has been marked as removed. Returns the object.ErrObjectIsExpired if the object is presented but already expired.
func (*Shard) FlushWriteCache ¶ added in v0.33.0
FlushWriteCache flushes all data from the write-cache. If ignoreErrors is set will flush all objects it can irrespective of any errors.
func (*Shard) Get ¶
Get reads an object from shard. skipMeta flag allows to fetch object from the blobstor directly.
Returns any error encountered that did not allow to completely read the object part.
Returns an error of type apistatus.ObjectNotFound if the requested object is missing in shard. Returns an error of type apistatus.ObjectAlreadyRemoved if the requested object has been marked as removed in shard. Returns the object.ErrObjectIsExpired if the object is presented but already expired.
func (*Shard) GetBytes ¶ added in v0.41.0
GetBytes reads object from the Shard by address into memory buffer in a canonical NeoFS binary format. Returns apistatus.ObjectNotFound if object is missing.
func (*Shard) GetBytesWithMetadataLookup ¶ added in v0.41.0
GetBytesWithMetadataLookup works similar to shard.GetBytes, but pre-checks object presence in the underlying metabase: if object cannot be accessed from the metabase, GetBytesWithMetadataLookup returns an error.
func (*Shard) GetRange ¶
func (s *Shard) GetRange(addr oid.Address, offset uint64, length uint64, skipMeta bool) (*object.Object, error)
GetRange reads part of an object from shard. If skipMeta is specified data will be fetched directly from the blobstor, bypassing metabase.
Returns any error encountered that did not allow to completely read the object part.
Returns ErrRangeOutOfBounds if the requested object range is out of bounds. Returns an error of type apistatus.ObjectNotFound if the requested object is missing. Returns an error of type apistatus.ObjectAlreadyRemoved if the requested object has been marked as removed in shard. Returns the object.ErrObjectIsExpired if the object is presented but already expired.
func (*Shard) HandleDeletedLocks ¶ added in v0.30.0
HandleDeletedLocks unlocks all objects which were locked by lockers. Also, marks as garbage every object that becomes free-to-remove and just removed lock object is the only reason for that object to be alive (e.g. expired but locked objects).
func (*Shard) HandleExpiredLocks ¶ added in v0.28.0
HandleExpiredLocks unlocks all objects which were locked by lockers. If successful, marks lockers themselves as garbage. Also, marks as garbage every object that becomes free-to-remove and just removed lock object is the only reason for that object to be alive (e.g. expired but locked objects).
func (*Shard) Head ¶
Head reads header of the object from the shard. raw flag controls split object handling, if unset, then virtual object header is returned, otherwise SplitInfo of this object.
Returns any error encountered.
Returns an error of type apistatus.ObjectNotFound if object is missing in Shard. Returns an error of type apistatus.ObjectAlreadyRemoved if the requested object has been marked as removed in shard. Returns the object.ErrObjectIsExpired if the object is presented but already expired.
func (*Shard) Inhume ¶
Inhume marks objects as removed in metabase using provided tombstone data. Objects won't be removed physically from blobStor and metabase until `Delete` operation.
Allows inhuming non-locked objects only. Returns apistatus.ObjectLocked if at least one object is locked.
Returns ErrReadOnlyMode error if shard is in "read-only" mode.
func (*Shard) InhumeContainer ¶ added in v0.40.0
InhumeContainer marks every object in a container as removed. Any further [StorageEngine.Get] calls will return apistatus.ObjectNotFound errors. There is no any LOCKs, forced GC marks and any relations checks, every object that belongs to a provided container will be marked as a removed one.
func (*Shard) IsLocked ¶ added in v0.36.0
IsLocked checks object locking relation of the provided object. Not found object is considered as not locked. Requires healthy metabase, returns ErrDegradedMode otherwise.
func (*Shard) ListContainers ¶ added in v0.15.0
ListContainers enumerates all containers known to this shard.
func (*Shard) ListWithCursor ¶ added in v0.27.0
func (s *Shard) ListWithCursor(count int, cursor *Cursor) ([]objectcore.AddressWithType, *Cursor, error)
ListWithCursor lists physical objects available in shard starting from cursor. Includes regular, tombstone and storage group objects. Does not include inhumed objects. Use cursor value from response for consecutive requests.
Returns ErrEndOfListing if there are no more objects to return or count parameter set to zero.
func (*Shard) Lock ¶ added in v0.28.0
Lock marks objects as locked with another object. All objects from the specified container.
Allows locking regular objects only (otherwise returns apistatus.LockNonRegularObject).
Locked list should be unique. Panics if it is empty.
func (*Shard) MarkGarbage ¶ added in v0.44.0
MarkGarbage marks objects to be physically removed from shard. force flag allows to override any restrictions imposed on object deletion (to be used by control service and other manual intervention cases). Otherwise similar to Shard.Inhume, but doesn't need a tombstone.
func (*Shard) NotificationChannel ¶ added in v0.33.0
NotificationChannel returns channel for shard events.
func (*Shard) ObjectStatus ¶ added in v0.39.0
func (s *Shard) ObjectStatus(address oid.Address) (ObjectStatus, error)
ObjectStatus returns the status of the object in the Shard. It contains status of the object in Blob storage, Metabase and Writecache.
func (*Shard) Put ¶
Put saves the object in shard. objBin and hdrLen parameters are optional and used to optimize out object marshaling, when used both must be valid.
Returns any error encountered that did not allow to completely save the object.
Returns ErrReadOnlyMode error if shard is in "read-only" mode.
func (*Shard) Reload ¶ added in v0.34.0
Reload reloads configuration portions that are necessary. If a config option is invalid, it logs an error and returns nil. If there was a problem with applying new configuration, an error is returned.
func (*Shard) Restore ¶ added in v0.27.5
Restore restores objects from the dump prepared by Dump. If ignoreErrors is set any restore errors are ignored (corrupted objects are just skipped).
Returns two numbers: successful and failed restored objects, as well as any error encountered.
func (*Shard) ReviveObject ¶ added in v0.44.0
ReviveObject try to revive object in Shard, by remove records from graveyard and garbage.
Returns meta.ReviveStatus of object and error.
func (*Shard) Select ¶
Select selects the objects from shard that match select parameters.
Returns any error encountered that did not allow to completely select the objects.
Returns [object.ErrInvalidSearchQuery] if specified query is invalid.
func (*Shard) SetMode ¶
SetMode sets mode of the shard.
Returns any error encountered that did not allow setting shard mode.
func (*Shard) ToMoveIt ¶
ToMoveIt calls metabase.ToMoveIt method to mark object as relocatable to another shard.
func (*Shard) TreeAddByPath ¶ added in v0.30.0
func (s *Shard) TreeAddByPath(d pilorama.CIDDescriptor, treeID string, attr string, path []string, meta []pilorama.KeyValue) ([]pilorama.LogMove, error)
TreeAddByPath implements the pilorama.Forest interface.
func (*Shard) TreeApply ¶ added in v0.30.0
func (s *Shard) TreeApply(d pilorama.CIDDescriptor, treeID string, m *pilorama.Move, backgroundSync bool) error
TreeApply implements the pilorama.Forest interface.
func (*Shard) TreeExists ¶ added in v0.36.0
TreeExists implements the pilorama.Forest interface.
func (*Shard) TreeGetByPath ¶ added in v0.30.0
func (s *Shard) TreeGetByPath(cid cidSDK.ID, treeID string, attr string, path []string, latest bool) ([]pilorama.Node, error)
TreeGetByPath implements the pilorama.Forest interface.
func (*Shard) TreeGetChildren ¶ added in v0.30.0
func (s *Shard) TreeGetChildren(cid cidSDK.ID, treeID string, nodeID pilorama.Node) ([]uint64, error)
TreeGetChildren implements the pilorama.Forest interface.
func (*Shard) TreeGetMeta ¶ added in v0.30.0
func (s *Shard) TreeGetMeta(cid cidSDK.ID, treeID string, nodeID pilorama.Node) (pilorama.Meta, uint64, error)
TreeGetMeta implements the pilorama.Forest interface.
func (*Shard) TreeGetOpLog ¶ added in v0.30.0
TreeGetOpLog implements the pilorama.Forest interface.