[volume.chek.disk] sync of deletions the fix (#3923)
* sync of deletions the fix * avoid return if only partiallyDeletedNeedles * refactor sync deletions
This commit is contained in:
committed by
GitHub
parent
8b9957d461
commit
bf8a9d2db1
@@ -145,8 +145,12 @@ func (cm *MemDb) LoadFromIdx(idxName string) (ret error) {
|
||||
|
||||
func (cm *MemDb) LoadFromReaderAt(readerAt io.ReaderAt) (ret error) {
|
||||
|
||||
return cm.LoadFilterFromReaderAt(readerAt, true, true)
|
||||
}
|
||||
|
||||
func (cm *MemDb) LoadFilterFromReaderAt(readerAt io.ReaderAt, isFilterOffsetZero bool, isFilterDeleted bool) (ret error) {
|
||||
return idx.WalkIndexFile(readerAt, 0, func(key NeedleId, offset Offset, size Size) error {
|
||||
if offset.IsZero() || size.IsDeleted() {
|
||||
if (isFilterOffsetZero && offset.IsZero()) || (isFilterDeleted && size.IsDeleted()) {
|
||||
return cm.Delete(key)
|
||||
}
|
||||
return cm.Set(key, offset, size)
|
||||
|
||||
@@ -34,6 +34,10 @@ func (k NeedleId) String() string {
|
||||
return strconv.FormatUint(uint64(k), 16)
|
||||
}
|
||||
|
||||
func (k NeedleId) FileId(volumeId uint32) string {
|
||||
return fmt.Sprintf("%d,%s00000000", volumeId, k.String())
|
||||
}
|
||||
|
||||
func ParseNeedleId(idString string) (NeedleId, error) {
|
||||
key, err := strconv.ParseUint(idString, 16, 64)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user