From e37c10db7c999b756d41e2af2e53f5844cf39515 Mon Sep 17 00:00:00 2001 From: Ahmad Bitar <33181301+smartprogrammer93@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:38:32 +0300 Subject: [PATCH] Increase tolerance for default barrier again (#6550) --- .../FastBlocks/BodiesSyncFeedTests.cs | 61 +++++++++--------- .../FastBlocks/ReceiptsSyncFeedTests.cs | 64 +++++++++---------- .../ParallelSync/SyncDispatcherTests.cs | 11 +--- .../FastBlocks/BarrierSyncFeed.cs | 3 +- 4 files changed, 66 insertions(+), 73 deletions(-) diff --git a/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/BodiesSyncFeedTests.cs b/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/BodiesSyncFeedTests.cs index 3692d6f82a9..6804ac76f33 100644 --- a/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/BodiesSyncFeedTests.cs +++ b/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/BodiesSyncFeedTests.cs @@ -140,45 +140,46 @@ public async Task ShouldRecoverOnInsertFailure() req.Infos[0]!.BlockNumber.Should().Be(95); } - [TestCase(99, false, null, false)] - [TestCase(11051474, false, null, true)] - [TestCase(11052984, false, null, true)] - [TestCase(11052985, false, null, false)] - [TestCase(99, false, 11052984, false)] - [TestCase(11051474, false, 11052984, true)] - [TestCase(11052984, false, 11052984, true)] - [TestCase(11052985, false, 11052984, false)] - [TestCase(99, true, null, false)] - [TestCase(11051474, true, null, false)] - [TestCase(11052984, true, null, false)] - [TestCase(11052985, true, null, false)] - [TestCase(99, false, 0, false)] - [TestCase(11051474, false, 0, false)] - [TestCase(11052984, false, 0, false)] - [TestCase(11052985, false, 0, false)] - public async Task When_finished_sync_with_old_default_barrier_then_finishes_imedietely( - long? lowestInsertedBlockNumber, + [TestCase(1, 99, false, null, false)] + [TestCase(1, 11051474, false, null, true)] + [TestCase(1, 11052984, false, null, true)] + [TestCase(1, 11052985, false, null, false)] + [TestCase(11051474, 11052984, false, null, false)] + [TestCase(11051474, 11051474, false, null, true)] + [TestCase(1, 99, false, 11052984, false)] + [TestCase(1, 11051474, false, 11052984, true)] + [TestCase(1, 11052984, false, 11052984, true)] + [TestCase(1, 11052985, false, 11052984, false)] + [TestCase(11051474, 11052984, false, 11052984, false)] + [TestCase(11051474, 11051474, false, 11052984, true)] + [TestCase(1, 99, true, null, false)] + [TestCase(1, 11051474, true, null, false)] + [TestCase(1, 11052984, true, null, false)] + [TestCase(1, 11052985, true, null, false)] + [TestCase(11051474, 11052984, true, null, false)] + [TestCase(11051474, 11051474, true, null, true)] + [TestCase(1, 99, false, 0, false)] + [TestCase(1, 11051474, false, 0, false)] + [TestCase(1, 11052984, false, 0, false)] + [TestCase(1, 11052985, false, 0, false)] + [TestCase(11051474, 11052984, false, 0, false)] + [TestCase(11051474, 11051474, false, 0, true)] + public void When_finished_sync_with_old_default_barrier_then_finishes_imedietely( + long AncientBarrierInConfig, + long lowestInsertedBlockNumber, bool JustStarted, long? previousBarrierInDb, bool shouldfinish) { - _syncConfig.AncientReceiptsBarrier = 0; + _syncConfig.AncientBodiesBarrier = AncientBarrierInConfig; + _syncConfig.AncientReceiptsBarrier = AncientBarrierInConfig; + _syncConfig.PivotNumber = (AncientBarrierInConfig + 1_000_000).ToString(); _syncingToBlockTree.LowestInsertedBodyNumber = JustStarted ? null : _pivotBlock.Number; if (previousBarrierInDb != null) _metadataDb.Set(MetadataDbKeys.BodiesBarrierWhenStarted, previousBarrierInDb.Value.ToBigEndianByteArrayWithoutLeadingZeros()); _feed.InitializeFeed(); _syncingToBlockTree.LowestInsertedBodyNumber = lowestInsertedBlockNumber; - BodiesSyncBatch? request = await _feed.PrepareRequest(); - if (shouldfinish) - { - request.Should().BeNull(); - _feed.CurrentState.Should().Be(SyncFeedState.Finished); - } - else - { - request.Should().NotBeNull(); - _feed.CurrentState.Should().NotBe(SyncFeedState.Finished); - } + _feed.IsFinished.Should().Be(shouldfinish); } } diff --git a/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/ReceiptsSyncFeedTests.cs b/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/ReceiptsSyncFeedTests.cs index 13d09b7d093..8bb5787e996 100644 --- a/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/ReceiptsSyncFeedTests.cs +++ b/src/Nethermind/Nethermind.Synchronization.Test/FastBlocks/ReceiptsSyncFeedTests.cs @@ -75,7 +75,7 @@ public Scenario(ISpecProvider specProvider, int nonEmptyBlocks, int txPerBlock, private IBlockTree _blockTree = null!; private IDb _metadataDb = null!; - private static readonly long _pivotNumber = 1024; + private static long _pivotNumber = 1024; private static readonly Scenario _1024BodiesWithOneTxEach; private static readonly Scenario _256BodiesWithOneTxEach; @@ -240,48 +240,46 @@ public async Task When_configured_to_skip_receipts_then_finishes_immediately() _measuredProgressQueue.HasEnded.Should().BeTrue(); } - [TestCase(1024, false, null, false)] - [TestCase(11051474, false, null, true)] - [TestCase(11052984, false, null, true)] - [TestCase(11052985, false, null, false)] - [TestCase(1024, false, 11052984, false)] - [TestCase(11051474, false, 11052984, true)] - [TestCase(11052984, false, 11052984, true)] - [TestCase(11052985, false, 11052984, false)] - [TestCase(1024, true, null, false)] - [TestCase(11051474, true, null, false)] - [TestCase(11052984, true, null, false)] - [TestCase(11052985, true, null, false)] - [TestCase(1024, false, 0, false)] - [TestCase(11051474, false, 0, false)] - [TestCase(11052984, false, 0, false)] - [TestCase(11052985, false, 0, false)] - public async Task When_finished_sync_with_old_default_barrier_then_finishes_imedietely( + [TestCase(1, 1024, false, null, false)] + [TestCase(1, 11051474, false, null, true)] + [TestCase(1, 11052984, false, null, true)] + [TestCase(11051474, 11052984, false, null, false)] + [TestCase(11051474, 11051474, false, null, true)] + [TestCase(1, 11052985, false, null, false)] + [TestCase(1, 1024, false, 11052984, false)] + [TestCase(1, 11051474, false, 11052984, true)] + [TestCase(1, 11052984, false, 11052984, true)] + [TestCase(11051474, 11052984, false, 11052984, false)] + [TestCase(11051474, 11051474, false, 11052984, true)] + [TestCase(1, 11052985, false, 11052984, false)] + [TestCase(1, 1024, true, null, false)] + [TestCase(1, 11051474, true, null, false)] + [TestCase(1, 11052984, true, null, false)] + [TestCase(11051474, 11052984, true, null, false)] + [TestCase(11051474, 11051474, true, null, true)] + [TestCase(1, 11052985, true, null, false)] + [TestCase(1, 1024, false, 0, false)] + [TestCase(1, 11051474, false, 0, false)] + [TestCase(1, 11052984, false, 0, false)] + [TestCase(11051474, 11052984, false, 0, false)] + [TestCase(11051474, 11051474, false, 0, true)] + [TestCase(1, 11052985, false, 0, false)] + public void When_finished_sync_with_old_default_barrier_then_finishes_imedietely( + long AncientBarrierInConfig, long? lowestInsertedReceiptBlockNumber, bool JustStarted, long? previousBarrierInDb, bool shouldfinish) { - _syncConfig.AncientReceiptsBarrier = 0; + _syncConfig.AncientBodiesBarrier = AncientBarrierInConfig; + _syncConfig.AncientReceiptsBarrier = AncientBarrierInConfig; + _pivotNumber = AncientBarrierInConfig + 1_000_000; _receiptStorage.HasBlock(Arg.Is(_pivotNumber), Arg.Any()).Returns(!JustStarted); if (previousBarrierInDb != null) _metadataDb.Set(MetadataDbKeys.ReceiptsBarrierWhenStarted, previousBarrierInDb.Value.ToBigEndianByteArrayWithoutLeadingZeros()); LoadScenario(_256BodiesWithOneTxEach); _receiptStorage.LowestInsertedReceiptBlockNumber.Returns(lowestInsertedReceiptBlockNumber); - - ReceiptsSyncBatch? request = await _feed.PrepareRequest(); - if (shouldfinish) - { - request.Should().BeNull(); - _feed.CurrentState.Should().Be(SyncFeedState.Finished); - } - else - { - request.Should().NotBeNull(); - _feed.CurrentState.Should().NotBe(SyncFeedState.Finished); - } - _measuredProgress.HasEnded.Should().Be(shouldfinish); - _measuredProgressQueue.HasEnded.Should().Be(shouldfinish); + _feed.IsFinished.Should().Be(shouldfinish); } private void LoadScenario(Scenario scenario) diff --git a/src/Nethermind/Nethermind.Synchronization.Test/ParallelSync/SyncDispatcherTests.cs b/src/Nethermind/Nethermind.Synchronization.Test/ParallelSync/SyncDispatcherTests.cs index 8e95227a9ee..1a66ea46787 100644 --- a/src/Nethermind/Nethermind.Synchronization.Test/ParallelSync/SyncDispatcherTests.cs +++ b/src/Nethermind/Nethermind.Synchronization.Test/ParallelSync/SyncDispatcherTests.cs @@ -139,7 +139,6 @@ public async Task Dispatch(PeerInfo peerInfo, TestBatch request, CancellationTok } await Task.CompletedTask; - Console.WriteLine("Setting result"); int[] result = new int[request.Length]; for (int i = 0; i < request.Length; i++) { @@ -147,7 +146,6 @@ public async Task Dispatch(PeerInfo peerInfo, TestBatch request, CancellationTok } request.Result = result; - Console.WriteLine("Finished Execution"); } } @@ -181,12 +179,10 @@ public override SyncResponseHandlingResult HandleResponse(TestBatch response, Pe _responseLock.WaitOne(); if (response.Result is null) { - Console.WriteLine("Handling failed response"); _returned.Enqueue(response); } else { - Console.WriteLine("Handling OK response"); for (int i = 0; i < response.Length; i++) { lock (_results) @@ -196,7 +192,7 @@ public override SyncResponseHandlingResult HandleResponse(TestBatch response, Pe } } - Console.WriteLine($"Decrementing Pending Requests {Interlocked.Decrement(ref _pendingRequests)}"); + Interlocked.Decrement(ref _pendingRequests); return SyncResponseHandlingResult.OK; } @@ -215,7 +211,6 @@ public override async Task PrepareRequest(CancellationToken token = d TestBatch testBatch; if (_returned.TryDequeue(out TestBatch? returned)) { - Console.WriteLine("Sending previously failed batch"); testBatch = returned; } else @@ -226,10 +221,8 @@ public override async Task PrepareRequest(CancellationToken token = d if (HighestRequested >= Max) { - Console.WriteLine("Pending: " + _pendingRequests); if (_pendingRequests == 0) { - Console.WriteLine("Changing to finished"); Finish(); } @@ -245,7 +238,7 @@ public override async Task PrepareRequest(CancellationToken token = d testBatch = new TestBatch(start, 8); } - Console.WriteLine($"Incrementing Pending Requests {Interlocked.Increment(ref _pendingRequests)}"); + Interlocked.Increment(ref _pendingRequests); return testBatch; } } diff --git a/src/Nethermind/Nethermind.Synchronization/FastBlocks/BarrierSyncFeed.cs b/src/Nethermind/Nethermind.Synchronization/FastBlocks/BarrierSyncFeed.cs index c4c9b0061c6..923a1c6afc1 100644 --- a/src/Nethermind/Nethermind.Synchronization/FastBlocks/BarrierSyncFeed.cs +++ b/src/Nethermind/Nethermind.Synchronization/FastBlocks/BarrierSyncFeed.cs @@ -15,7 +15,7 @@ namespace Nethermind.Synchronization.FastBlocks; public abstract class BarrierSyncFeed : ActivatedSyncFeed { internal const int DepositContractBarrier = 11052984; - internal const int OldBarrierDefaultExtraRange = 8192; + internal const int OldBarrierDefaultExtraRange = 64_000; protected abstract long? LowestInsertedNumber { get; } protected abstract int BarrierWhenStartedMetadataDbKey { get; } @@ -32,6 +32,7 @@ public abstract class BarrierSyncFeed : ActivatedSyncFeed // This property was introduced when we switched defaults of barriers on mainnet from 11052984 to 0 to not disturb existing node operators protected bool WithinOldBarrierDefault => _specProvider.ChainId == BlockchainIds.Mainnet + && _barrier == 1 && _barrierWhenStarted == DepositContractBarrier && LowestInsertedNumber <= DepositContractBarrier && LowestInsertedNumber > DepositContractBarrier - OldBarrierDefaultExtraRange; // this is intentional. this is a magic number as to the amount of possible blocks that had been synced. We noticed on previous versions that the client synced a bit below the default barrier by more than just the GethRequest limit (128).