Skip to content

Commit 61a4966

Browse files
apollo_gateway: move the state reader factory into the stateful validator factory (#9087)
1 parent c611730 commit 61a4966

File tree

4 files changed

+13
-17
lines changed

4 files changed

+13
-17
lines changed

crates/apollo_gateway/src/gateway.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ pub struct Gateway {
6060
pub config: Arc<GatewayConfig>,
6161
pub stateless_tx_validator: Arc<dyn StatelessTransactionValidatorTrait>,
6262
pub stateful_tx_validator_factory: Arc<dyn StatefulTransactionValidatorFactoryTrait>,
63-
pub state_reader_factory: Arc<dyn StateReaderFactory>,
6463
pub mempool_client: SharedMempoolClient,
6564
pub transaction_converter: Arc<dyn TransactionConverterTrait>,
6665
}
@@ -79,11 +78,11 @@ impl Gateway {
7978
stateful_tx_validator_factory: Arc::new(StatefulTransactionValidatorFactory {
8079
config: config.stateful_tx_validator_config.clone(),
8180
chain_info: config.chain_info.clone(),
81+
state_reader_factory,
8282
contract_class_manager: ContractClassManager::start(
8383
config.contract_class_manager_config.clone(),
8484
),
8585
}),
86-
state_reader_factory,
8786
mempool_client,
8887
transaction_converter,
8988
}
@@ -153,7 +152,7 @@ impl Gateway {
153152

154153
let mut stateful_transaction_validator = self
155154
.stateful_tx_validator_factory
156-
.instantiate_validator(self.state_reader_factory.clone())
155+
.instantiate_validator()
157156
.await
158157
.inspect_err(|e| metric_counters.record_add_tx_failure(e))?;
159158

crates/apollo_gateway/src/gateway_test.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ use crate::metrics::{
9393
LABEL_NAME_SOURCE,
9494
LABEL_NAME_TX_TYPE,
9595
};
96-
use crate::state_reader::MockStateReaderFactory;
9796
use crate::state_reader_test_utils::{local_test_state_reader_factory, TestStateReaderFactory};
9897
use crate::stateful_transaction_validator::{
9998
MockStatefulTransactionValidatorFactoryTrait,
@@ -561,15 +560,14 @@ async fn add_tx_returns_error_when_extract_state_nonce_and_run_validations_fails
561560

562561
mock_stateful_transaction_validator_factory
563562
.expect_instantiate_validator()
564-
.return_once(|_| Ok(Box::new(mock_stateful_transaction_validator)));
563+
.return_once(|| Ok(Box::new(mock_stateful_transaction_validator)));
565564

566565
let tx_args = invoke_args();
567566
setup_transaction_converter_mock(&mut mock_dependencies.mock_transaction_converter, &tx_args);
568567
let gateway = Gateway {
569568
config: Arc::new(mock_dependencies.config),
570569
stateless_tx_validator: Arc::new(mock_dependencies.mock_stateless_transaction_validator),
571570
stateful_tx_validator_factory: Arc::new(mock_stateful_transaction_validator_factory),
572-
state_reader_factory: Arc::new(MockStateReaderFactory::new()),
573571
mempool_client: Arc::new(mock_dependencies.mock_mempool_client),
574572
transaction_converter: Arc::new(mock_dependencies.mock_transaction_converter),
575573
};
@@ -614,15 +612,14 @@ async fn add_tx_returns_error_when_instantiating_validator_fails(
614612
};
615613
mock_stateful_transaction_validator_factory
616614
.expect_instantiate_validator()
617-
.return_once(|_| Err(expected_error));
615+
.return_once(|| Err(expected_error));
618616

619617
let tx_args = invoke_args();
620618
setup_transaction_converter_mock(&mut mock_dependencies.mock_transaction_converter, &tx_args);
621619
let gateway = Gateway {
622620
config: Arc::new(mock_dependencies.config),
623621
stateless_tx_validator: Arc::new(mock_dependencies.mock_stateless_transaction_validator),
624622
stateful_tx_validator_factory: Arc::new(mock_stateful_transaction_validator_factory),
625-
state_reader_factory: Arc::new(MockStateReaderFactory::new()),
626623
mempool_client: Arc::new(mock_dependencies.mock_mempool_client),
627624
transaction_converter: Arc::new(mock_dependencies.mock_transaction_converter),
628625
};

crates/apollo_gateway/src/stateful_transaction_validator.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,25 @@ type BlockifierStatefulValidator = StatefulValidator<
4949
pub trait StatefulTransactionValidatorFactoryTrait: Send + Sync {
5050
async fn instantiate_validator(
5151
&self,
52-
state_reader_factory: Arc<dyn StateReaderFactory>,
5352
) -> StatefulTransactionValidatorResult<Box<dyn StatefulTransactionValidatorTrait>>;
5453
}
54+
5555
pub struct StatefulTransactionValidatorFactory {
5656
pub config: StatefulTransactionValidatorConfig,
5757
pub chain_info: ChainInfo,
58+
pub state_reader_factory: Arc<dyn StateReaderFactory>,
5859
pub contract_class_manager: ContractClassManager,
5960
}
6061

6162
#[async_trait]
6263
impl StatefulTransactionValidatorFactoryTrait for StatefulTransactionValidatorFactory {
63-
// TODO(Ayelet): Move state_reader_factory and chain_info to the struct.
6464
async fn instantiate_validator(
6565
&self,
66-
state_reader_factory: Arc<dyn StateReaderFactory>,
6766
) -> StatefulTransactionValidatorResult<Box<dyn StatefulTransactionValidatorTrait>> {
6867
// TODO(yael 6/5/2024): consider storing the block_info as part of the
6968
// StatefulTransactionValidator and update it only once a new block is created.
70-
let (blockifier_state_reader, gateway_fixed_block_state_reader) = state_reader_factory
69+
let (blockifier_state_reader, gateway_fixed_block_state_reader) = self
70+
.state_reader_factory
7171
.get_blockifier_state_reader_and_gateway_fixed_block_from_latest_block()
7272
.await
7373
.map_err(|err| GatewaySpecError::UnexpectedError {

crates/apollo_gateway/src/stateful_transaction_validator_test.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,17 @@ async fn test_run_pre_validation_checks(
129129
#[rstest]
130130
#[tokio::test]
131131
async fn test_instantiate_validator() {
132+
let state_reader_factory =
133+
local_test_state_reader_factory(CairoVersion::Cairo1(RunnableCairo1::Casm), false);
134+
132135
let stateful_validator_factory = StatefulTransactionValidatorFactory {
133136
config: StatefulTransactionValidatorConfig::default(),
134137
chain_info: ChainInfo::create_for_testing(),
138+
state_reader_factory: Arc::new(state_reader_factory),
135139
contract_class_manager: ContractClassManager::start(ContractClassManagerConfig::default()),
136140
};
137-
let state_reader_factory =
138-
local_test_state_reader_factory(CairoVersion::Cairo1(RunnableCairo1::Casm), false);
139-
140-
let validator =
141-
stateful_validator_factory.instantiate_validator(Arc::new(state_reader_factory)).await;
142141

142+
let validator = stateful_validator_factory.instantiate_validator().await;
143143
assert!(validator.is_ok());
144144
}
145145

0 commit comments

Comments
 (0)