Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Core v28 support is broken #41

Closed
tcharding opened this issue Jan 21, 2025 · 2 comments · Fixed by #46
Closed

Core v28 support is broken #41

tcharding opened this issue Jan 21, 2025 · 2 comments · Fixed by #46

Comments

@tcharding
Copy link
Member

tcharding commented Jan 21, 2025

The node crate has a unit test test_multi_p2p that does not work for Bitcoin Core v28. I think the reason is something to do with how port binding was changed in this release. See P2P and Network Changes section of the release notes.

To close this issue remove the feature guard on the test_multi_p2p unit test.

tcharding added a commit to tcharding/corepc that referenced this issue Jan 21, 2025
This test works for `28_0`. It does not need feature gating out.

The reason this was done is because it cannot be run in parallel with
`test_multi_p2p`. We can leave that one feature guarded out in v28
builds.

The underlying issue is a problem with how Bitcoin Core binds to ports
and is tracked in rust-bitcoin#41
tcharding added a commit to tcharding/corepc that referenced this issue Jan 22, 2025
This test works for `28_0`. It does not need feature gating out.

The reason this was done is because it cannot be run in parallel with
`test_multi_p2p`. We can leave that one feature guarded out in v28
builds.

The underlying issue is a problem with how Bitcoin Core binds to ports
and is tracked in rust-bitcoin#41
@tcharding
Copy link
Member Author

FTR this issue is also documented in the code

    // In v28:
    //
    // > Bitcoin Core will now fail to start up if any of its P2P binds fail, rather than the
    // > previous behaviour where it would only abort startup if all P2P binds had failed.
    //
    // ref: https://bitcoincore.org/en/releases/28.0/
    // ref: https://github.com/bitcoin/bitcoin/pull/22729
    //
    // I tried various things to stop bitcoind attempting to bind on 18445 but could get nothing to work.
    //
    // - Tried using arg `-torcontrol=0`.
    // - Tried using arg `-listenonion=0`.
    // - Tried using arg `-bind={available_port}`.
    // - Tried using arg `-bind={available_port}=onion`.
    // - Tried using both the two bind args above together.
    #[cfg(not(feature = "28_0"))]
    fn test_multi_p2p() {

@tcharding
Copy link
Member Author

Suggested fix here: RCasatta/electrsd#89 (comment)

tcharding added a commit to tcharding/corepc that referenced this issue Jan 23, 2025
This test works for `28_0`. It does not need feature gating out.

The reason this was done is because it cannot be run in parallel with
`test_multi_p2p`. We can leave that one feature guarded out in v28
builds.

The underlying issue is a problem with how Bitcoin Core binds to ports
and is tracked in rust-bitcoin#41
tcharding added a commit to tcharding/corepc that referenced this issue Jan 23, 2025
Currently the `node` crate cannot run multiple instances of Bitcoin Core
v28 because of changes to bind logic in that release.

The solution is to use `-bind` instead of `-port`.

For more information on the relevant changes in Core v28 see:

https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-28.0.md#p2p-and-network-changes

This patch was created with help of @MaxFangX - mad props.

Fix: rust-bitcoin#41
apoelstra added a commit that referenced this issue Jan 23, 2025
5dcfd5f Enable running multiple Core v28 nodes (Tobin C. Harding)

Pull request description:

  Currently the `node` crate cannot run multiple instances of Bitcoin Core v28 because of changes to bind logic in that release.

  The solution is to use `-bind` instead of `-port`.

  For more information on the relevant changes in Core v28 see:

  https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-28.0.md#p2p-and-network-changes

  This patch was created with help of MaxFangX - mad props.

  Fix: #41

ACKs for top commit:
  apoelstra:
    ACK 5dcfd5f; successfully ran local tests; thanks guys!

Tree-SHA512: d639c09add6d313975a8abc8caaeb5afb9fbfd0e09a39a854aab91aafd50f056ceb8318b5c3dd4ae22955c325c6b593eec9f6de8eec3b7e3e9039b754cfadb86
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant