aboutsummaryrefslogtreecommitdiff
path: root/weed/storage
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-10-31 08:32:46 +0500
committerGitHub <noreply@github.com>2022-10-30 20:32:46 -0700
commitbf8a9d2db138053951af646b87f613b7d96142ee (patch)
tree2e59fbdb7b97ff4f6018ecd5ad069efead5fc42d /weed/storage
parent8b9957d4616f9c6d416552a1db9fbd83c97c64f4 (diff)
downloadseaweedfs-bf8a9d2db138053951af646b87f613b7d96142ee.tar.xz
seaweedfs-bf8a9d2db138053951af646b87f613b7d96142ee.zip
[volume.chek.disk] sync of deletions the fix (#3923)
* sync of deletions the fix * avoid return if only partiallyDeletedNeedles * refactor sync deletions
Diffstat (limited to 'weed/storage')
-rw-r--r--weed/storage/needle_map/memdb.go6
-rw-r--r--weed/storage/types/needle_id_type.go4
2 files changed, 9 insertions, 1 deletions
diff --git a/weed/storage/needle_map/memdb.go b/weed/storage/needle_map/memdb.go
index f2b161792..d3d47b605 100644
--- a/weed/storage/needle_map/memdb.go
+++ b/weed/storage/needle_map/memdb.go
@@ -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)
diff --git a/weed/storage/types/needle_id_type.go b/weed/storage/types/needle_id_type.go
index e65c862f2..1ea9b0a1a 100644
--- a/weed/storage/types/needle_id_type.go
+++ b/weed/storage/types/needle_id_type.go
@@ -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 {