Commit graph

93 commits

Author SHA1 Message Date
James Dorfman
61b0543ba7 Merge cdcc74bbcc into merged_master (Elements PR #1270) 2024-09-23 16:51:13 +00:00
James Dorfman
841caf1c0f Merge 45d8b1e94a into merged_master (Bitcoin PR bitcoin/bitcoin#25286) 2024-09-09 19:19:33 +00:00
James Dorfman
ae633bfd3b Merge 636991d0c0 into merged_master (Bitcoin PR bitcoin/bitcoin#25264) 2024-09-06 19:31:45 +00:00
James Dorfman
387cfbcfe8 Merge 194b414697 into merged_master (Bitcoin PR bitcoin/bitcoin#25016) 2024-08-08 17:30:27 +00:00
James Dorfman
628a1506e1 Merge b51e60f914 into merged_master (Bitcoin PR bitcoin/bitcoin#22564) 2024-08-06 19:02:09 +00:00
James Dorfman
01e944c8aa Merge 34ae04d775 into merged_master (Bitcoin PR bitcoin/bitcoin#21726)
This changed the node pruning logic and moved test/functional/feature_blockfilterindex_prune.py
to test/functional/feature_index_prune.py.

Please verify that:
1. I migrated the test correctly
2. The magic numbers in the test look fine

With respect to #2: I believe the magic numbers are wrong. I previously had to tweak them heavily
in commit 1278b31. I don't think I did it correctly then, and so I don't believe them to be correct now.

To summarize what this tweaking was: I changed the magic numbers in the test to work properly,
but I suspect that in changing them, I may have nullified what the test was testing.

It's very possible that the reason the test was failing was because of an underlying bug with the pruning
in elements which we have to fix, rather than just being an issue with the test itself.
2024-08-06 16:43:47 +00:00
James Dorfman
d4aa6eba2f Merge dbdc83ae01 into merged_master (Bitcoin PR bitcoin/bitcoin#24909) 2024-08-01 18:03:20 +00:00
Pablo Greco
5a409265ef Extreme trimming on startup 2024-05-21 05:34:30 +00:00
Pablo Greco
4259278ff5 Reload trimmed header from index instead of block, block may have been pruned 2024-05-21 05:34:30 +00:00
Byron Hambly
fa21dc5b5d Merge 601bfc417d into merged_master (Bitcoin PR bitcoin/bitcoin#24515) 2023-10-16 10:58:18 +00:00
Byron Hambly
b7ad3576f5 Merge 5e49b2a252 into merged_master (Bitcoin PR bitcoin/bitcoin#24050) 2023-10-13 12:02:55 +00:00
Byron Hambly
591749d9f1
build: fix issues from ASAN in CI 2023-09-01 17:17:44 +02:00
Byron Hambly
eb78939513 Merge b304b65782 into merged_master (Bitcoin PR bitcoin/bitcoin#24359) 2023-06-30 17:50:25 +00:00
Byron Hambly
a992ccaac2 Merge 196b459920 into merged_master (Bitcoin PR bitcoin/bitcoin#23438) 2023-06-29 08:37:35 +00:00
Byron Hambly
063acc7793 Merge cf5bb048e8 into merged_master (Bitcoin PR bitcoin/bitcoin#22932) 2023-06-28 17:12:24 +00:00
Byron Hambly
7878ba47b9 Merge c561f2f06e into merged_master (Bitcoin PR bitcoin/bitcoin#23497) 2023-06-19 09:28:31 +00:00
Byron Hambly
43b9288c25 Merge 6182e5086f into merged_master (Bitcoin PR bitcoin/bitcoin#24002) 2023-06-15 14:17:40 +00:00
Byron Hambly
78a8032c1e Merge 4ada74206a into merged_master (Bitcoin PR bitcoin/bitcoin#23974) 2023-06-15 13:21:10 +00:00
Byron Hambly
4c85b4e490 Merge 847cf7690d into merged_master (Bitcoin PR bitcoin/bitcoin#23981) 2023-06-15 07:53:04 +00:00
Byron Hambly
72bd6c92e7 Merge 2f37b221d1 into merged_master (Bitcoin PR bitcoin/bitcoin#23581) 2023-06-14 19:21:05 +00:00
Byron Hambly
2b8eef42dd Merge 1884ce2f4c into merged_master (Bitcoin PR bitcoin/bitcoin#22937) 2023-05-11 12:38:50 +00:00
Byron Hambly
a4b97d5a9b Merge ec4e43c21c into merged_master (Bitcoin PR #23235) 2023-05-11 10:44:10 +00:00
Byron Hambly
cca3f919f8 Merge 9e530c6352 into merged_master (Bitcoin PR bitcoin/bitcoin#20487) 2023-05-09 11:22:04 +00:00
Byron Hambly
d1a87496d0 Merge cdb4dfcbf1 into merged_master (Bitcoin PR bitcoin/bitcoin#20452) 2023-05-09 10:47:06 +00:00
Byron Hambly
c942f6af15 Merge cdf12c7b3d into merged_master (Bitcoin PR bitcoin/bitcoin#22895) 2023-04-21 12:03:29 +00:00
James Dorfman
44df9bbb73 Merge 951850bebf into merged_master (Bitcoin PR #22371) 2023-03-16 14:23:27 +00:00
Pablo Greco
e7fea1d50b Fix underflow when blocks are ahead of headers 2023-02-21 06:22:25 -03:00
Glenn Willen
f5c79950a1 When people ask us for headers we do not have (over REST or RPC), do something reasonable. 2022-12-12 09:53:42 -08:00
Glenn Willen
7c555578b7 Add a flag for header-trimming; clear P2P network feature bits when enabled. 2022-12-12 09:46:07 -08:00
Jon Atack
d40550d725 scripted-diff: remove duplicate categories from LogPrint output
-BEGIN VERIFY SCRIPT-
s() { git grep -l "$1" src | xargs sed -i "s/$1/$2/g"; }
s 'BCLog::TOR, "tor: '       'BCLog::TOR, "'
s 'BCLog::I2P, "I2P: '       'BCLog::I2P, "'
s 'BCLog::NET, "net: '       'BCLog::NET, "'
s 'BCLog::ZMQ, "zmq: '       'BCLog::ZMQ, "'
s 'BCLog::PRUNE, "Prune: '   'BCLog::PRUNE, "'
-END VERIFY SCRIPT-
2022-06-06 12:12:03 +02:00
Cory Fields
a4741bd8d4 kernel: pass params to BlockManager rather than using a global 2022-06-02 15:18:09 +00:00
Jon Atack
86ce844d3b blockstorage, refactor: pass GetFirstStoredBlock() start_block by reference
instead of by pointer, so as to not accept a nullptr.
2022-04-28 20:42:08 +02:00
Jon Atack
ed12c0a49d blockstorage, refactor: make GetFirstStoredBlock() a member of BlockManager
instead of a global
2022-04-28 20:42:08 +02:00
Carl Dong
7ab07e0332 validation: Prune UnloadBlockIndex and callees
In previous commits in this patchset, we've made sure that every
Unload/UnloadBlockIndex member function resets its own members, and does
not reach out to globals.

This means that their corresponding classes' default destructors can now
replace them, and do an even more thorough job without the need to be
updated for every new member variable.

Therefore, we can remove them, and also remove UnloadBlockIndex since
that's not used anymore.

Unfortunately, chainstatemanager_loadblockindex relies on
CChainState::UnloadBlockIndex, so that needs to stay for now.
2022-04-27 11:13:38 -04:00
Fabian Jahr
2561823531
blockstorage: Add prune locks to BlockManager
This change also introduces an aditional buffer of 10 blocks (PRUNE_LOCK_BUFFER) that will not be pruned before the best block.

Co-authored-by: Luke Dashjr <luke-jr+git@utopios.org>
2022-04-25 23:21:58 +02:00
Fabian Jahr
231fc7b035
refactor: Introduce GetFirstStoredBlock helper function 2022-04-25 23:18:01 +02:00
Carl Dong
f0a2fb3c5d scripted-diff: Rename pindexBestHeader, fHavePruned
...to m_best_header and m_have_pruned

-BEGIN VERIFY SCRIPT-
find_regex="\bpindexBestHeader\b" \
    && git grep -l -E "$find_regex" -- src \
        | xargs sed -i -E "s@$find_regex@m_best_header@g"
find_regex="\bfHavePruned\b" \
    && git grep -l -E "$find_regex" -- src \
        | xargs sed -i -E "s@$find_regex@m_have_pruned@g"
-END VERIFY SCRIPT-
2022-04-19 14:36:18 -04:00
Carl Dong
a401402125 Clear fHavePruned in BlockManager::Unload()
-----

Code Reviewer Notes

Call graph of relevant functions:

UnloadBlockIndex() <-- Moved from
    calls ChainstateManager::Unload()
        which calls BlockManager::Unload() <-- Moved to

So calling UnloadBlockIndex() would still run this moved code. The code
will also now run when ~BlockManager gets called, which makes sense.
2022-04-19 14:34:56 -04:00
Carl Dong
3308ecd3fc move-mostly: Make fHavePruned a BlockMan member
[META] In the next commit, we move the clearing of fHavePruned to
       BlockManager::Unload()
2022-04-19 14:34:56 -04:00
Carl Dong
0d567daf23 move-mostly: Make pindexBestHeader a ChainMan member
[META] In the next commit, we move the clearing of pindexBestHeader to
       ChainstateManager::Unload()
2022-04-19 14:34:55 -04:00
Carl Dong
5d670173a3 validation: Load pindexBestHeader in ChainMan
Now BlockManager::LoadBlockIndex() will ACTUALLY only load BlockMan
members.

[META] In a later commit, pindexBestHeader will be moved to ChainMan as
       a member

-----

Code Reviewer Notes

Call graph of relevant functions:

ChainstateManager::LoadBlockIndex() <-- Moved to
    calls BlockManager::LoadBlockIndexDB()
        which calls BlockManager::LoadBlockIndex() <-- Moved from

There is only one call to each of inner functions, meaning that no
behavior is changing.
2022-04-12 14:37:27 -04:00
Carl Dong
f865cf8ded Add and use BlockManager::GetAllBlockIndices 2022-03-15 19:42:43 -04:00
Carl Dong
28ba0313ea Add and use CBlockIndexHeightOnlyComparator
...also use std::sort for clarity
2022-03-15 19:42:43 -04:00
Carl Dong
12eb05df63 move-only: Move CBlockIndexWorkComparator to blockstorage
...it's declared in blockstorage.h
2022-03-15 19:42:43 -04:00
Carl Dong
c600ee3816 Only load BlockMan in BlockMan member functions
This commit effectively splits the "load block index itself" logic from
"derive Chainstate variables from loaded block index" logic.

This means that BlockManager::LoadBlockIndex{,DB} will only load what's
relevant to the BlockManager.

I strongly recommend reviewing with the following git-diff flags:
  --color-moved=dimmed_zebra --color-moved-ws=allow-indentation-change
2022-03-15 19:42:41 -04:00
Carl Dong
42e56d9b18 style-only: No need for std::pair for vSortedByHeight
...since the height information in already in CBlockIndex* and we can
use an easy custom sorter.
2022-03-15 19:40:51 -04:00
Carl Dong
3bbb6fea05 style-only: Various blockstorage.cpp cleanups 2022-03-09 14:32:49 -05:00
Anthony Towns
5be9ee3c54 refactor: more const annotations for uses of CBlockIndex* 2022-03-09 14:32:47 -05:00
Carl Dong
6c23c41561 refactor: Rewrite AddToBlockIndex with try_emplace 2022-02-22 11:56:49 -05:00
Carl Dong
c05cf7aa1e style: Modernize range-based loops over m_block_index 2022-02-22 11:56:49 -05:00