Paginate rpc query to get feature accounts (#25978)
This commit is contained in:
parent
f48d0b2b36
commit
d4c4e28b5f
|
@ -8,7 +8,9 @@ use {
|
||||||
serde::{Deserialize, Serialize},
|
serde::{Deserialize, Serialize},
|
||||||
solana_clap_utils::{input_parsers::*, input_validators::*, keypair::*},
|
solana_clap_utils::{input_parsers::*, input_validators::*, keypair::*},
|
||||||
solana_cli_output::{cli_version::CliVersion, QuietDisplay, VerboseDisplay},
|
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_remote_wallet::remote_wallet::RemoteWalletManager,
|
||||||
solana_sdk::{
|
solana_sdk::{
|
||||||
account::Account,
|
account::Account,
|
||||||
|
@ -800,8 +802,11 @@ fn process_status(
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let mut inactive = false;
|
let mut inactive = false;
|
||||||
let mut features = rpc_client
|
let mut features = vec![];
|
||||||
.get_multiple_accounts(feature_ids)?
|
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()
|
.into_iter()
|
||||||
.zip(feature_ids)
|
.zip(feature_ids)
|
||||||
.map(|(account, feature_id)| {
|
.map(|(account, feature_id)| {
|
||||||
|
@ -829,6 +834,8 @@ fn process_status(
|
||||||
_ => true,
|
_ => true,
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
features.append(&mut feature_chunk);
|
||||||
|
}
|
||||||
|
|
||||||
features.sort_unstable();
|
features.sort_unstable();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue