Repository navigation
backport: v0.27 bitcoin#28170, bitcoin#29524, bitcoin#28464, bitcoin#28578, bitcoin#28832, bitcoin#28075 - #118
Conversation
b14924d to
74eb079
Compare
This job failed only because the pull request has no milestone set ( 🤖 backportsys, on behalf of the Dash backport pipeline. |
The 'Require a milestone' job failed because the pull request has no milestone ( 🤖 backportsys, on behalf of the Dash backport pipeline. |
This job only checks that the pull request has a milestone set (the MILESTONE variable was empty). No code was built or tested, so nothing in this backport branch caused it. A maintainer needs to set a milestone on the PR; after that a rerun should pass. 🤖 backportsys, on behalf of the Dash backport pipeline. |
27f260a net: remove now unused global 'g_initial_block_download_completed' (furszy) aff7d92 test: add coverage for peerman adaptive connections service flags (furszy) 6ed5360 net: peer manager, dynamically adjust desirable services flag (furszy) 9f36e59 net: move state dependent peer services flags (furszy) f9ac96b net: decouple state independent service flags from desirable ones (furszy) 97df4e3 net: store best block tip time inside PeerManager (furszy) Pull request description: Derived from bitcoin#28120 discussion. By relocating the peer desirable services flags into the peer manager, we allow the connections acceptance process to handle post-IBD potential stalling scenarios. The peer manager will be able to dynamically adjust the services flags based on the node's proximity to the tip (back and forth). Allowing the node to recover from the following post-IBD scenario: Suppose the node has successfully synced the chain, but later experienced dropped connections and remained inactive for a duration longer than the limited peers threshold (the timeframe within which limited peers can provide blocks). In such cases, upon reconnecting to the network, the node might only establish connections with limited peers, filling up all available outbound slots. Resulting in an inability to synchronize the chain (because limited peers will not provide blocks older than the `NODE_NETWORK_LIMITED_MIN_BLOCKS` threshold). ACKs for top commit: achow101: ACK 27f260a vasild: ACK 27f260a naumenkogs: ACK 27f260a mzumsande: Light Code Review ACK 27f260a andrewtoth: ACK 27f260a Tree-SHA512: 07befb9bcd0b60a4e7c45e4429c02e7b6c66244f0910f4b2ad97c9b98258b6f46c914660a717b5ed4ef4814d0dbfae6e18e6559fe9bec7d0fbc2034109200953 Dash adaptations: - src/protocol.h: SeedsServiceFlags() returns NODE_NETWORK only, since Dash has no NODE_WITNESS (matching Dash's old GetDesirableServiceFlags). - src/net_processing.cpp: GetDesirableServiceFlags() returns NODE_NETWORK_LIMITED / NODE_NETWORK without NODE_WITNESS, which Dash lacks. - src/net_processing.cpp: ApproximateBestBlockDepth() declared next to Dash's CanDirectFetch(), which sits earlier in PeerManagerImpl than upstream's; Dash's m_handlers kept. - src/net_processing.cpp: SetBestBlock/HasAllDesirableServiceFlags/GetDesirableServiceFlags added beside Dash's relay, object-request and handler overrides, all kept. - src/net_processing.cpp: UpdatedBlockTip's direct m_best_height assignment and SetServiceFlagsIBDCache call replaced by SetBestBlock(height, block time). - src/init.cpp: tip_info->block_time uses best_block_time; Dash's extra tip_info->block_hash line kept. - src/protocol.cpp: removed the IBD-cache global and the two functions; Dash's MAKE_MSG macro and Dash message types untouched. - src/test/peerman_tests.cpp: builds peerman with Dash's MakePeerManager() test helper, since PeerManager::make needs Dash's masternode/LLMQ/CoinJoin managers. - src/test/peerman_tests.cpp: uses Dash's BlockAssembler(chainstate, node, mempool) and 3-arg ProcessNewBlock (no min_pow_checked); NODE_WITNESS removed from flags. - src/test/peerman_tests.cpp: comment says 2.5 minutes, not 10, for Dash's block spacing; the test math already uses nPowTargetSpacing. Not applicable to Dash (intentionally omitted): - contrib/seeds/README.md: Dash's README builds seeds from the protx list and has no PATTERN_AGENT / GetDesirableServiceFlags paragraph to rename.
… connect to known prev block a1fbde0 p2p: Don't consider blocks mutated if they don't connect to known prev block (Greg Sanders) Pull request description: Followup to bitcoin#29412 to revert some of the behavior change that was likely unintentional. Based on comments from bitcoin#29412 (comment) ACKs for top commit: 0xB10C: utACK a1fbde0 dergoegge: Code review ACK a1fbde0 Sjors: ACK a1fbde0 sr-gi: tACK bitcoin@a1fbde0 Tree-SHA512: be6204c8cc57b271d55c1d02a5c77d03a37738d91cb5ac164f483b0bab3991c24679c5ff02fbaa52bf37ee625874b63f4c9f7b39ad6fd5f3a25386567a0942e4 Dash adaptations: - test/functional/p2p_mutated_blocks.py: drops extra_args '-testactivationheight=segwit@1'; Dash has no segwit deployment and rejects that name - test/functional/p2p_mutated_blocks.py: new check's comment says 'mutation check', not 'unexpected-witness mutation check'; Dash has no witness check Not applicable to Dash (intentionally omitted): - src/net_processing.cpp: Upstream gates the mutation check on a known prev block only to evaluate DEPLOYMENT_SEGWIT; Dash's IsBlockMutated(block) needs no prev block, so the check stays unconditional
df69b22 doc: improve documentation around connection limit maximums (Amiti Uttarwar) adc171e scripted-diff: Rename connection limit variables (Amiti Uttarwar) e9fd9c0 net: add m_max_inbound to connman (Amiti Uttarwar) c25e0e0 net, refactor: move calculations for connection type limits into connman (Amiti Uttarwar) Pull request description: This is joint work with amitiuttarwar. This has the first few commits of bitcoin#28463. It is not strictly a prerequisite for that, but has changes that in our opinion make sense on their own. It improves the handling of maximum numbers for different connection types (that are set during init and don’t change after) by: * moving all calculations into one place, `CConnMan::Init()`. Before, they were dispersed between `Init`, `CConnman::Init` and other parts of `CConnman`, resulting in some duplicated test code. * removing the possibility of having a negative maximum of inbound connections, which is hard to argue about * renaming of variables and doc improvements ACKs for top commit: amitiuttarwar: co-author review ACK df69b22 naumenkogs: ACK df69b22 achow101: ACK df69b22 Tree-SHA512: 913d56136bc1df739978de50db67302f88bac2a9d34748ae96763288d97093e998fc0f94f9b6eff12867712d7e86225af6128f4170bf2b5b8ab76f024870a22c Dash adaptations: - src/init.cpp: -maxconnections help says 'automatic connections' and keeps Dash's '(temporary service connections excluded)' wording - src/init.cpp: still sets connOptions.m_max_outbound_onion, now from the local nMaxConnections because Options::nMaxConnections is gone - src/net.h: keeps Dash-only Options::m_max_outbound_onion and copies it in Init(); its comment now says m_max_automatic_outbound - src/net.cpp: Dash's masternode-aware inbound eviction loop (while nInbound - nVerifiedInboundMasternodes >= ...) now uses m_max_inbound instead of the removed local nMaxInbound - src/net.cpp: Dash-only GetMaxOutboundNodeCount() returns m_max_automatic_outbound because m_max_outbound was renamed
47e5c99 fuzz: add target for `DescriptorScriptPubKeyMan` (brunoerg) 641dddf fuzz: create ConsumeCoins (brunoerg) 2e1833c fuzz: move `MockedDescriptorConverter` to `fuzz/util` (brunoerg) Pull request description: This PR adds fuzz target for `DescriptorScriptPubKeyMan`. Also, moves `MockedDescriptorConverter` to `fuzz/util/descriptor` to be used here and in `descriptor` target. ACKs for top commit: maflcko: lgtm ACK 47e5c99 🏓 dergoegge: ACK 47e5c99 Tree-SHA512: 519acca6d7b7a3a0bfc031441b02d5980b12bfb97198bd1958a83cd815ceb9eb1499a48a3f0a7fe20e5d06d83b89335d987376fc0a014e2106b0bc0e9838dd02 Dash adaptations: - src/Makefile.test_fuzz.include: keeps Dash's test/util/mining.{h,cpp} entries in libtest_fuzz next to the new test/fuzz/util/descriptor.{h,cpp} - src/test/fuzz/descriptor_parse.cpp: removes Dash's 5-key-type MockedDescriptorConverter; keeps Dash's includes (script/standard.h, no util/chaintype.h) and adds test/fuzz/util/descriptor.h - src/test/fuzz/util/descriptor.{h,cpp}: moved converter has no x-only pubkey type (KEY_TYPES_COUNT 5, no IdIsXOnlyPubKey/XOnlyPubKey) because Dash has no taproot; this matches Dash's existing converter - src/wallet/test/fuzz/scriptpubkeyman.cpp: SelectParams(CBaseChainParams::MAIN) instead of ChainType::MAIN, because Dash has no util/chaintype.h - src/wallet/test/fuzz/scriptpubkeyman.cpp: uses CreateMockWalletDatabase() because Dash lacks CreateMockableWalletDatabase (bitcoin#26715) - src/wallet/test/fuzz/scriptpubkeyman.cpp: deserializes CMutableTransaction without TX_WITH_WITNESS, because Dash has no witness serialization - src/wallet/test/fuzz/scriptpubkeyman.cpp: calls GetNewDestination() with no argument (Dash's DescriptorScriptPubKeyMan has no OutputType parameter); keeps upstream's IsSingleType/GetOutputType checks
…riptor parsing targets a44808f fuzz: rule-out too deep derivation paths in descriptor parsing targets (Antoine Poinsot) Pull request description: This fixes the `mocked_descriptor_parse` timeout reported in bitcoin#28812 and direct the targets more toward what they are intended to fuzz: the descriptor syntax. ACKs for top commit: sipa: utACK a44808f achow101: ACK a44808f dergoegge: ACK a44808f - Not running into timeouts anymore TheCharlatan: ACK a44808f Tree-SHA512: a5dd1dbe9adf8f088bdc435addab88b56f435e6d7d2065bd6d5c6d80a32e3f1f97d3d2323131ab233618cd6dcc477c458abe3c4c865ab569449b8bc176231e93
fa3da62 Remove DirIsWritable, GetUniquePath (MarcoFalke) fad3a97 Return LockResult::ErrorWrite in LockDirectory (MarcoFalke) fa0afe7 refactor: Return enum in LockDirectory (MarcoFalke) Pull request description: `GetUniquePath` is only used in tests and in `DirIsWritable`. The check by `DirIsWritable` is redundant with the check done in `LockDirectory`. Fix the redundancy by removing everything, except `LockDirectory`. ACKs for top commit: TheCharlatan: Re-ACK fa3da62 hebasto: ACK fa3da62, I have reviewed the code and it looks OK. Tree-SHA512: e95f18cd586de7582e9c08ac7ddb860bfcfcbc8963804f45c5784c5e4c0598dc59ae7e45dd4daf30a5020dbf8433f5db2ad06e46a8676371982003790043c6c9 Dash adaptations: - src/util/fs_helpers.cpp: the ErrorLock branch keeps Dash's existing LogError(...) call instead of upstream's error(...), then returns LockResult::ErrorLock as upstream does. - src/util/system.cpp: drops the Dash-only leftover #include <util/getuniquepath.h>; that header is deleted and system.cpp uses nothing from it. - ci/dash/lint-tidy.sh: removes the deleted src/util/getuniquepath.cpp from Dash's explicit iwyu file list (upstream already runs iwyu on all files, so it had no list entry).
74eb079 to
ce0c409
Compare
The 'Require a milestone' job failed because the pull request has no milestone set ( 🤖 backportsys, on behalf of the Dash backport pipeline. |
This failure comes from the 'Require a milestone' check, which only looks at whether the pull request has a milestone set (MILESTONE is empty). It does not build or test any code from this branch. Setting a milestone on the PR will clear it; no code change is needed. 🤖 backportsys, on behalf of the Dash backport pipeline. |
This check only fails because no milestone is set on the pull request (MILESTONE is empty in the log). It is PR metadata, not code: the branch doesn't touch .github/ and no commit can fix it. A maintainer needs to set a milestone, then the job should pass on a rerun. 🤖 backportsys, on behalf of the Dash backport pipeline. |
|
merged as dashpay#7940 |
Automated Bitcoin Core v0.27 backports, batch
backport-0.27-b007-misc.aa7b390a84b044676470432a93bc0b38a4000d7a53a9ae040fce0c409cb3Provenance
Each commit passed: cherry-pick (adapted by an Opus lane only where conflicts existed), build, touched tests, a mechanical diff-of-diffs check (every upstream hunk landed; no added line without an upstream counterpart), and an independent Opus verification lane where anything was adapted. Gate rows and lane artifacts are in the backportsys DB.