Paginate rpc query to get feature accounts (#25978)

This commit is contained in:
Tyera Eulberg 2022-06-14 22:57:57 -06:00 committed by GitHub
parent f48d0b2b36
commit d4c4e28b5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 35 additions and 28 deletions

View File

@ -8,7 +8,9 @@ use {
serde::{Deserialize, Serialize},
solana_clap_utils::{input_parsers::*, input_validators::*, keypair::*},
solana_cli_output::{cli_version::CliVersion, QuietDisplay, VerboseDisplay},
solana_client::{client_error::ClientError, rpc_client::RpcClient},
solana_client::{
client_error::ClientError, rpc_client::RpcClient, rpc_request::MAX_MULTIPLE_ACCOUNTS,
},
solana_remote_wallet::remote_wallet::RemoteWalletManager,
solana_sdk::{
account::Account,
@ -800,8 +802,11 @@ fn process_status(
None
};
let mut inactive = false;
let mut features = rpc_client
.get_multiple_accounts(feature_ids)?
let mut features = vec![];
for feature_ids in feature_ids.chunks(MAX_MULTIPLE_ACCOUNTS) {
let mut feature_chunk = rpc_client
.get_multiple_accounts(feature_ids)
.unwrap_or_default()
.into_iter()
.zip(feature_ids)
.map(|(account, feature_id)| {
@ -829,6 +834,8 @@ fn process_status(
_ => true,
})
.collect::<Vec<_>>();
features.append(&mut feature_chunk);
}
features.sort_unstable();