From 9a24908f4da1c1f097ff05dc7df1960ed9df602c Mon Sep 17 00:00:00 2001 From: Eric Voskuil Date: Fri, 11 Sep 2026 19:31:37 -0400 Subject: [PATCH 1/2] Drop staged batch rows when batching will not run. --- .../bitcoin/node/chasers/chaser_validate.hpp | 1 + src/chasers/chaser_validate_batch.cpp | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/bitcoin/node/chasers/chaser_validate.hpp b/include/bitcoin/node/chasers/chaser_validate.hpp index 3def662d..e2d76eb8 100644 --- a/include/bitcoin/node/chasers/chaser_validate.hpp +++ b/include/bitcoin/node/chasers/chaser_validate.hpp @@ -83,6 +83,7 @@ class BCN_API chaser_validate virtual code start_batch() NOEXCEPT; virtual void process_batch(bool residual) NOEXCEPT; virtual code do_process_batch(bool startup) NOEXCEPT; + virtual code purge_batch() NOEXCEPT; virtual bool mark_valids(header_links& prevalids, bool startup) NOEXCEPT; virtual bool mark_invalids(header_links& prevalids, const header_links& invalids, bool startup) NOEXCEPT; diff --git a/src/chasers/chaser_validate_batch.cpp b/src/chasers/chaser_validate_batch.cpp index 9bd017a7..46bdd022 100644 --- a/src/chasers/chaser_validate_batch.cpp +++ b/src/chasers/chaser_validate_batch.cpp @@ -39,15 +39,19 @@ BC_PUSH_WARNING(NO_THROW_IN_NOEXCEPT) code chaser_validate::start_batch() NOEXCEPT { - if (!batch_enabled_) - return {}; - - const auto& query = archive(); + auto& query = archive(); if (is_zero(query.prevalid_records()) && is_zero(query.ecdsa_records()) && is_zero(query.schnorr_records())) return {}; + // Prevalid is not a validation state, so dropped blocks validate in place. + if (!batch_enabled_) + { + LOGN("Dropping staged batch rows (" << query.prevalid_records() << ")."); + return purge_batch(); + } + return do_process_batch(true); } @@ -157,6 +161,13 @@ code chaser_validate::do_process_batch(bool startup) NOEXCEPT if (!mark_valids(prevalids, startup)) return error::batch3; + return purge_batch(); +} + +code chaser_validate::purge_batch() NOEXCEPT +{ + auto& query = archive(); + // Purge prevalids before signatures. return query.purge_prevalids() && query.purge_ecdsa_signatures() && From 984272e0fd2bb94f838b9135603a98da25f131dd Mon Sep 17 00:00:00 2001 From: Eric Voskuil Date: Fri, 11 Sep 2026 23:33:10 -0400 Subject: [PATCH 2/2] Remove the dirty page warning settings. --- include/bitcoin/node/settings.hpp | 2 -- src/settings.cpp | 4 +--- test/settings.cpp | 2 -- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/include/bitcoin/node/settings.hpp b/include/bitcoin/node/settings.hpp index 6d352c6f..cd0d7682 100644 --- a/include/bitcoin/node/settings.hpp +++ b/include/bitcoin/node/settings.hpp @@ -57,8 +57,6 @@ class BCN_API settings uint32_t silent_start_height; uint16_t sample_period_seconds; uint32_t currency_window_minutes; - uint16_t warn_dirty_background_ratio; - uint16_t warn_dirty_ratio; ////uint64_t snapshot_bytes; ////uint32_t snapshot_valid; ////uint32_t snapshot_confirm; diff --git a/src/settings.cpp b/src/settings.cpp index 668f13c6..e0748e5c 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -54,9 +54,7 @@ settings::settings() NOEXCEPT silent_start_height{ 0xffffffff_u32 }, maximum_concurrency{ 50'000 }, sample_period_seconds{ 10 }, - currency_window_minutes{ 1440 }, - warn_dirty_background_ratio{ 90_u16 }, - warn_dirty_ratio{ 90_u16 } + currency_window_minutes{ 1440 } { } diff --git a/test/settings.cpp b/test/settings.cpp index 483c01a0..c4c6a4a0 100644 --- a/test/settings.cpp +++ b/test/settings.cpp @@ -55,8 +55,6 @@ BOOST_AUTO_TEST_CASE(settings__node__default_context__expected) BOOST_REQUIRE_EQUAL(node.maximum_concurrency_(), 50000_size); BOOST_REQUIRE_EQUAL(node.sample_period_seconds, 10_u16); BOOST_REQUIRE_EQUAL(node.currency_window_minutes, 1440_u32); - BOOST_REQUIRE_EQUAL(node.warn_dirty_background_ratio, 90_u16); - BOOST_REQUIRE_EQUAL(node.warn_dirty_ratio, 90_u16); ////BOOST_REQUIRE_EQUAL(node.snapshot_bytes, 200'000'000'000_u64); ////BOOST_REQUIRE_EQUAL(node.snapshot_valid, 250'000_u32); ////BOOST_REQUIRE_EQUAL(node.snapshot_confirm, 500'000_u32);