Commit graph

108 commits

Author SHA1 Message Date
Byron Hambly
8bc9cd62fb Merge be44332803 into merged_master (Bitcoin PR bitcoin/bitcoin#28191) 2025-07-03 15:53:03 +02:00
Byron Hambly
3e027c6bd4 Merge f4f1d6d230 into merged_master (Bitcoin PR bitcoin/bitcoin#27746) 2025-07-03 12:59:45 +02:00
Byron Hambly
61ecd1fa45 Merge e253568da8 into merged_master (Bitcoin PR bitcoin/bitcoin#28053) 2025-07-01 11:52:36 +02:00
Byron Hambly
f61ec91393 Merge ef29d5d7e2 into merged_master (Bitcoin PR bitcoin/bitcoin#27607) 2025-07-01 11:32:01 +02:00
Byron Hambly
a8a9ae2ae1 Merge 75135c673e into merged_master (Bitcoin PR bitcoin/bitcoin#27861) 2025-07-01 10:39:46 +02:00
Byron Hambly
73663a4c89 Merge 4e8a7654f6 into merged_master (Bitcoin PR bitcoin/bitcoin#25193) 2025-06-20 16:01:14 +02:00
Byron Hambly
b1d470027d Merge c2f2abd0a4 into merged_master (Bitcoin PR bitcoin/bitcoin#27125) 2025-06-20 10:46:05 +02:00
Byron Hambly
e22e1b9509 Merge ccd4db7d62 into merged_master (Bitcoin PR bitcoin/bitcoin#27570) 2025-05-16 10:32:57 +02:00
Byron Hambly
e23e51f9ef Merge 369d4c03b7 into merged_master (Bitcoin PR bitcoin/bitcoin#27254) 2025-04-12 12:19:09 +02:00
Byron Hambly
59a4dcb178 Merge cbfbf46e57 into merged_master (Bitcoin PR bitcoin/bitcoin#25781) 2025-04-10 09:10:09 +02:00
Byron Hambly
6ec7ce1641 Merge bb136aaf2c into merged_master (Bitcoin PR bitcoin/bitcoin#26533) 2025-04-09 12:28:27 +02:00
Tom Trevethan
5b2b315520 Merge 9a288430df into merged_master (Bitcoin PR bitcoin/bitcoin#26900) 2025-04-04 14:21:48 +00:00
Tom Trevethan
7d07e14d44 Merge 6b7ccb98a5 into merged_master (Bitcoin PR bitcoin/bitcoin#26251) 2025-04-02 14:56:26 +00:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Byron Hambly
ca0a68b350
Merge UP TO 551c8e9526 into merged_master (UP TO bitcoin/bitcoin#26349)
Includes FIXMEs for a few functional tests
2025-02-05 09:50:17 +02:00
Byron Hambly
8499b13762
lint: fix lint issues 2024-12-03 14:02:33 +02:00
Byron Hambly
b80b3aeff4 Merge 3a7e0a210c into merged_master (Bitcoin PR bitcoin/bitcoin#24513) 2024-11-26 14:42:49 +02:00
Byron Hambly
076e809b74 Merge 821f5c824f into merged_master (Bitcoin PR bitcoin/bitcoin#25487) 2024-10-17 09:16:23 +02:00
James Dorfman
413a175b53 Fixes for Elements PR #1270 2024-09-23 21:22:11 +00:00
James Dorfman
61b0543ba7 Merge cdcc74bbcc into merged_master (Elements PR #1270) 2024-09-23 16:51:13 +00:00
James Dorfman
7ef8f9380b Merge 015717e2b8 into merged_master (Bitcoin PR bitcoin/bitcoin#25299) 2024-09-10 23:50:51 +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
5b4757e4f1 Merge d17bbc3c48 into merged_master (Bitcoin PR bitcoin/bitcoin#25060) 2024-08-09 03:29:09 +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
237db14671 Merge bd616bc16a into merged_master (Bitcoin PR bitcoin/bitcoin#24917) 2024-08-06 17:01:19 +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
4259278ff5 Reload trimmed header from index instead of block, block may have been pruned 2024-05-21 05:34:30 +00:00
Pablo Greco
31835f2a86 Prepare access to untrim headers 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
fanquake
be44332803
Merge bitcoin/bitcoin#28191: refactor: Remove unused MessageStartChars parameters from BlockManager methods
fa69e3a95c Remove unused MessageStartChars parameters from BlockManager methods (MarcoFalke)

Pull request description:

  Seems odd to expose these for mocking, when it is not needed.

  Fix this by removing the the unused parameters and use the already existing member field instead.

ACKs for top commit:
  Empact:
    utACK fa69e3a95c
  dergoegge:
    utACK fa69e3a95c

Tree-SHA512: 7814e9560abba8d9c0926bcffc70f92e502d22f543af43671248f6fcd1433f35238553c0f05123fde6d8e0f80261af0ab0500927548115153bd68d57fe2da746
2023-08-07 10:57:39 +02:00
MarcoFalke
fa69e3a95c
Remove unused MessageStartChars parameters from BlockManager methods 2023-07-31 14:32:57 +02:00
Suhas Daftuar
1cfc887d00 Remove CChain dependency in node/blockstorage 2023-07-14 14:54:57 -04:00
Suhas Daftuar
fe86a7cd48 Explicitly track maximum block height stored in undo files
When writing a new block to disk, if we have filled up the current block file,
then we flush and truncate that block file (to free allocated but unused
space) before advancing to the next one. When this happens, we have to
determine whether to also flush and truncate the corresponding undo file.

Undo data is only written when blocks are connected, not when blocks are
received. Thus it's possible that the corresponding undo file already has all
the data it will ever have, and we should flush/truncate it as we advance
files; or it's possible that there is more data we expect to write, and should
therefore defer flush/truncation until undo data is later written.

Prior to this commit, we made the determination of whether the undo file was
full of all requisite data by comparing against the chain tip. This patch
replaces that dependence on validation data structures by instead just tracking
the highest height of any block written in the undo file as we go.
2023-07-14 14:47:00 -04:00
TheCharlatan
462390c85f
refactor: Move stopafterblockimport handling out of blockstorage
This has the benefit of moving the StartShutdown call out of the
blockstorage file and thus out of the kernel's responsibility. The user
can now decide if he wants to start shutdown / interrupt after a block
import or not.
2023-07-11 12:00:57 +02:00
furszy
ca91c244ef
index: verify blocks data existence only once
At present, during init, we traverse the chain (once per index)
to confirm that all necessary blocks to sync each index up to
the current tip are present.

To make the process more efficient, we can fetch the oldest block
from the indexers and perform the chain data existence check from
that point only once.

This also moves the pruning violation check to the end of the
'loadinit' thread, which is where the reindex, block loading and
chain activation processes happen.

Making the node's startup process faster, allowing us to remove
the global g_indexes_ready_to_sync flag, and enabling the
execution of the pruning violation verification even when the
reindex or reindex-chainstate flags are enabled (which has being
skipped so far).
2023-07-10 10:50:50 -03:00
furszy
2ec89f1970
refactor: simplify pruning violation check
By generalizing 'GetFirstStoredBlock' and implementing
'CheckBlockDataAvailability' we can dedup code and
avoid repeating work when multiple indexes are enabled.
E.g. get the oldest block across all indexes and
perform the pruning violation check from that point
up to the tip only once (this feature is being introduced
in a follow-up commit).

This commit shouldn't change behavior in any way.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2023-07-10 10:50:50 -03:00
furszy
c82ef91eae
make GetFirstStoredBlock assert that 'start_block' always has data
And transfer the responsibility of verifying whether 'start_block'
has data or not to the caller.

This is because the 'GetFirstStoredBlock' function responsibility
is to return the first block containing data. And the current
implementation can return 'start_block' when it has no data!. Which
is misleading at least.

Edge case behavior change:
Previously, if the block tip lacked data but all preceding blocks
contained data, there was no prune violation. And now, such
scenario will result in a prune violation.
2023-07-10 10:47:17 -03:00
furszy
04575106b2
scripted-diff: rename 'loadblk' thread name to 'initload'
The thread does not only load blocks, it loads the mempool and,
in a future commit, will start the indexes as well.

Also, renamed the 'ThreadImport' function to 'ImportBlocks'
And the 'm_load_block' class member to 'm_thread_load'.

-BEGIN VERIFY SCRIPT-

sed -i "s/ThreadImport/ImportBlocks/g" $(git grep -l ThreadImport -- ':!/doc/')
sed -i "s/loadblk/initload/g" $(git grep -l loadblk -- ':!/doc/release-notes/')
sed -i "s/m_load_block/m_thread_load/g" $(git grep -l m_load_block)

-END VERIFY SCRIPT-
2023-07-07 19:31:27 -03:00
furszy
ed4462cc78
init: start indexes sync earlier
The mempool load can take a while, and it is not
needed for the indexes' synchronization.

Also, having the mempool load function call
inside 'blockstorage.cpp' wasn't structurally
correct.
2023-07-07 19:31:26 -03:00
Byron Hambly
063acc7793 Merge cf5bb048e8 into merged_master (Bitcoin PR bitcoin/bitcoin#22932) 2023-06-28 17:12:24 +00:00
TheCharlatan
edb55e2777
kernel: Pass interrupt reference to chainman
This and the following commit seek to decouple the libbitcoinkernel
library from the shutdown code. As a library, it should it should have
its own flexible interrupt infrastructure without relying on node-wide
globals.

The commit takes the first step towards this goal by de-globalising
`ShutdownRequested` calls in kernel code.

Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
Co-authored-by: TheCharlatan <seb.kung@gmail.com>
2023-06-28 09:52:27 +02:00
Byron Hambly
7878ba47b9 Merge c561f2f06e into merged_master (Bitcoin PR bitcoin/bitcoin#23497) 2023-06-19 09:28:31 +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
72bd6c92e7 Merge 2f37b221d1 into merged_master (Bitcoin PR bitcoin/bitcoin#23581) 2023-06-14 19:21:05 +00:00
Martin Zumsande
97844d9268 index: Enable reindex-chainstate with active indexes
This is achieved by letting the index sync thread wait until
reindex-chainstate is finished.

This also disables the pruning check when reindexing the chainstate (which is
incompatible with prune mode) because there would be no chain at this point
in init.
2023-05-17 11:14:28 -04:00
TheCharlatan
5ff63a09a9
refactor, blockstorage: Replace stopafterblockimport arg
Add a stop_after_block_import field to the BlockManager options. Use
this field instead of the global gArgs.

This should allow users of the BlockManager to not rely on the global
Args.
2023-05-10 19:07:46 +02:00
TheCharlatan
f0bb1021f0
refactor: Move functions to BlockManager methods
This is a commit in preparation for the next few commits. The functions
are moved to methods to avoid their re-declaration for the purpose of
passing in BlockManager options.

The functions that were now moved into the BlockManager should no longer
use the params as an argument, but instead use the member variable.

In the moved ReadBlockFromDisk and UndoReadFromDisk, change
the function signature to accept a reference to a CBlockIndex instead of
a raw pointer. The pointer is expected to be non-null, so reflect that
in the type.

To allow for the move of functions to BlockManager methods all call
sites require an instantiated BlockManager, or a callback to one.
2023-05-10 19:06:53 +02:00