From ed01d2d7046287cfc20b035e2d3d5ce11971479b Mon Sep 17 00:00:00 2001 From: Ondra Chaloupka Date: Sat, 13 Jul 2024 22:32:53 +0200 Subject: [PATCH] [pipelines] fix wrong zipping --- common-rs/src/settlements.rs | 5 ++- settlement-pipelines/src/settlements.rs | 54 ++++++++++++------------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/common-rs/src/settlements.rs b/common-rs/src/settlements.rs index 6dfa4557..0550e432 100644 --- a/common-rs/src/settlements.rs +++ b/common-rs/src/settlements.rs @@ -83,6 +83,7 @@ pub async fn get_settlements_for_pubkeys( get_accounts_for_pubkeys(rpc_client, pubkeys).await } +/// settlement address, settlement claims address, settlement claims bitmap pub async fn get_settlement_claims_for_settlement_pubkeys( rpc_client: Arc, settlement_pubkeys: &[Pubkey], @@ -111,11 +112,11 @@ pub async fn get_settlement_claims_for_settlement_pubkeys( .iter() .zip(settlement_claims.into_iter()) .map( - |(settlement_pubkey, (settlement_claims_pubkey, settlement_claims))| { + |(settlement_pubkey, (settlement_claims_pubkey, settlement_claims_bitmap))| { ( *settlement_pubkey, settlement_claims_pubkey, - settlement_claims, + settlement_claims_bitmap, ) }, ) diff --git a/settlement-pipelines/src/settlements.rs b/settlement-pipelines/src/settlements.rs index 55a42a08..8167a488 100644 --- a/settlement-pipelines/src/settlements.rs +++ b/settlement-pipelines/src/settlements.rs @@ -73,6 +73,7 @@ pub async fn list_claimable_settlements( stake_accounts.len() ); + // settlement addr, settlement claims addr, bitmap let claimable_settlement_claims = get_settlement_claims_for_settlement_pubkeys( rpc_client.clone(), &claimable_settlements @@ -81,50 +82,45 @@ pub async fn list_claimable_settlements( .collect::>(), ) .await - .map_err(CliError::RetryAble)?; - let claimable_settlement_claims: Vec<(Pubkey, Pubkey, SettlementClaimsBitmap)> = - claimable_settlement_claims - .into_iter() - .zip(claimable_settlements.iter()) - .filter_map(|((settlement_pubkey, claims_pubkey, claims), (_, settlement))| { - if let Some(claims) = claims { - Some(Ok((settlement_pubkey, claims_pubkey, claims))) + .map_err(CliError::RetryAble)? + .into_iter().zip(claimable_settlements.into_iter()) + .filter_map(|((settlement_pubkey, claims_pubkey, claims), (s_addr, settlement))| + { + assert_eq!(settlement_pubkey, s_addr); + if let Some(claims) = claims { + Some(Ok((settlement_pubkey, settlement, claims_pubkey, claims))) + } else { + let error_msg = format!("[list_claimable]: No SettlementClaims account {} for an existing Settlement {}/epoch {}", + claims_pubkey, + settlement_pubkey, + settlement.epoch_created_for + ); + if settlement.epoch_created_for < CONTRACT_V2_DEPLOYMENT_EPOCH { + info!("{}", error_msg); + None } else { - let error_msg = format!("[list_claimable]: No SettlementClaims account {} for an existing Settlement {}", - claims_pubkey, - settlement_pubkey - ); - if settlement.epoch_created_for < CONTRACT_V2_DEPLOYMENT_EPOCH { - info!("{}", error_msg); - None - } else { - Some(Err(CliError::Processing(anyhow!("CRITICAL {}", error_msg)))) - } + Some(Err(CliError::Processing(anyhow!("CRITICAL {}", error_msg)))) } - }) - .collect::, CliError>>()?; + } + }) + .collect::, CliError>>()?; let claimable_stakes = obtain_claimable_stake_accounts_for_settlement( stake_accounts, config_address, - claimable_settlements + claimable_settlement_claims .iter() - .map(|(pubkey, _)| *pubkey) + .map(|(settlement_pubkey, _, _, _)| *settlement_pubkey) .collect(), rpc_client.clone(), ) .await .map_err(CliError::RetryAble)?; - let results = claimable_settlements + let results = claimable_settlement_claims .into_iter() - .zip(claimable_settlement_claims.into_iter()) .filter_map( - |( - (settlement_address, settlement), - (sa, settlement_claims_address, settlement_claims), - )| { - assert_eq!(settlement_address, sa); + |(settlement_address, settlement, settlement_claims_address, settlement_claims)| { if let Some((stake_accounts_lamports, stake_accounts)) = claimable_stakes.get(&settlement_address) {