Skip to content

backport: Merge bitcoin/bitcoin#27297, partial #30006, #26749 - #7565

Merged
PastaPastaPasta merged 3 commits into
dashpay:developfrom
PastaPastaPasta:backport-27297-30006-26749
Aug 9, 2026
Merged

backport: Merge bitcoin/bitcoin#27297, partial #30006, #26749#7565
PastaPastaPasta merged 3 commits into
dashpay:developfrom
PastaPastaPasta:backport-27297-30006-26749

Conversation

@PastaPastaPasta

Copy link
Copy Markdown
Member

Issue being fixed or feature implemented

Backports from Bitcoin Core. Re-creates #7389 with review feedback applied (marking bitcoin#30006 as a partial backport).

What was done?

Backports the following Bitcoin Core pull requests:

How Has This Been Tested?

  • Ran src/test/test_dash --run_test=checkqueue_tests (passed)
  • Ran full unit test suite src/test/test_dash (passed)
  • Ran functional test test/functional/feature_init.py (passed)
  • Ran static linters test/lint/all-lint.py (passed)

Breaking Changes

None

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone

fanquake and others added 3 commits August 9, 2026 12:05
fae3490 test: Remove unused Check* default constructors (MarcoFalke)

Pull request description:

  They are no longer needed after the removal of `swap`, see bitcoin#26749 (comment)

  Also, flatten a redundant `if` check.

ACKs for top commit:
  hebasto:
    ACK fae3490

Tree-SHA512: c0bc0c16b5df0f16fc25e18d2414a2a3c4769da1aa30d53f8d267bc2e97dd79a0296db94c1e49cd1ca89bd42275d8c462f7bf47f03f105dfe867ebea6563454b
… readonly

BACKPORT NOTE:
feature_reindex_readonly.py does not exist in Dash Core.

fd6a7d3 test: use sleepy wait-for-log in reindex readonly (Matthew Zipkin)

Pull request description:

  Also rename the busy wait-for-log method to prevent recurrence. See bitcoin#27039 (comment)

ACKs for top commit:
  maflcko:
    utACK fd6a7d3
  achow101:
    ACK fd6a7d3
  tdb3:
    ACK for fd6a7d3
  rkrux:
    ACK [fd6a7d3](bitcoin@fd6a7d3)
…wap functions

95ad70a test: Default initialize `should_freeze` to `true` (Hennadii Stepanov)
cea5052 refactor: Drop no longer used `swap` member functions (Hennadii Stepanov)
a87fb6b clang-tidy: Fix modernize-use-default-member-init in `CScriptCheck` (Hennadii Stepanov)
b4bed5c refactor: Drop no longer used `CScriptCheck()` default constructor (Hennadii Stepanov)
d8427cc refactor: Use move semantics in `CCheckQueue::Loop` (Hennadii Stepanov)
9a0b524 clang-tidy, test: Fix bugprone-use-after-move in `Correct_Queue_range()` (Hennadii Stepanov)
04831fe refactor: Make move semantics explicit for callers (Hennadii Stepanov)
6c2d597 refactor: Use move semantics in `CCheckQueue::Add` (Hennadii Stepanov)
0682003 test, refactor: Avoid `CScriptCheck::swap` in `transaction_tests` (Hennadii Stepanov)
15209d9 consensus, refactor: Avoid `CScriptCheck::swap` in `CheckInputScripts` (Hennadii Stepanov)

Pull request description:

  This PR makes code more succinct and readable by using move semantics.

ACKs for top commit:
  martinus:
    re-ACK 95ad70a
  achow101:
    ACK 95ad70a
  TheCharlatan:
    re-ACK bitcoin@95ad70a
  MarcoFalke:
    re-ACK 95ad70a 🚥

Tree-SHA512: adda760891b12d252dc9b823fe7c41eed660364b6fb1a69f17607d7a31eb0bbb82a80d154a7acfaa241b5de37d42a293c2b6e059f26a8e92d88d3a87c99768fb
@thepastaclaw

thepastaclaw commented Aug 9, 2026

Copy link
Copy Markdown

🕓 Ready for review — 2 ahead in queue (commit 8531f57)
Queue position: 3/3
ETA: start ~17:43 UTC · complete ~17:56 UTC (median 13m across 30 recent reviews; 2 slots)
Queued 14m ago · Last checked: 2026-08-09 17:30 UTC

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 16cd8e16-6989-4326-b12b-25d7413b094d

📥 Commits

Reviewing files that changed from the base of the PR and between 872503e and 8531f57.

📒 Files selected for processing (9)
  • src/bench/checkqueue.cpp
  • src/checkqueue.h
  • src/llmq/commitment.cpp
  • src/test/checkqueue_tests.cpp
  • src/test/fuzz/checkqueue.cpp
  • src/validation.cpp
  • src/validation.h
  • test/functional/feature_init.py
  • test/functional/test_framework/test_node.py

Walkthrough

The check queue APIs now accept rvalue vectors and move elements into queue storage and worker batches. CScriptCheck and related queue jobs use explicit move operations instead of custom swap methods. Validation, LLMQ, benchmark, unit-test, and fuzz call sites now move submitted batches. The functional test framework renames wait_for_debug_log to busy_wait_for_debug_log.

Estimated code review effort: 2 (Simple) | ~15 minutes

Suggested reviewers: udjinm6

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the three Bitcoin Core backports that account for the main changes.
Description check ✅ Passed The description accurately summarizes the backports, affected areas, and completed testing.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8531f575d1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


@contextlib.contextmanager
def wait_for_debug_log(self, expected_msgs, timeout=60):
def busy_wait_for_debug_log(self, expected_msgs, timeout=60):

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Update the remaining caller after renaming the log waiter

When the default functional suite runs rpc_coinjoin.py, test_newkeypool_stops_mixing() still calls TestNode.wait_for_debug_log(), but this rename removes that method and a repo-wide search finds no alias or replacement, so the test deterministically raises AttributeError before starting CoinJoin. Update that Dash-specific caller to use busy_wait_for_debug_log() as well.

AGENTS.md reference: AGENTS.md:L15-L17

Useful? React with 👍 / 👎.

Comment thread src/llmq/commitment.cpp
std::vector<utils::BlsCheck> vChecks;
vChecks.emplace_back(membersSig, memberPubKeys, commitmentHash, members_id_string);
queue_control->Add(vChecks);
queue_control->Add(std::move(vChecks));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add move operations for the Dash BLS queue item

When a non-null multi-member LLMQ commitment is queued here, std::move(vChecks) does not actually move its BlsCheck elements: BlsCheck declares a destructor but no move constructor or assignment operator, so the rvalue is handled by its implicit copy operations. Consequently both CCheckQueue::Add() and Loop() copy the signature, string, and as many as 400 public keys while holding the queue mutex, replacing the previous constant-time swaps with serialized deep copies; declare explicit move operations for this Dash-specific check type.

AGENTS.md reference: AGENTS.md:L15-L17

Useful? React with 👍 / 👎.

@PastaPastaPasta PastaPastaPasta left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as prior pr; just renamed commits; merging

@PastaPastaPasta
PastaPastaPasta merged commit 3c85d5b into dashpay:develop Aug 9, 2026
32 of 34 checks passed
@PastaPastaPasta
PastaPastaPasta deleted the backport-27297-30006-26749 branch August 9, 2026 17:31
@UdjinM6 UdjinM6 added this to the 24 milestone Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants