Skip to content

Commit

Permalink
[pipelines] fix wrong zipping
Browse files Browse the repository at this point in the history
  • Loading branch information
ochaloup committed Jul 13, 2024
1 parent 90c4a9d commit ed01d2d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 31 deletions.
5 changes: 3 additions & 2 deletions common-rs/src/settlements.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<RpcClient>,
settlement_pubkeys: &[Pubkey],
Expand Down Expand Up @@ -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,
)
},
)
Expand Down
54 changes: 25 additions & 29 deletions settlement-pipelines/src/settlements.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -81,50 +82,45 @@ pub async fn list_claimable_settlements(
.collect::<Vec<_>>(),
)
.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::<Result<Vec<(Pubkey, Pubkey, SettlementClaimsBitmap)>, CliError>>()?;
}
})
.collect::<Result<Vec<(Pubkey, Settlement, Pubkey, SettlementClaimsBitmap)>, 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)
{
Expand Down

0 comments on commit ed01d2d

Please sign in to comment.