aboutsummaryrefslogtreecommitdiff
path: root/src/txorphanage.cpp
AgeCommit message (Collapse)Author
2023-01-26Merge bitcoin/bitcoin#26551: p2p: Track orphans by who provided themglozow
c58c249a5b694c88122589fedbef4e2f13f08bb4 net_processing: indicate more work to do when orphans are ready to reconsider (Anthony Towns) ecb0a3e4259b81d6bb74d59a58eb65552c17d8d8 net_processing: Don't process tx after processing orphans (Anthony Towns) c5837757068bf8ea3e5b6fdad82f69d1deb81545 net_processing: only process orphans before messages (Anthony Towns) be2304676bedcd15debcdc694549fdd2b255ba62 txorphange: Drop redundant originator arg from GetTxToReconsider (Anthony Towns) a4fe09973aa82210b98dcb4e4e9f11ef59780f9b txorphanage: index workset by originating peer (Anthony Towns) Pull request description: We currently process orphans by assigning them to the peer that provided a missing parent; instead assign them to the peer that provided the orphan in the first place. This prevents a peer from being able to marginally delay another peer's transactions and also simplifies the internal API slightly. Because we're now associating orphan processing with the peer that provided the orphan originally, we no longer process orphans immediately after receiving the parent, but defer until a future call to `ProcessMessage`. Based on #26295 ACKs for top commit: naumenkogs: utACK c58c249a5b694c88122589fedbef4e2f13f08bb4 glozow: ACK c58c249a5b694c88122589fedbef4e2f13f08bb4 mzumsande: Code Review ACK c58c249a5b694c88122589fedbef4e2f13f08bb4 Tree-SHA512: 3186c346f21e60440266a2a80a9d23d7b96071414e14b2b3bfe50457c04c18b1eab109c3d8c2a7726a6b10a2eda1f0512510a52c102da112820a26f5d96f12de
2023-01-25net_processing: indicate more work to do when orphans are ready to reconsiderAnthony Towns
When PR#15644 made orphan processing interruptible, it also introduced a potential 100ms delay between processing of the first and second newly reconsiderable orphan, because it didn't check if the orphan work set was non-empty after invoking ProcessMessage(). This adds that check, so that ProcessMessages() will return true if there are orphans to process, usually avoiding the 100ms delay in CConnman::ThreadMessageHandler().
2023-01-25net_processing: Don't process tx after processing orphansAnthony Towns
If we made progress on orphans, consider that enough work for this peer for this round of ProcessMessages. This also allows cleaning up the api for TxOrphange:GetTxToReconsider().
2023-01-25txorphange: Drop redundant originator arg from GetTxToReconsiderAnthony Towns
2022-12-24scripted-diff: Bump copyright headersHennadii Stepanov
-BEGIN VERIFY SCRIPT- ./contrib/devtools/copyright_header.py update ./ -END VERIFY SCRIPT- Commits of previous years: - 2021: f47dda2c58b5d8d623e0e7ff4e74bc352dfa83d7 - 2020: fa0074e2d82928016a43ca408717154a1c70a4db - 2019: aaaaad6ac95b402fe18d019d67897ced6b316ee0
2022-11-29txorphanage: index workset by originating peerAnthony Towns
2022-10-11scripted-diff: rename and de-globalise g_cs_orphansAnthony Towns
-BEGIN VERIFY SCRIPT- sed -i -e 's/static RecursiveMutex/mutable Mutex/' src/txorphanage.h sed -i -e '/RecursiveMutex/d' src/txorphanage.cpp sed -i -e 's/g_cs_orphans/m_mutex/g' $(git grep -l g_cs_orphans src/) -END VERIFY SCRIPT-
2022-10-11Move all g_cs_orphans locking to txorphanageAnthony Towns
2022-10-11txorphanage: make m_peer_work_set privateAnthony Towns
2022-10-11txorphange: move orphan workset to txorphanageAnthony Towns
2022-07-28refactor: log `nEvicted` message in `LimitOrphans` then return voidchinggg
`LimitOrphans()` can log expired tx and it should log evicted tx as well instead of returning the number for caller to print the message. Since `LimitOrphans()` now return void, the redundant assertion check in fuzz test is also removed.
2021-02-27scripted-diff: Update txorphanage naming conventionAnthony Towns
-BEGIN VERIFY SCRIPT- sed -i 's/mapOrphanTransactionsByPrev/m_outpoint_to_orphan_it/g' src/txorphanage.h src/txorphanage.cpp sed -i 's/mapOrphanTransactions/m_orphans/g' src/txorphanage.h src/txorphanage.cpp src/net_processing.cpp src/test/denialofservice_tests.cpp sed -i 's/g_orphan_list/m_orphan_list/g' src/txorphanage.h src/txorphanage.cpp sed -i 's/g_orphans_by_wtxid/m_wtxid_to_orphan_it/g' src/txorphanage.h src/txorphanage.cpp sed -i 's/nMaxOrphans/max_orphans/g' src/txorphanage.h src/txorphanage.cpp sed -i 's/COrphanTx/OrphanTx/g' src/txorphanage.h src/txorphanage.cpp src/test/denialofservice_tests.cpp -END VERIFY SCRIPT-
2021-02-27txorphanage: Move functions and data into classAnthony Towns
Collects all the orphan handling globals into a single member var in net_processing, and ensures access is encapuslated into the interface functions. Also adds doxygen comments for methods.
2021-02-27txorphanage: Extract EraseOrphansForBlockAnthony Towns
Extract code that erases orphans when a new block is found into EraseOrphansForBlock.
2021-02-26txorphanage: Extract OrphanageAddTxAnthony Towns
Extract code from AddOrphanTx into OrphanageAddTx.
2021-02-26txorphanage: Extract GetOrphanTxAnthony Towns
Extract orphan lookup code into GetOrphanTx function.
2021-02-26txorphanage: Extract HaveOrphanTxAnthony Towns
Extract some common code into HaveOrphanTx function.
2021-02-26txorphanage: Extract AddChildrenToWorkSetAnthony Towns
Extract some common code into AddChildrenToWorkSet function. (It's a hard knock life)
2021-02-26txorphanage: Add lock annotationsAnthony Towns
EraseOrphansFor was called both with and without g_cs_orphans held, correct that so that it's always called with it already held. LimitOrphanTxSize was always called with g_cs_orphans held, so add annotations and don't lock it a second time.
2021-02-26txorphanage: Pass uint256 by reference instead of valueAnthony Towns
2021-02-26move-only: Add txorphanage moduleAnthony Towns
This module captures orphan tracking code for tx relay. Can be reviewed with --color-moved=dimmed-zebra