refactor: Remove ::Params() global from CChainState - #21789
Conversation
fa5915e to
fad0c2a
Compare
|
Concept ACK, will review soon |
|
Concept ACK |
1 similar comment
|
Concept ACK |
fad0c2a to
fa4b981
Compare
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
|
Concept ACK. It looks like a very nice simplification which makes it harder to make a mistake. |
fae8528 to
fa49430
Compare
|
🕵️ @sipa has been requested to review this pull request as specified in the REVIEWERS file. |
fa49430 to
fad6615
Compare
fad6615 to
eeee9c6
Compare
aca0e5d Remove `GetDataDir(bool fNetSpecific = true)` function (Kiminuo) b3e67f2 scripted-diff: Replace `GetDataDir(true)` calls with `gArgs.GetDataDirNet()` calls (Kiminuo) 4c3a5dc scripted-diff: Replace `GetDataDir()` calls with `gArgs.GetDataDirNet()` calls (Kiminuo) 13bd8bb Make `ArgsManager.GetDataDirPath` private and drop needless suffix (Kiminuo) 4d8189f scripted-diff: Change `ArgsManager.GetDataDirPath()` to `ArgsManager.GetDataDirBase()` in tests (Kiminuo) 0f53df4 Add `ArgsManager.GetDataDirBase()` and `ArgsManager.GetDataDirNet()` as an intended replacement for `ArgsManager.GetDataDirPath(net_identifier)` (Kiminuo) 716de29 Make `m_cached_blocks_path` mutable. Make `ArgsManager::GetBlocksDirPath()` const. (Kiminuo) Pull request description: This PR is a follow up PR to bitcoin#21244. The PR attempts to move us an inch towards the [goal](bitcoin#21244 (comment)) by removing `GetDataDir(net_specific)` and replacing it by `gArgs.GetDataDir(net_specific)` calls. The approach of this PR attempts to be similar to the one chosen in "De-globalize ChainstateManager" (bitcoin#20158). The goal is to pass `ArgsManager` to functions (or ideally to have `ArgsManager` as a member of a class where needed; inspiration from here: bitcoin#21789) instead of having it as a global variable (i.e. `gArgs`). **Notes:** * First commit makes `m_cached_blocks_path` `mutable` as was suggested [here](bitcoin#21244 (comment)) but not fully applied in bitcoin#21244. (`m_cached_datadir_path` and `m_cached_network_datadir_path` were marked as `mutable` in bitcoin#21244) This commit can be in a separate PR too. * Other commits deal with removing of `GetDataDir(net_specific)` function. * This was originally part of bitcoin#21244 but it was [left]((bitcoin#21244 (review))) for a follow up PR. * I think that the proposed changes show nicely where there is reliance on `gArgs` which is IMO a good thing. If you know about a better approach how to do this, please share it here. ACKs for top commit: hebasto: ACK aca0e5d MarcoFalke: re-ACK aca0e5d 👃 Tree-SHA512: deec4d88edb32d7f4c818c3a74ffbb64709685819b88242dcf5dbaa1fb611f3ce2b29d2576ddb9e0dc5e75288e43538968224008c0a80e7149fc81c309f7c9da
eeee9c6 to
faa72ee
Compare
|
The main change in the first commit (fa216cc7) seems to be: "refactor: Add Also, the changes like this fa216cc#diff-97c3a52bc5fad452d82670a7fd291800bae20c7bc35bb82686c2c0a4ea7b5b98R2284 in the first commit (fa216cc7) can probably be moved to the second commit (fa06aaacf3b9c35d9e30c883bcd7780dcf0bceda) so that the first commit would only introduce Changes in fa216cc79267ba25fa3709982626def61f4abe2a & fa06aaacf3b9c35d9e30c883bcd7780dcf0bceda LGTM. |
|
Concept ACK |
|
I think the two commits are nicely split up. The first one removes it from inside the functions, the second removes the arg of the functions. |
faa72ee to
2222da8
Compare
|
ACK 2222da832066d06be3ff8752e49008fef71eb668 |
…ctions It is confusing and verbose to repeatedly access the global when a member variable can simply refer to it.
Passing this is confusing and redundant with the m_params member.
2222da8 to
fa0d921
Compare
|
Rebased |
|
ACK fa0d921 |
|
utACK fa0d921 |
| for (int i = 0; i < 10; ++i) { | ||
| BlockValidationState state; | ||
| m_node.chainman->ActiveChainstate().InvalidateBlock(state, Params(), active.Tip()); | ||
| m_node.chainman->ActiveChainstate().InvalidateBlock(state, active.Tip()); |
There was a problem hiding this comment.
Is #include <chainparams.h> still needed?
There was a problem hiding this comment.
Thanks, will try to remove if I have to force push
The
::Params()global is verbose and confusing. Also it makes tests a bit harder to write because they'd have to mock a global.Fix all issues by simply using a member variable that points to the right params.
(Can be reviewed with
--word-diff-regex=.)