[txindex] Activate new transaction index code that runs in background
Summary:
Backports the remaining six commits from PR13033, thus activating the
new transaction index database:
9b2704777 [doc] Include txindex changes in the release notes.
ed77dd6b3 [test] Simple unit test for TxIndex.
6d772a3d4 [rpc] Public interfaces to GetTransaction block until synced.
a03f804f2 [index] Move disk IO logic from GetTransaction to TxIndex::FindTx.
e0a3b8003 [validation] Replace tx index code in validation code with TxIndex.
8181db88f [init] Initialize and start TxIndex in init code.
Also incorporates fixes from PR14071 and PR15410:
faf4a9b67 qa: Stop txindex thread before calling destructor
fab6b07c1 test: txindex: interrupt threadGroup before calling destructor
https://github.com/bitcoin/bitcoin/compare/8181db88f~1..9b2704777
https://github.com/bitcoin/bitcoin/pull/13033/files
https://github.com/bitcoin/bitcoin/pull/14071/files
https://github.com/bitcoin/bitcoin/pull/15410/files
Depends on D2904
Test Plan:
make check
test_runner.py
manual testing done:
- migration from existing txindex (on testnet: 2 minute block on startup)
- fresh txindex=1 with new code (testnet: 30 minutes background job)
- mainnet test (57 minutes for blocking migration on startup; 8.5 hours fresh indexing in background)
- test ElectrumX compatibility
Reviewers: #bitcoin_abc, deadalnix, jasonbcox, Fabien
Reviewed By: #bitcoin_abc, deadalnix
Maniphest Tasks: T617
Differential Revision: https://reviews.bitcoinabc.org/D2924