From 54674e4b204e6bbb6f5b36fbe8529f6081c6c254 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 26 Feb 2024 09:21:53 +0100 Subject: [PATCH] keeper: fix tx size limits on charge collateral fee batching --- bin/keeper/src/crank.rs | 7 ++++++- bin/liquidator/src/liquidate.rs | 2 +- bin/liquidator/src/rebalance.rs | 2 +- lib/client/src/client.rs | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bin/keeper/src/crank.rs b/bin/keeper/src/crank.rs index b9ddbdaab..5884c6ef5 100644 --- a/bin/keeper/src/crank.rs +++ b/bin/keeper/src/crank.rs @@ -552,7 +552,12 @@ async fn send_batched_log_errors_no_confirm( current_batch.append(ixs.clone()); tx_builder.instructions = current_batch.clone().to_instructions(); - if !tx_builder.transaction_size().is_ok() || current_batch.cu > max_cu { + if tx_builder + .transaction_size() + .map(|ts| !ts.is_within_limit()) + .unwrap_or(true) + || current_batch.cu > max_cu + { tx_builder.instructions = previous_batch.to_instructions(); match tx_builder.send(client).await { Err(err) => error!("could not send transaction: {err:?}"), diff --git a/bin/liquidator/src/liquidate.rs b/bin/liquidator/src/liquidate.rs index 82854eb3d..c355aaa19 100644 --- a/bin/liquidator/src/liquidate.rs +++ b/bin/liquidator/src/liquidate.rs @@ -92,7 +92,7 @@ impl<'a> LiquidateHelper<'a> { let exceeds_cu_limit = new_ixs.cu > self.config.max_cu_per_transaction; let exceeds_size_limit = { tx_builder.instructions = new_ixs.clone().to_instructions(); - !tx_builder.transaction_size()?.is_ok() + !tx_builder.transaction_size()?.is_within_limit() }; if exceeds_cu_limit || exceeds_size_limit { break; diff --git a/bin/liquidator/src/rebalance.rs b/bin/liquidator/src/rebalance.rs index eb982ec84..6cc431dd0 100644 --- a/bin/liquidator/src/rebalance.rs +++ b/bin/liquidator/src/rebalance.rs @@ -231,7 +231,7 @@ impl Rebalancer { .prepare_swap_transaction(full) .await?; let tx_size = builder.transaction_size()?; - if tx_size.is_ok() { + if tx_size.is_within_limit() { return Ok((builder, full.clone())); } trace!( diff --git a/lib/client/src/client.rs b/lib/client/src/client.rs index 0b4d1b646..b6e3243a8 100644 --- a/lib/client/src/client.rs +++ b/lib/client/src/client.rs @@ -2233,7 +2233,7 @@ pub struct TransactionSize { } impl TransactionSize { - pub fn is_ok(&self) -> bool { + pub fn is_within_limit(&self) -> bool { let limit = Self::limit(); self.length <= limit.length && self.accounts <= limit.accounts }