v0.3.7-pre.008-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-job-backfill-lib/src/discovery.rs
|
||||
// version: 5
|
||||
// version: 6
|
||||
|
||||
/// Network-scoped identity of one discovered transaction candidate before canonical signature decoding.
|
||||
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
|
||||
@@ -166,7 +166,8 @@ struct SignaturePageEntry {
|
||||
slot: u64,
|
||||
}
|
||||
|
||||
type SignaturePageFuture<'a> = std::pin::Pin<std::boxed::Box<dyn std::future::Future<Output = ksp_core_lib::Result<std::vec::Vec<SignaturePageEntry>>> + 'a>>;
|
||||
type SignaturePageFuture<'a> =
|
||||
std::pin::Pin<std::boxed::Box<dyn std::future::Future<Output = ksp_core_lib::Result<std::vec::Vec<SignaturePageEntry>>> + std::marker::Send + 'a>>;
|
||||
|
||||
trait SignaturePageSource {
|
||||
fn fetch_signature_page<'a>(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-job-backfill-lib/src/execution.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
use futures_util::StreamExt; // rust-rules: trait-import
|
||||
|
||||
@@ -266,7 +266,7 @@ pub(crate) async fn execute_backfill_discovery_cancellable(
|
||||
}
|
||||
|
||||
type CandidateProcessFuture<'a> =
|
||||
std::pin::Pin<std::boxed::Box<dyn std::future::Future<Output = ksp_core_lib::Result<crate::BackfillPersistenceOutcome>> + 'a>>;
|
||||
std::pin::Pin<std::boxed::Box<dyn std::future::Future<Output = ksp_core_lib::Result<crate::BackfillPersistenceOutcome>> + std::marker::Send + 'a>>;
|
||||
|
||||
trait CandidateProcessor {
|
||||
fn process<'a>(&'a self, candidate: &'a crate::BackfillCandidate) -> CandidateProcessFuture<'a>;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-job-backfill-lib/unit_tests/discovery.rs
|
||||
// version: 6
|
||||
// version: 7
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
struct PageCall {
|
||||
@@ -147,6 +147,18 @@ fn candidate_signatures(discovery: &crate::BackfillDiscovery) -> std::vec::Vec<s
|
||||
return signatures;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_008_fix_001_signature_page_future_contract_is_send() {
|
||||
fn require_send<T: std::marker::Send>(_value: T) {
|
||||
return;
|
||||
}
|
||||
let future: super::SignaturePageFuture<'static> = std::boxed::Box::pin(async {
|
||||
return std::result::Result::Ok(std::vec::Vec::new());
|
||||
});
|
||||
require_send(future);
|
||||
return;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn pre_005_latest_paginates_newest_first_and_deduplicates_pages_stably() {
|
||||
let scope = crate::BackfillScope::latest_address(ksp_core_lib::Pubkey::new_from_array([1_u8; 32]));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-job-backfill-lib/unit_tests/execution.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
enum FakeDisposition {
|
||||
@@ -148,6 +148,18 @@ fn discovery(request: &crate::BackfillRequest, characters: &[char]) -> std::opti
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pre_008_fix_001_candidate_process_future_contract_is_send() {
|
||||
fn require_send<T: std::marker::Send>(_value: T) {
|
||||
return;
|
||||
}
|
||||
let future: super::CandidateProcessFuture<'static> = std::boxed::Box::pin(async {
|
||||
return std::result::Result::Err(super::execution_error("test.send"));
|
||||
});
|
||||
require_send(future);
|
||||
return;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn pre_008_execution_is_bounded_and_reconciles_out_of_order_durable_completions() {
|
||||
let request = match explicit_request(&['1', '2', '3', '4'], 2) {
|
||||
|
||||
Reference in New Issue
Block a user