Merge pull request #1744 from tnull/2022-09-fix-bp-futures-doc

Fix `background-processor` doc build for `futures`
This commit is contained in:
Matt Corallo 2022-10-10 20:29:11 +00:00 committed by GitHub
commit 6738fd56cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 15 deletions

View file

@ -12,7 +12,7 @@ jobs:
beta,
# 1.41.1 is MSRV for Rust-Lightning, lightning-invoice, and lightning-persister
1.41.1,
# 1.45.2 is MSRV for lightning-net-tokio, lightning-block-sync, and coverage generation
# 1.45.2 is MSRV for lightning-net-tokio, lightning-block-sync, lightning-background-processor, and coverage generation
1.45.2,
# 1.47.0 will be the MSRV for no-std builds using hashbrown once core2 is updated
1.47.0]
@ -20,34 +20,43 @@ jobs:
- toolchain: stable
build-net-tokio: true
build-no-std: true
build-futures: true
- toolchain: stable
platform: macos-latest
build-net-tokio: true
build-no-std: true
build-futures: true
- toolchain: beta
platform: macos-latest
build-net-tokio: true
build-no-std: true
build-futures: true
- toolchain: stable
platform: windows-latest
build-net-tokio: true
build-no-std: true
build-futures: true
- toolchain: beta
platform: windows-latest
build-net-tokio: true
build-no-std: true
build-futures: true
- toolchain: beta
build-net-tokio: true
build-no-std: true
build-futures: true
- toolchain: 1.41.1
build-no-std: false
test-log-variants: true
build-futures: false
- toolchain: 1.45.2
build-net-old-tokio: true
build-net-tokio: true
build-no-std: false
build-futures: true
coverage: true
- toolchain: 1.47.0
build-futures: true
build-no-std: true
runs-on: ${{ matrix.platform }}
steps:
@ -109,7 +118,7 @@ jobs:
- name: Test on Rust ${{ matrix.toolchain }} with net-tokio and full code-linking for coverage generation
if: matrix.coverage
run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always
- name: Test on no-std bullds Rust ${{ matrix.toolchain }}
- name: Test no-std builds on Rust ${{ matrix.toolchain }}
if: "matrix.build-no-std && !matrix.coverage"
shell: bash # Default on Winblows is powershell
run: |
@ -140,15 +149,26 @@ jobs:
run: |
cd lightning
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --no-default-features --features no-std
cd ..
- name: Test futures builds on Rust ${{ matrix.toolchain }}
if: "matrix.build-futures && !matrix.coverage"
shell: bash # Default on Winblows is powershell
run: |
cd lightning-background-processor
cargo test --verbose --color always --no-default-features --features futures
- name: Test futures builds on Rust ${{ matrix.toolchain }} and full code-linking for coverage generation
if: "matrix.build-futures && matrix.coverage"
shell: bash # Default on Winblows is powershell
run: |
cd lightning-background-processor
RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --no-default-features --features futures
- name: Test on Rust ${{ matrix.toolchain }}
if: "! matrix.build-net-tokio"
run: |
cargo test --verbose --color always -p lightning
cargo test --verbose --color always -p lightning-invoice
cargo test --verbose --color always -p lightning-rapid-gossip-sync
cargo build --verbose --color always -p lightning-persister
cargo build --verbose --color always -p lightning-background-processor
cargo test --verbose --color always -p lightning
cargo test --verbose --color always -p lightning-invoice
cargo test --verbose --color always -p lightning-rapid-gossip-sync
cargo test --verbose --color always -p lightning-persister
cargo test --verbose --color always -p lightning-background-processor
- name: Test C Bindings Modifications on Rust ${{ matrix.toolchain }}
if: "! matrix.build-net-tokio"
run: |
@ -299,6 +319,7 @@ jobs:
run: |
cargo check --release
cargo check --no-default-features --features=no-std --release
cargo check --no-default-features --features=futures --release
cargo doc --release
fuzz:

View file

@ -13,11 +13,14 @@ edition = "2018"
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[features]
futures = [ "futures-util" ]
[dependencies]
bitcoin = "0.29.0"
lightning = { version = "0.0.111", path = "../lightning", features = ["std"] }
lightning-rapid-gossip-sync = { version = "0.0.111", path = "../lightning-rapid-gossip-sync" }
futures = { version = "0.3", optional = true }
futures-util = { version = "0.3", default-features = false, features = ["async-await-macro"], optional = true }
[dev-dependencies]
lightning = { version = "0.0.111", path = "../lightning", features = ["_test_utils"] }

View file

@ -35,7 +35,7 @@ use std::time::{Duration, Instant};
use std::ops::Deref;
#[cfg(feature = "futures")]
use futures::{select, future::FutureExt};
use futures_util::{select_biased, future::FutureExt};
/// `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
/// Rust-Lightning running properly, and (2) either can or should be run in the background. Its
@ -378,6 +378,7 @@ pub async fn process_events_async<
Descriptor: 'static + SocketDescriptor + Send + Sync,
CMH: 'static + Deref + Send + Sync,
RMH: 'static + Deref + Send + Sync,
OMH: 'static + Deref + Send + Sync,
EH: 'static + EventHandler + Send,
PS: 'static + Deref + Send,
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
@ -385,7 +386,7 @@ pub async fn process_events_async<
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
UMH: 'static + Deref + Send + Sync,
PM: 'static + Deref<Target = PeerManager<Descriptor, CMH, RMH, L, UMH>> + Send + Sync,
PM: 'static + Deref<Target = PeerManager<Descriptor, CMH, RMH, OMH, L, UMH>> + Send + Sync,
S: 'static + Deref<Target = SC> + Send + Sync,
SC: WriteableScore<'a>,
SleepFuture: core::future::Future<Output = bool>,
@ -405,6 +406,7 @@ where
L::Target: 'static + Logger,
P::Target: 'static + Persist<Signer>,
CMH::Target: 'static + ChannelMessageHandler,
OMH::Target: 'static + OnionMessageHandler,
RMH::Target: 'static + RoutingMessageHandler,
UMH::Target: 'static + CustomMessageHandler,
PS::Target: 'static + Persister<'a, Signer, CW, T, K, F, L, SC>,
@ -412,7 +414,7 @@ where
let mut should_continue = true;
define_run_body!(persister, event_handler, chain_monitor, channel_manager,
gossip_sync, peer_manager, logger, scorer, should_continue, {
select! {
select_biased! {
_ = channel_manager.get_persistable_update_future().fuse() => true,
cont = sleeper(Duration::from_millis(100)).fuse() => {
should_continue = cont;

View file

@ -20,7 +20,7 @@ rpc-client = [ "serde", "serde_json", "chunked_transfer" ]
[dependencies]
bitcoin = "0.29.0"
lightning = { version = "0.0.111", path = "../lightning" }
futures = { version = "0.3" }
futures-util = { version = "0.3" }
tokio = { version = "1.0", features = [ "io-util", "net", "time" ], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
serde_json = { version = "1.0", optional = true }

View file

@ -7,7 +7,7 @@ use crate::http::{BinaryResponse, HttpEndpoint, HttpClient, JsonResponse};
use bitcoin::hash_types::BlockHash;
use bitcoin::hashes::hex::ToHex;
use futures::lock::Mutex;
use futures_util::lock::Mutex;
use std::convert::TryFrom;
use std::convert::TryInto;

View file

@ -7,7 +7,7 @@ use crate::http::{HttpClient, HttpEndpoint, HttpError, JsonResponse};
use bitcoin::hash_types::BlockHash;
use bitcoin::hashes::hex::ToHex;
use futures::lock::Mutex;
use futures_util::lock::Mutex;
use serde_json;