Merge #16471: [mempool] log correct messages when CPFP fails
42a5e912ee
[mempool] log correct messages when CPFP fails (John Newbery) Pull request description: Fixes a logging issue introduced in #15681 ACKs for top commit: laanwj: ACK42a5e912ee
(+utACK from bluematt that isn't registered because it has no commit id) Tree-SHA512: ff5f423cc4d22838eea00c5b1d39ceda89cd61474c72f256a97c698eb0ec3f2156a97139f537669376132902c1e3943bf84c356a4b98a9a306b4ec57302c2761
This commit is contained in:
commit
68da54987d
2 changed files with 8 additions and 6 deletions
|
@ -618,6 +618,8 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
|
||||||
std::string errString;
|
std::string errString;
|
||||||
if (!pool.CalculateMemPoolAncestors(entry, setAncestors, nLimitAncestors, nLimitAncestorSize, nLimitDescendants, nLimitDescendantSize, errString)) {
|
if (!pool.CalculateMemPoolAncestors(entry, setAncestors, nLimitAncestors, nLimitAncestorSize, nLimitDescendants, nLimitDescendantSize, errString)) {
|
||||||
setAncestors.clear();
|
setAncestors.clear();
|
||||||
|
// If CalculateMemPoolAncestors fails second time, we want the original error string.
|
||||||
|
std::string dummy_err_string;
|
||||||
// If the new transaction is relatively small (up to 40k weight)
|
// If the new transaction is relatively small (up to 40k weight)
|
||||||
// and has at most one ancestor (ie ancestor limit of 2, including
|
// and has at most one ancestor (ie ancestor limit of 2, including
|
||||||
// the new transaction), allow it if its parent has exactly the
|
// the new transaction), allow it if its parent has exactly the
|
||||||
|
@ -629,7 +631,7 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
|
||||||
// outputs - one for each counterparty. For more info on the uses for
|
// outputs - one for each counterparty. For more info on the uses for
|
||||||
// this, see https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html
|
// this, see https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html
|
||||||
if (nSize > EXTRA_DESCENDANT_TX_SIZE_LIMIT ||
|
if (nSize > EXTRA_DESCENDANT_TX_SIZE_LIMIT ||
|
||||||
!pool.CalculateMemPoolAncestors(entry, setAncestors, 2, nLimitAncestorSize, nLimitDescendants + 1, nLimitDescendantSize + EXTRA_DESCENDANT_TX_SIZE_LIMIT, errString)) {
|
!pool.CalculateMemPoolAncestors(entry, setAncestors, 2, nLimitAncestorSize, nLimitDescendants + 1, nLimitDescendantSize + EXTRA_DESCENDANT_TX_SIZE_LIMIT, dummy_err_string)) {
|
||||||
return state.Invalid(ValidationInvalidReason::TX_MEMPOOL_POLICY, false, REJECT_NONSTANDARD, "too-long-mempool-chain", errString);
|
return state.Invalid(ValidationInvalidReason::TX_MEMPOOL_POLICY, false, REJECT_NONSTANDARD, "too-long-mempool-chain", errString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,14 +66,14 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
assert_equal(len(self.nodes[0].getrawmempool(True)), MAX_ANCESTORS + 1)
|
assert_equal(len(self.nodes[0].getrawmempool(True)), MAX_ANCESTORS + 1)
|
||||||
|
|
||||||
# Adding one more transaction on to the chain should fail.
|
# Adding one more transaction on to the chain should fail.
|
||||||
assert_raises_rpc_error(-26, "too-long-mempool-chain", self.chain_transaction, self.nodes[0], [txid], [0], value, fee, 1)
|
assert_raises_rpc_error(-26, "too-long-mempool-chain, too many unconfirmed ancestors [limit: 25]", self.chain_transaction, self.nodes[0], [txid], [0], value, fee, 1)
|
||||||
# ...even if it chains on from some point in the middle of the chain.
|
# ...even if it chains on from some point in the middle of the chain.
|
||||||
assert_raises_rpc_error(-26, "too-long-mempool-chain", self.chain_transaction, self.nodes[0], [chain[2][0]], [1], chain[2][1], fee, 1)
|
assert_raises_rpc_error(-26, "too-long-mempool-chain, too many descendants", self.chain_transaction, self.nodes[0], [chain[2][0]], [1], chain[2][1], fee, 1)
|
||||||
assert_raises_rpc_error(-26, "too-long-mempool-chain", self.chain_transaction, self.nodes[0], [chain[1][0]], [1], chain[1][1], fee, 1)
|
assert_raises_rpc_error(-26, "too-long-mempool-chain, too many descendants", self.chain_transaction, self.nodes[0], [chain[1][0]], [1], chain[1][1], fee, 1)
|
||||||
# ...even if it chains on to two parent transactions with one in the chain.
|
# ...even if it chains on to two parent transactions with one in the chain.
|
||||||
assert_raises_rpc_error(-26, "too-long-mempool-chain", self.chain_transaction, self.nodes[0], [chain[0][0], second_chain], [1, 0], chain[0][1] + second_chain_value, fee, 1)
|
assert_raises_rpc_error(-26, "too-long-mempool-chain, too many descendants", self.chain_transaction, self.nodes[0], [chain[0][0], second_chain], [1, 0], chain[0][1] + second_chain_value, fee, 1)
|
||||||
# ...especially if its > 40k weight
|
# ...especially if its > 40k weight
|
||||||
assert_raises_rpc_error(-26, "too-long-mempool-chain", self.chain_transaction, self.nodes[0], [chain[0][0]], [1], chain[0][1], fee, 350)
|
assert_raises_rpc_error(-26, "too-long-mempool-chain, too many descendants", self.chain_transaction, self.nodes[0], [chain[0][0]], [1], chain[0][1], fee, 350)
|
||||||
# But not if it chains directly off the first transaction
|
# But not if it chains directly off the first transaction
|
||||||
self.chain_transaction(self.nodes[0], [chain[0][0]], [1], chain[0][1], fee, 1)
|
self.chain_transaction(self.nodes[0], [chain[0][0]], [1], chain[0][1], fee, 1)
|
||||||
# and the second chain should work just fine
|
# and the second chain should work just fine
|
||||||
|
|
Loading…
Reference in a new issue