forked from TrueCloudLab/frostfs-node
[#661] blobovnicza: Compute size with record size
To get more accurate size of blobovnicza use record size (lenght of key + lenght of data). Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
e54dc3dc7c
commit
ad0697adc4
5 changed files with 19 additions and 14 deletions
|
@ -49,6 +49,7 @@ func (b *Blobovnicza) Delete(ctx context.Context, prm DeletePrm) (DeleteRes, err
|
|||
var sizeUpperBound uint64
|
||||
var sizeLowerBound uint64
|
||||
var dataSize uint64
|
||||
var recordSize uint64
|
||||
|
||||
err := b.boltDB.Update(func(tx *bbolt.Tx) error {
|
||||
err := b.iterateAllDataBuckets(tx, func(lower, upper uint64, buck *bbolt.Bucket) (bool, error) {
|
||||
|
@ -60,6 +61,7 @@ func (b *Blobovnicza) Delete(ctx context.Context, prm DeletePrm) (DeleteRes, err
|
|||
dataSize = uint64(len(objData))
|
||||
sizeLowerBound = lower
|
||||
sizeUpperBound = upper
|
||||
recordSize = dataSize + uint64(len(addrKey))
|
||||
found = true
|
||||
return true, buck.Delete(addrKey)
|
||||
})
|
||||
|
@ -71,8 +73,10 @@ func (b *Blobovnicza) Delete(ctx context.Context, prm DeletePrm) (DeleteRes, err
|
|||
if count > 0 {
|
||||
count--
|
||||
}
|
||||
if size >= sizeUpperBound {
|
||||
size -= sizeUpperBound
|
||||
if size >= recordSize {
|
||||
size -= recordSize
|
||||
} else {
|
||||
size = 0
|
||||
}
|
||||
return count, size
|
||||
})
|
||||
|
@ -90,7 +94,7 @@ func (b *Blobovnicza) Delete(ctx context.Context, prm DeletePrm) (DeleteRes, err
|
|||
zap.String("range", stringifyBounds(sizeLowerBound, sizeUpperBound)),
|
||||
zap.String("trace_id", tracingPkg.GetTraceID(ctx)),
|
||||
)
|
||||
b.itemDeleted(sizeUpperBound)
|
||||
b.itemDeleted(recordSize)
|
||||
}
|
||||
|
||||
return DeleteRes{}, err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue