HomePhabricator

[validation] return MempoolAcceptResult for every tx on PCKG_TX failure

Description

[validation] return MempoolAcceptResult for every tx on PCKG_TX failure

Summary:

This makes the interface more predictable and useful. The caller
understands one or more transactions failed, and can learn what happened
with each transaction. We already have this information, so we might as
well return it.

It doesn't make sense to do this for other PackageValidationResult
values because:
- PCKG_RESULT_UNSET: this means everything succeeded, so the individual
  failures are no longer accurate.
- PCKG_MEMPOOL_ERROR: something went wrong with the mempool logic;
  transaction failures might not be meaningful.
- PCKG_POLICY: this means something was wrong with the package as a
  whole. The caller should use the PackageValidationState to find the
  error, rather than looking at individual MempoolAcceptResults.

Completes backport of core#26646:
https://github.com/bitcoin/bitcoin/pull/26646/commits/264f9ef17f650035882d24083fb419845942a3ac

Depends on D16402.

Test Plan:

ninja all check-all

Reviewers: #bitcoin_abc, PiRK

Reviewed By: #bitcoin_abc, PiRK

Differential Revision: https://reviews.bitcoinabc.org/D16403

Details

Provenance
glozow <gloriajzhao@gmail.com>Authored on Dec 5 2022, 14:55
FabienCommitted on Tue, Jul 2, 11:28
FabienPushed on Tue, Jul 2, 11:28
Reviewer
Restricted Project
Differential Revision
D16403: [validation] return MempoolAcceptResult for every tx on PCKG_TX failure
Parents
rABC6ebe34ae931b: [refactor] rename variables in AcceptPackage for clarity
Branches
Unknown
Tags
Unknown