From 82e803a5135532790986f87dab249172b2b95350 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Mon, 27 May 2024 12:23:18 +0700 Subject: [PATCH 1/3] save --- .../freezeblocks/block_snapshots.go | 8 +++++--- .../freezeblocks/block_snapshots_test.go | 2 +- .../freezeblocks/bor_snapshots.go | 19 +++++++++++++------ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/turbo/snapshotsync/freezeblocks/block_snapshots.go b/turbo/snapshotsync/freezeblocks/block_snapshots.go index 03c22dd9eb8..072fc164884 100644 --- a/turbo/snapshotsync/freezeblocks/block_snapshots.go +++ b/turbo/snapshotsync/freezeblocks/block_snapshots.go @@ -680,7 +680,7 @@ func (s *RoSnapshots) closeWhatNotInList(l []string) { }) } -func (s *RoSnapshots) removeOverlaps() error { +func (s *RoSnapshots) removeOverlapsAfterMerge() error { s.lockSegments() defer s.unlockSegments() @@ -1260,8 +1260,6 @@ func (br *BlockRetire) retireBlocks(ctx context.Context, minBlockNum uint64, max return ok, fmt.Errorf("DumpBlocks: %w", err) } - snapshots.removeOverlaps() - if err := snapshots.ReopenFolder(); err != nil { return ok, fmt.Errorf("reopen: %w", err) } @@ -1297,6 +1295,10 @@ func (br *BlockRetire) retireBlocks(ctx context.Context, minBlockNum uint64, max return ok, err } + if err := snapshots.removeOverlapsAfterMerge(); err != nil { + return ok, err + } + return ok, nil } diff --git a/turbo/snapshotsync/freezeblocks/block_snapshots_test.go b/turbo/snapshotsync/freezeblocks/block_snapshots_test.go index 9eae5a710c3..a6d6a9f6528 100644 --- a/turbo/snapshotsync/freezeblocks/block_snapshots_test.go +++ b/turbo/snapshotsync/freezeblocks/block_snapshots_test.go @@ -240,7 +240,7 @@ func TestRemoveOverlaps(t *testing.T) { require.NoError(err) require.Equal(45, len(list)) - s.removeOverlaps() + s.removeOverlapsAfterMerge() list, err = snaptype.Segments(s.dir) require.NoError(err) diff --git a/turbo/snapshotsync/freezeblocks/bor_snapshots.go b/turbo/snapshotsync/freezeblocks/bor_snapshots.go index c0cf858d15b..3d0a66fccc2 100644 --- a/turbo/snapshotsync/freezeblocks/bor_snapshots.go +++ b/turbo/snapshotsync/freezeblocks/bor_snapshots.go @@ -102,10 +102,21 @@ func (br *BlockRetire) retireBorBlocks(ctx context.Context, minBlockNum uint64, } err := merger.Merge(ctx, &snapshots.RoSnapshots, borsnaptype.BorSnapshotTypes, rangesToMerge, snapshots.Dir(), true /* doIndex */, onMerge, onDelete) - if err != nil { return blocksRetired, err } + + { + files, _, err := typedSegments(br.borSnapshots().dir, br.borSnapshots().segmentsMin.Load(), borsnaptype.BorSnapshotTypes, false) + if err != nil { + return blocksRetired, err + } + + // this is one off code to fix an issue in 2.49.x->2.52.x which missed + // removal of intermediate segments after a merge operation + removeBorOverlapsAfterMerge(br.borSnapshots().dir, files, br.borSnapshots().BlocksAvailable()) + } + return blocksRetired, nil } @@ -138,7 +149,7 @@ func (s *BorRoSnapshots) Ranges() []Range { // this is one off code to fix an issue in 2.49.x->2.52.x which missed // removal of intermediate segments after a merge operation -func removeBorOverlaps(dir string, active []snaptype.FileInfo, max uint64) { +func removeBorOverlapsAfterMerge(dir string, active []snaptype.FileInfo, max uint64) { list, err := snaptype.Segments(dir) if err != nil { @@ -204,10 +215,6 @@ func (s *BorRoSnapshots) ReopenFolder() error { return err } - // this is one off code to fix an issue in 2.49.x->2.52.x which missed - // removal of intermediate segments after a merge operation - removeBorOverlaps(s.dir, files, s.BlocksAvailable()) - list := make([]string, 0, len(files)) for _, f := range files { _, fName := filepath.Split(f.Path) From aab8c1c4a0e908ae622070c8f278ebebbf0b015b Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Tue, 28 May 2024 07:09:43 +0700 Subject: [PATCH 2/3] save --- turbo/snapshotsync/freezeblocks/block_snapshots.go | 1 - 1 file changed, 1 deletion(-) diff --git a/turbo/snapshotsync/freezeblocks/block_snapshots.go b/turbo/snapshotsync/freezeblocks/block_snapshots.go index 072fc164884..b4d298236e6 100644 --- a/turbo/snapshotsync/freezeblocks/block_snapshots.go +++ b/turbo/snapshotsync/freezeblocks/block_snapshots.go @@ -1298,7 +1298,6 @@ func (br *BlockRetire) retireBlocks(ctx context.Context, minBlockNum uint64, max if err := snapshots.removeOverlapsAfterMerge(); err != nil { return ok, err } - return ok, nil } From fcc99c9e610f159a71b52ae44a01902d2ae6f0d5 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Tue, 28 May 2024 07:18:46 +0700 Subject: [PATCH 3/3] save --- turbo/snapshotsync/freezeblocks/bor_snapshots.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/turbo/snapshotsync/freezeblocks/bor_snapshots.go b/turbo/snapshotsync/freezeblocks/bor_snapshots.go index aed5780d513..e29e476ae96 100644 --- a/turbo/snapshotsync/freezeblocks/bor_snapshots.go +++ b/turbo/snapshotsync/freezeblocks/bor_snapshots.go @@ -101,14 +101,13 @@ func (br *BlockRetire) retireBorBlocks(ctx context.Context, minBlockNum uint64, return nil } - err := merger.Merge(ctx, &snapshots.RoSnapshots, borsnaptype.BorSnapshotTypes(), rangesToMerge, snapshots.Dir(), true /* doIndex */, onMerge, onDelete) if err != nil { return blocksRetired, err } { - files, _, err := typedSegments(br.borSnapshots().dir, br.borSnapshots().segmentsMin.Load(), borsnaptype.BorSnapshotTypes, false) + files, _, err := typedSegments(br.borSnapshots().dir, br.borSnapshots().segmentsMin.Load(), borsnaptype.BorSnapshotTypes(), false) if err != nil { return blocksRetired, err }