Documentation ¶
Index ¶
- Variables
- func IsErrRemoved(err error) bool
- type Cursor
- type DB
- func (db *DB) Close() error
- func (db *DB) ContainerSize(id cid.ID) (size uint64, err error)
- func (db *DB) Containers() (list []cid.ID, err error)
- func (db *DB) Delete(prm DeletePrm) (DeleteRes, error)
- func (db *DB) DoNotMove(prm DoNotMovePrm) (res DoNotMoveRes, err error)
- func (db *DB) DropGraves(tss []TombstonedObject) error
- func (db *DB) DumpInfo() Info
- func (db *DB) Exists(prm ExistsPrm) (res ExistsRes, err error)
- func (db *DB) FreeLockedBy(lockers []oid.Address) error
- func (db *DB) Get(prm GetPrm) (res GetRes, err error)
- func (db *DB) Inhume(prm InhumePrm) (res InhumeRes, err error)
- func (db *DB) Init() error
- func (db *DB) IsSmall(prm IsSmallPrm) (res IsSmallRes, err error)
- func (db *DB) IterateCoveredByTombstones(tss map[string]oid.Address, h func(oid.Address) error) error
- func (db *DB) IterateExpired(epoch uint64, h ExpiredObjectHandler) error
- func (db *DB) IterateOverGarbage(p GarbageIterationPrm) error
- func (db *DB) IterateOverGraveyard(p GraveyardIterationPrm) error
- func (db *DB) ListWithCursor(prm ListPrm) (res ListRes, err error)
- func (db *DB) Lock(cnr cid.ID, locker oid.ID, locked []oid.ID) error
- func (db *DB) Movable(_ MovablePrm) (MovableRes, error)
- func (db *DB) Open(readOnly bool) error
- func (db *DB) Put(prm PutPrm) (res PutRes, err error)
- func (db *DB) ReadShardID() ([]byte, error)
- func (db *DB) Reset() error
- func (db *DB) Select(prm SelectPrm) (res SelectRes, err error)
- func (db *DB) SetLogger(l *zap.Logger)
- func (db *DB) SetMode(m mode.Mode) error
- func (db *DB) ToMoveIt(prm ToMoveItPrm) (res ToMoveItRes, err error)
- func (db *DB) WriteShardID(id []byte) error
- type DeletePrm
- type DeleteRes
- type DoNotMovePrm
- type DoNotMoveRes
- type ExistsPrm
- type ExistsRes
- type ExpiredObject
- type ExpiredObjectHandler
- type GarbageHandler
- type GarbageIterationPrm
- type GarbageObject
- type GetPrm
- type GetRes
- type GraveyardIterationPrm
- type Info
- type InhumePrm
- type InhumeRes
- type IsSmallPrm
- type IsSmallRes
- type ListPrm
- type ListRes
- type MovablePrm
- type MovableRes
- type Option
- type PutPrm
- type PutRes
- type SelectPrm
- type SelectRes
- type ToMoveItPrm
- type ToMoveItRes
- type TombstonedHandler
- type TombstonedObject
Constants ¶
This section is empty.
Variables ¶
var ( ErrUnknownObjectType = errors.New("unknown object type") ErrIncorrectSplitInfoUpdate = errors.New("updating split info on object without it") ErrIncorrectRootObject = errors.New("invalid root object") )
var ErrEndOfListing = errors.New("end of object listing")
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 ErrInterruptIterator = errors.New("iterator is interrupted")
ErrInterruptIterator is returned by iteration handlers as a "break" keyword.
var ErrLackSplitInfo = errors.New("no split info on parent object")
var ErrLockObjectRemoval = errors.New("lock object removal")
ErrLockObjectRemoval is returned when inhume operation is being performed on lock object, and it is not a forced object removal.
Functions ¶
func IsErrRemoved ¶ added in v0.28.0
IsErrRemoved checks if error returned by Shard Exists/Get/Put method corresponds to removed object.
Types ¶
type Cursor ¶ added in v0.27.0
type Cursor struct {
// contains filtered or unexported fields
}
Cursor is a type for continuous object listing.
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB represents local metabase of storage node.
func (*DB) ContainerSize ¶ added in v0.15.0
func (*DB) DoNotMove ¶ added in v0.13.0
func (db *DB) DoNotMove(prm DoNotMovePrm) (res DoNotMoveRes, err error)
DoNotMove removes `MoveIt` mark from the object.
func (*DB) DropGraves ¶ added in v0.28.0
func (db *DB) DropGraves(tss []TombstonedObject) error
DropGraves deletes tombstoned objects from the graveyard bucket.
Returns any error appeared during deletion process.
func (*DB) Exists ¶ added in v0.13.0
Exists returns ErrAlreadyRemoved if addr was marked as removed. Otherwise it returns true if addr is in primary index or false if it is not.
Returns an error of type apistatus.ObjectAlreadyRemoved if object has been placed in graveyard.
func (*DB) FreeLockedBy ¶ added in v0.28.0
FreeLockedBy unlocks all objects in DB which are locked by lockers.
func (*DB) Get ¶
Get returns object header for specified address.
Returns an error of type apistatus.ObjectNotFound if object is missing in DB. Returns an error of type apistatus.ObjectAlreadyRemoved if object has been placed in graveyard.
func (*DB) Inhume ¶ added in v0.13.0
Inhume marks objects as removed but not removes it from metabase.
Allows inhuming non-locked objects only. Returns apistatus.ObjectLocked if at least one object is locked. Returns ErrLockObjectRemoval if inhuming is being performed on lock (not locked) object.
NOTE: Marks any object with GC mark (despite any prohibitions on operations with that object) if WithForceGCMark option has been provided.
func (*DB) Init ¶ added in v0.13.0
Init initializes metabase. It creates static (CID-independent) buckets in underlying BoltDB instance.
Does nothing if metabase has already been initialized and filled. To roll back the database to its initial state, use Reset.
func (*DB) IsSmall ¶ added in v0.13.0
func (db *DB) IsSmall(prm IsSmallPrm) (res IsSmallRes, err error)
IsSmall returns blobovniczaID for small objects and nil for big objects. Small objects stored in blobovnicza instances. Big objects stored in FS by shallow path which is calculated from address and therefore it is not indexed in metabase.
func (*DB) IterateCoveredByTombstones ¶ added in v0.16.0
func (db *DB) IterateCoveredByTombstones(tss map[string]oid.Address, h func(oid.Address) error) error
IterateCoveredByTombstones iterates over all objects in DB which are covered by tombstone with string address from tss. Locked objects are not included (do not confuse with objects of type LOCK).
If h returns ErrInterruptIterator, nil returns immediately. Returns other errors of h directly.
Does not modify tss.
func (*DB) IterateExpired ¶ added in v0.16.0
func (db *DB) IterateExpired(epoch uint64, h ExpiredObjectHandler) error
IterateExpired iterates over all objects in DB which are out of date relative to epoch. Locked objects are not included (do not confuse with objects of type LOCK).
If h returns ErrInterruptIterator, nil returns immediately. Returns other errors of h directly.
func (*DB) IterateOverGarbage ¶ added in v0.28.0
func (db *DB) IterateOverGarbage(p GarbageIterationPrm) error
IterateOverGarbage iterates over all objects marked with GC mark.
If h returns ErrInterruptIterator, nil returns immediately. Returns other errors of h directly.
func (*DB) IterateOverGraveyard ¶ added in v0.16.0
func (db *DB) IterateOverGraveyard(p GraveyardIterationPrm) error
IterateOverGraveyard iterates over all graves in DB.
If h returns ErrInterruptIterator, nil returns immediately. Returns other errors of h directly.
func (*DB) ListWithCursor ¶ added in v0.27.0
ListWithCursor lists physical objects available in metabase starting from cursor. Includes objects of all types. 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 (*DB) Lock ¶ added in v0.28.0
Lock marks objects as locked with another object. All objects are from the specified container.
Allows locking regular objects only (otherwise returns apistatus.LockNonRegularObject).
Locked list should be unique. Panics if it is empty.
func (*DB) Movable ¶ added in v0.13.0
func (db *DB) Movable(_ MovablePrm) (MovableRes, error)
Movable returns list of marked objects to move into other shard.
func (*DB) Put ¶
Put saves object header in metabase. Object payload expected to be cut. Big objects have nil blobovniczaID.
Returns an error of type apistatus.ObjectAlreadyRemoved if object has been placed in graveyard.
func (*DB) ReadShardID ¶ added in v0.27.7
ReadShardID reads shard id from db. If id is missing, returns nil, nil.
func (*DB) Reset ¶ added in v0.25.0
Reset resets metabase. Works similar to Init but cleans up all static buckets and removes all dynamic (CID-dependent) ones in non-blank BoltDB instances.
func (*DB) SetLogger ¶ added in v0.30.0
SetLogger sets logger. It is used after the shard ID was generated to use it in logs.
func (*DB) SetMode ¶ added in v0.30.0
SetMode sets the metabase mode of operation. If the mode assumes no operation metabase, the database is closed.
func (*DB) ToMoveIt ¶ added in v0.13.0
func (db *DB) ToMoveIt(prm ToMoveItPrm) (res ToMoveItRes, err error)
ToMoveIt marks objects to move it into another shard. This useful for faster HRW fetching.
func (*DB) WriteShardID ¶ added in v0.27.7
WriteShardID writes shard it to db.
type DeletePrm ¶ added in v0.13.0
type DeletePrm struct {
// contains filtered or unexported fields
}
DeletePrm groups the parameters of Delete operation.
func (*DeletePrm) SetAddresses ¶ added in v0.30.0
SetAddresses is a Delete option to set the addresses of the objects to delete.
Option is required.
type DeleteRes ¶ added in v0.13.0
type DeleteRes struct{}
DeleteRes groups the resulting values of Delete operation.
type DoNotMovePrm ¶ added in v0.13.0
type DoNotMovePrm struct {
// contains filtered or unexported fields
}
DoNotMovePrm groups the parameters of DoNotMove operation.
func (*DoNotMovePrm) SetAddress ¶ added in v0.30.0
func (p *DoNotMovePrm) SetAddress(addr oid.Address)
SetAddress sets address of the object to prevent moving into another shard.
type DoNotMoveRes ¶ added in v0.13.0
type DoNotMoveRes struct{}
DoNotMoveRes groups the resulting values of DoNotMove operation.
type ExistsPrm ¶ added in v0.13.0
type ExistsPrm struct {
// contains filtered or unexported fields
}
ExistsPrm groups the parameters of Exists operation.
func (*ExistsPrm) SetAddress ¶ added in v0.30.0
SetAddress is an Exists option to set object checked for existence.
type ExistsRes ¶ added in v0.13.0
type ExistsRes struct {
// contains filtered or unexported fields
}
ExistsRes groups the resulting values of Exists operation.
type ExpiredObject ¶ added in v0.16.0
type ExpiredObject struct {
// contains filtered or unexported fields
}
ExpiredObject is a descriptor of expired object from DB.
func (*ExpiredObject) Address ¶ added in v0.16.0
func (e *ExpiredObject) Address() oid.Address
Address returns address of the expired object.
func (*ExpiredObject) Type ¶ added in v0.16.0
func (e *ExpiredObject) Type() object.Type
Type returns type of the expired object.
type ExpiredObjectHandler ¶ added in v0.16.0
type ExpiredObjectHandler func(*ExpiredObject) error
ExpiredObjectHandler is an ExpiredObject handling function.
type GarbageHandler ¶ added in v0.28.0
type GarbageHandler func(GarbageObject) error
GarbageHandler is a GarbageObject handling function.
type GarbageIterationPrm ¶ added in v0.28.0
type GarbageIterationPrm struct {
// contains filtered or unexported fields
}
GarbageIterationPrm groups parameters of the garbage iteration process.
func (*GarbageIterationPrm) SetHandler ¶ added in v0.28.0
func (g *GarbageIterationPrm) SetHandler(h GarbageHandler)
SetHandler sets a handler that will be called on every GarbageObject.
func (*GarbageIterationPrm) SetOffset ¶ added in v0.28.0
func (g *GarbageIterationPrm) SetOffset(offset oid.Address)
SetOffset sets an offset of the iteration operation. The handler will be applied to the next after the specified offset if any are left.
Note: if offset is not found in db, iteration starts from the element that WOULD BE the following after the offset if offset was presented. That means that it is safe to delete offset element and pass if to the iteration once again: iteration would start from the next element.
Nil offset means start an integration from the beginning.
type GarbageObject ¶ added in v0.28.0
type GarbageObject struct {
// contains filtered or unexported fields
}
GarbageObject represents descriptor of the object that has been marked with GC.
func (GarbageObject) Address ¶ added in v0.28.0
func (g GarbageObject) Address() oid.Address
Address returns garbage object address.
type GetPrm ¶ added in v0.13.0
type GetPrm struct {
// contains filtered or unexported fields
}
GetPrm groups the parameters of Get operation.
func (*GetPrm) SetAddress ¶ added in v0.30.0
SetAddress is a Get option to set the address of the requested object.
Option is required.
type GetRes ¶ added in v0.13.0
type GetRes struct {
// contains filtered or unexported fields
}
GetRes groups the resulting values of Get operation.
type GraveyardIterationPrm ¶ added in v0.28.0
type GraveyardIterationPrm struct {
// contains filtered or unexported fields
}
GraveyardIterationPrm groups parameters of the graveyard iteration process.
func (*GraveyardIterationPrm) SetHandler ¶ added in v0.28.0
func (g *GraveyardIterationPrm) SetHandler(h TombstonedHandler)
SetHandler sets a handler that will be called on every TombstonedObject.
func (*GraveyardIterationPrm) SetOffset ¶ added in v0.28.0
func (g *GraveyardIterationPrm) SetOffset(offset oid.Address)
SetOffset sets an offset of the iteration operation. The handler will be applied to the next after the specified offset if any are left.
Note: if offset is not found in db, iteration starts from the element that WOULD BE the following after the offset if offset was presented. That means that it is safe to delete offset element and pass if to the iteration once again: iteration would start from the next element.
Nil offset means start an integration from the beginning.
type Info ¶ added in v0.13.0
type Info struct { // Full path to the metabase. Path string // Permission of database file. Permission fs.FileMode }
Info groups the information about DB.
type InhumePrm ¶ added in v0.13.0
type InhumePrm struct {
// contains filtered or unexported fields
}
InhumePrm encapsulates parameters for Inhume operation.
func (*InhumePrm) SetAddresses ¶ added in v0.30.0
SetAddresses sets a list of object addresses that should be inhumed.
func (*InhumePrm) SetForceGCMark ¶ added in v0.30.0
func (p *InhumePrm) SetForceGCMark()
SetForceGCMark allows removal any object. Expected to be called only in control service.
func (*InhumePrm) SetGCMark ¶ added in v0.30.0
func (p *InhumePrm) SetGCMark()
SetGCMark marks the object to be physically removed.
Should not be called along with SetTombstoneAddress.
func (*InhumePrm) SetLockObjectHandling ¶ added in v0.30.0
func (p *InhumePrm) SetLockObjectHandling()
SetLockObjectHandling checks if there were any LOCK object among the targets set via WithAddresses.
func (*InhumePrm) SetTombstoneAddress ¶ added in v0.30.0
SetTombstoneAddress sets tombstone address as the reason for inhume operation.
addr should not be nil. Should not be called along with SetGCMark.
type InhumeRes ¶ added in v0.13.0
type InhumeRes struct {
// contains filtered or unexported fields
}
InhumeRes encapsulates results of Inhume operation.
func (InhumeRes) DeletedLockObjects ¶ added in v0.30.0
DeletedLockObjects returns deleted object of LOCK type. Returns always nil if WithoutLockObjectHandling was provided to the InhumePrm.
type IsSmallPrm ¶ added in v0.13.0
type IsSmallPrm struct {
// contains filtered or unexported fields
}
IsSmallPrm groups the parameters of IsSmall operation.
func (*IsSmallPrm) WithAddress ¶ added in v0.13.0
func (p *IsSmallPrm) WithAddress(addr oid.Address)
WithAddress is a IsSmall option to set the object address to check.
type IsSmallRes ¶ added in v0.13.0
type IsSmallRes struct {
// contains filtered or unexported fields
}
IsSmallRes groups the resulting values of IsSmall operation.
func (IsSmallRes) BlobovniczaID ¶ added in v0.13.0
func (r IsSmallRes) BlobovniczaID() *blobovnicza.ID
BlobovniczaID returns blobovnicza identifier.
type ListPrm ¶ added in v0.27.0
type ListPrm struct {
// contains filtered or unexported fields
}
ListPrm contains parameters for ListWithCursor operation.
type ListRes ¶ added in v0.27.0
type ListRes struct {
// contains filtered or unexported fields
}
ListRes contains values returned from ListWithCursor operation.
func (ListRes) AddressList ¶ added in v0.27.0
AddressList returns addresses selected by ListWithCursor operation.
type MovablePrm ¶ added in v0.13.0
type MovablePrm struct{}
MovablePrm groups the parameters of Movable operation.
type MovableRes ¶ added in v0.13.0
type MovableRes struct {
// contains filtered or unexported fields
}
MovableRes groups the resulting values of Movable operation.
func (MovableRes) AddressList ¶ added in v0.13.0
func (p MovableRes) AddressList() []oid.Address
AddressList returns resulting addresses of Movable operation.
type Option ¶
type Option func(*cfg)
Option is an option of DB constructor.
func WithBoltDBOptions ¶ added in v0.13.0
WithBoltDBOptions returns option to specify BoltDB options.
func WithLogger ¶
WithLogger returns option to set logger of DB.
func WithMaxBatchDelay ¶ added in v0.29.0
WithMaxBatchDelay returns option to specify maximum time to wait before the batch of concurrent transactions is processed. This option is missing from `bbolt.Options` but is set right after DB is open.
func WithMaxBatchSize ¶ added in v0.29.0
WithMaxBatchSize returns option to specify maximum concurrent operations to be processed in a single transactions. This option is missing from `bbolt.Options` but is set right after DB is open.
func WithPermissions ¶ added in v0.13.0
WithPermissions returns option to specify permission bits of Metabase system path.
type PutPrm ¶ added in v0.13.0
type PutPrm struct {
// contains filtered or unexported fields
}
PutPrm groups the parameters of Put operation.
func (*PutPrm) SetBlobovniczaID ¶ added in v0.30.0
func (p *PutPrm) SetBlobovniczaID(id *blobovnicza.ID)
SetBlobovniczaID is a Put option to set blobovnicza ID to save.
type PutRes ¶ added in v0.13.0
type PutRes struct{}
PutRes groups the resulting values of Put operation.
type SelectPrm ¶ added in v0.13.0
type SelectPrm struct {
// contains filtered or unexported fields
}
SelectPrm groups the parameters of Select operation.
func (*SelectPrm) SetContainerID ¶ added in v0.30.0
SetContainerID is a Select option to set the container id to search in.
func (*SelectPrm) SetFilters ¶ added in v0.30.0
func (p *SelectPrm) SetFilters(fs object.SearchFilters)
SetFilters is a Select option to set the object filters.
type SelectRes ¶ added in v0.13.0
type SelectRes struct {
// contains filtered or unexported fields
}
SelectRes groups the resulting values of Select operation.
func (SelectRes) AddressList ¶ added in v0.13.0
AddressList returns list of addresses of the selected objects.
type ToMoveItPrm ¶ added in v0.13.0
type ToMoveItPrm struct {
// contains filtered or unexported fields
}
ToMoveItPrm groups the parameters of ToMoveIt operation.
func (*ToMoveItPrm) SetAddress ¶ added in v0.30.0
func (p *ToMoveItPrm) SetAddress(addr oid.Address)
SetAddress sets address of the object to move into another shard.
type ToMoveItRes ¶ added in v0.13.0
type ToMoveItRes struct{}
ToMoveItRes groups the resulting values of ToMoveIt operation.
type TombstonedHandler ¶ added in v0.28.0
type TombstonedHandler func(object TombstonedObject) error
TombstonedHandler is a TombstonedObject handling function.
type TombstonedObject ¶ added in v0.28.0
type TombstonedObject struct {
// contains filtered or unexported fields
}
TombstonedObject represents descriptor of the object that has been covered with tombstone.
func (TombstonedObject) Address ¶ added in v0.28.0
func (g TombstonedObject) Address() oid.Address
Address returns tombstoned object address.
func (TombstonedObject) Tombstone ¶ added in v0.28.0
func (g TombstonedObject) Tombstone() oid.Address
Tombstone returns address of a tombstone that covers object.