solana-tokens: enable confirmation of many transactions (#13876)
* Update comment * Chunk signature status checks to handle distributions greater than 256 tx
This commit is contained in:
parent
4a4a4d8e49
commit
c59e088142
|
@ -18,6 +18,7 @@ use solana_client::{
|
||||||
client_error::{ClientError, Result as ClientResult},
|
client_error::{ClientError, Result as ClientResult},
|
||||||
rpc_client::RpcClient,
|
rpc_client::RpcClient,
|
||||||
rpc_config::RpcSendTransactionConfig,
|
rpc_config::RpcSendTransactionConfig,
|
||||||
|
rpc_request::MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS,
|
||||||
};
|
};
|
||||||
use solana_sdk::{
|
use solana_sdk::{
|
||||||
commitment_config::CommitmentConfig,
|
commitment_config::CommitmentConfig,
|
||||||
|
@ -566,15 +567,23 @@ fn update_finalized_transactions(
|
||||||
.map(|(tx, _slot)| tx.signatures[0])
|
.map(|(tx, _slot)| tx.signatures[0])
|
||||||
.filter(|sig| *sig != Signature::default()) // Filter out dry-run signatures
|
.filter(|sig| *sig != Signature::default()) // Filter out dry-run signatures
|
||||||
.collect();
|
.collect();
|
||||||
let transaction_statuses = client
|
let mut statuses = vec![];
|
||||||
.get_signature_statuses(&unconfirmed_signatures)?
|
for unconfirmed_signatures_chunk in
|
||||||
.value;
|
unconfirmed_signatures.chunks(MAX_GET_SIGNATURE_STATUSES_QUERY_ITEMS - 1)
|
||||||
|
{
|
||||||
|
statuses.extend(
|
||||||
|
client
|
||||||
|
.get_signature_statuses(&unconfirmed_signatures_chunk)?
|
||||||
|
.value
|
||||||
|
.into_iter(),
|
||||||
|
);
|
||||||
|
}
|
||||||
let root_slot = client.get_slot()?;
|
let root_slot = client.get_slot()?;
|
||||||
|
|
||||||
let mut confirmations = None;
|
let mut confirmations = None;
|
||||||
for ((transaction, last_valid_slot), opt_transaction_status) in unconfirmed_transactions
|
for ((transaction, last_valid_slot), opt_transaction_status) in unconfirmed_transactions
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.zip(transaction_statuses.into_iter())
|
.zip(statuses.into_iter())
|
||||||
{
|
{
|
||||||
match db::update_finalized_transaction(
|
match db::update_finalized_transaction(
|
||||||
db,
|
db,
|
||||||
|
|
|
@ -186,5 +186,5 @@ mod tests {
|
||||||
// async fn test_process_spl_token_transfer_amount_allocations()
|
// async fn test_process_spl_token_transfer_amount_allocations()
|
||||||
// async fn test_check_spl_token_balances()
|
// async fn test_check_spl_token_balances()
|
||||||
//
|
//
|
||||||
// TODO: link to v1.4 tests
|
// https://github.com/solana-labs/solana/blob/5511d52c6284013a24ced10966d11d8f4585799e/tokens/src/spl_token.rs#L490-L685
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue