-
Notifications
You must be signed in to change notification settings - Fork 1.2k
backport: merge bitcoin#23842, #24714, #21059, #23994, #19866, #19935, #23756, #19064, #23411, #20080 (util backports) #5546
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
fc6d450 to
05b355e
Compare
|
I feel like it is not good idea for rushing with backports such as "merge bitcoin#22976: Rename overloaded int GetArg to GetIntArg" By rough estimation, there are more than 500 backports to do, and each of them who use old version of Of course, each particular fix in each particular case is trivial, the compiler even will show it as a compilation error, so, it won't cause any real issue. But disadvantage of doing bitcoin#22976 at this moment is an overall slowdown of backporting process. Current backport status of full coverage (98-99%) at this point in v21:
If get list all of commit between them 22976 and 18669: and grep 'GetArg' after that: There's 477 particular usage of It means that all trivial changes such as this https://github.com/bitcoin/bitcoin/pull/21056/files will require one extra manual conflict resolving/compilation fix. @kwvg may I ask you to don't backports any big refactorings from v22 or later until the gap is so long? |
I am also against of this backport by same reason at current moment. It is too early to do; benefits of this backport is too tiny. If there's any critical fix/improvement that blocks other backport, feature or changes - it would out-weight disadvantages. But for bitcoin#22951 and bitcoin#22976 I see only disadvantages. |
7ea387e to
82d8a61
Compare
UdjinM6
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These backports LGTM: bitcoin#24714, bitcoin#21059, bitcoin#23994, bitcoin#19866, bitcoin#19935, bitcoin#23756, bitcoin#19064, bitcoin#23411, bitcoin#20080 (all except 23842)
https://github.com/bitcoin/bitcoin/pull/23842/files
there's missing changes for:
src/dummywallet.cpp
src/qt/test/wallettests.cpp
src/qt/test/addressbooktests.cpp
And they are missing not because they are forgotten, but because there huge refactoring that seems preemptive to do for me.
It's almost last PR from bitcoin v23 but a coverage of backports for v21, v22 and v23 are 62.33%, 39.32%, 16.74%
I don't feel like it is a time to do it :D especially because it's a scripted refactoring (rename of interfaces/variables) - no any new feature, fixes or improvements.
btw, utACK (whatever with 23842 or without, because seems as amount of possible conflicts in future is manageable few)
Wasn't a fan of it either myself (had to change my other pull requests to match this newer convention as I've rebased them on top of squashed versions of this PR) but subsequent feature backports assume this new naming convention and I have to therefore pick between changing them now or modifying the backport to use the old naming convention and since the changes were imo manageable, the latter seemed like an unattractive option.
Backporting to ensure feature parity means skipping ahead at times. That is never fun from the perspective of backporting chronologically. Feature parity attempts to make up for the lag in upstream parity by selectively backporting the most impactful segments of the codebase (and is sometimes forced upon downstream projects if features are depending on projects that are deprecating components said features require) It does help to somewhat close the gap but, is a balancing act between being as prolific as possible and making sure that chronological backports don't become painful. |
knst
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as I mentioned before:
btw, utACK (whatever with 23842 or without, because seems as amount of possible conflicts in future is manageable few)
Which feature backports require 23842? |
|
This pull request has conflicts, please rebase. |
|
Rebased on top of |
UdjinM6
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
re-utACK
Seems as old command `git merge-base --fork-point` doesn't work for some cases of tree structure Particularly it didn't worked for PR dashpay#5546: > @kwvg kwvg force-pushed the utilbps branch from 82d8a61 to f1bc1c3 Firstly, `git merge-base --fork-point develop 82d8a61` returned me wrong commit. After pulling origin/develop it returns just an empty string. But `git show-branch --merge-base develop 82d8a61` worked and returned correct commit: "3e1c6dd731 fix: reorder initializations (dashpay#5545)" which is the last commit for develop
knst
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
re-utACK
PastaPastaPasta
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
utACK for merging via merge commit
Co-authored-by: Konstantin Akimov <knstqq@gmail.com>
…echnique in util/fastrange.h
Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
f1bc1c3 to
72396d5
Compare
## Issue being fixed or feature implemented Seems as old command `git merge-base --fork-point` doesn't work for some cases of tree structure Particularly it didn't worked for PR #5546: > @kwvg kwvg force-pushed the utilbps branch from 82d8a61 to f1bc1c3 Basically, one of the step `gfb` script -- `git merge-base --fork-point develop 82d8a61` returned me wrong commit. After pulling origin/develop it returns just an empty string. But `git show-branch --merge-base develop 82d8a61` worked and returned correct commit: "3e1c6dd731 fix: reorder initializations (#5545)" which is the last common commit with develop branch ## What was done? Updated recommended function `function gfd()` in doc ## How Has This Been Tested? Tested on PR #5546 that failed before and returned wrong diff for me ## Breaking Changes N/A ## Checklist: - [x] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone
…oin{ClientQueueManager,Server} (#5337)
## Motivation
CoinJoin's subsystems are initialized by variables and managers that
occupy the global context. The _extent_ to which these subsystems
entrench themselves into the codebase is difficult to assess and moving
them out of the global context forces us to enumerate the subsystems in
the codebase that rely on CoinJoin logic and enumerate the order in
which components are initialized and destroyed.
Keeping this in mind, the scope of this pull request aims to:
* Reduce the amount of CoinJoin-specific entities present in the global
scope
* Make the remaining usage of these entities in the global scope
explicit and easily searchable
## Additional Information
* The initialization of `CCoinJoinClientQueueManager` is dependent on
blocks-only mode being disabled (which can be alternatively interpreted
as enabling the relay of transactions). The same applies to
`CBlockPolicyEstimator`, which `CCoinJoinClientQueueManager` depends.
Therefore, `CCoinJoinClientQueueManager` is only initialized if
transaction relaying is enabled and so is its scheduled maintenance
task. This can be found by looking at `init.cpp`
[here](https://github.com/dashpay/dash/blob/93f8df1c31fdce6a14f149acfdff22678c3f22ca/src/init.cpp#L1681-L1683),
[here](https://github.com/dashpay/dash/blob/93f8df1c31fdce6a14f149acfdff22678c3f22ca/src/init.cpp#L2253-L2255)
and
[here](https://github.com/dashpay/dash/blob/93f8df1c31fdce6a14f149acfdff22678c3f22ca/src/init.cpp#L2326-L2327).
For this reason, `CBlockPolicyEstimator` is not a member of `CJContext`
and its usage is fulfilled by passing it as a reference when
initializing the scheduling task.
* `CJClientManager` has not used `CConnman` or `CTxMemPool` as `const`
as existing code that is outside the scope of this PR would cast away
constness, which would be unacceptable. Furthermore, some logical paths
are taken that will grind to a halt if they are stored as `const`.
Examples of such a call chains would be:
* `CJClientManager::DoMaintenance >
CCoinJoinClientManager::DoMaintenance > DoAutomaticDenominating >
CCoinJoinClientSession::DoAutomaticDenominating >
CCoinJoinClientSession::StartNewQueue > CConnman::AddPendingMasternode`
which modifies `CConnman::vPendingMasternodes`, which is non-const
behaviour
* `CJClientManager::DoMaintenance >
CCoinJoinClientManager::DoMaintenance > DoAutomaticDenominating >
CCoinJoin::IsCollateralValid > AcceptToMemoryPool` which adds a
transaction to the memory pool, which is non-const behaviour
* There were cppcheck [linter
failures](#5337 (comment))
that seemed to be caused by the usage of `Assert` in
`coinjoin/client.h`. This seems to be resolved by backporting
[bitcoin#24714](bitcoin#24714). (Thanks
@knst!)
* Depends on #5546
---------
Co-authored-by: Kittywhiskers Van Gogh <63189531+kittywhiskers@users.noreply.github.com>
Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
Additional Information
UnicodeDecodeErrorterminations when runningcombine_logs.py(GitLab build, again and again)