Skip to content

Commit b6dd10f

Browse files
authored
Merge pull request #2388 from eqlabs/krisztian/work-around-test-db-locking-problems
fix(storage): work around in-memory DB locking issues
2 parents 333ceb3 + 5d2d330 commit b6dd10f

File tree

11 files changed

+107
-17
lines changed

11 files changed

+107
-17
lines changed

crates/pathfinder/src/state/sync.rs

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,7 +1395,11 @@ mod tests {
13951395

13961396
#[tokio::test(flavor = "multi_thread")]
13971397
async fn block_updates() {
1398-
let storage = StorageBuilder::in_memory().unwrap();
1398+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1399+
pathfinder_storage::TriePruneMode::Archive,
1400+
std::num::NonZeroU32::new(5).unwrap(),
1401+
)
1402+
.unwrap();
13991403
let mut connection = storage.connection().unwrap();
14001404

14011405
let (event_tx, event_rx) = tokio::sync::mpsc::channel(100);
@@ -1444,7 +1448,11 @@ mod tests {
14441448

14451449
#[tokio::test(flavor = "multi_thread")]
14461450
async fn reorg() {
1447-
let storage = StorageBuilder::in_memory().unwrap();
1451+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1452+
pathfinder_storage::TriePruneMode::Archive,
1453+
std::num::NonZeroU32::new(5).unwrap(),
1454+
)
1455+
.unwrap();
14481456
let mut connection = storage.connection().unwrap();
14491457

14501458
let (event_tx, event_rx) = tokio::sync::mpsc::channel(100);
@@ -1496,7 +1504,11 @@ mod tests {
14961504
// A bug caused reorg'd block numbers to be skipped. This
14971505
// was due to the expected block number not being updated
14981506
// when handling the reorg.
1499-
let storage = StorageBuilder::in_memory().unwrap();
1507+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1508+
pathfinder_storage::TriePruneMode::Archive,
1509+
std::num::NonZeroU32::new(5).unwrap(),
1510+
)
1511+
.unwrap();
15001512
let mut connection = storage.connection().unwrap();
15011513

15021514
let (event_tx, event_rx) = tokio::sync::mpsc::channel(100);
@@ -1557,7 +1569,11 @@ mod tests {
15571569

15581570
#[tokio::test(flavor = "multi_thread")]
15591571
async fn reorg_to_genesis() {
1560-
let storage = StorageBuilder::in_memory().unwrap();
1572+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1573+
pathfinder_storage::TriePruneMode::Archive,
1574+
std::num::NonZeroU32::new(5).unwrap(),
1575+
)
1576+
.unwrap();
15611577
let mut connection = storage.connection().unwrap();
15621578

15631579
let (event_tx, event_rx) = tokio::sync::mpsc::channel(100);
@@ -1596,7 +1612,11 @@ mod tests {
15961612

15971613
#[tokio::test(flavor = "multi_thread")]
15981614
async fn new_cairo_contract() {
1599-
let storage = StorageBuilder::in_memory().unwrap();
1615+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1616+
pathfinder_storage::TriePruneMode::Archive,
1617+
std::num::NonZeroU32::new(5).unwrap(),
1618+
)
1619+
.unwrap();
16001620
let mut connection = storage.connection().unwrap();
16011621

16021622
let (event_tx, event_rx) = tokio::sync::mpsc::channel(1);
@@ -1635,7 +1655,11 @@ mod tests {
16351655

16361656
#[tokio::test(flavor = "multi_thread")]
16371657
async fn new_sierra_contract() {
1638-
let storage = StorageBuilder::in_memory().unwrap();
1658+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1659+
pathfinder_storage::TriePruneMode::Archive,
1660+
std::num::NonZeroU32::new(5).unwrap(),
1661+
)
1662+
.unwrap();
16391663
let mut connection = storage.connection().unwrap();
16401664

16411665
let (event_tx, event_rx) = tokio::sync::mpsc::channel(1);
@@ -1676,7 +1700,11 @@ mod tests {
16761700

16771701
#[tokio::test(flavor = "multi_thread")]
16781702
async fn consumer_should_ignore_duplicate_blocks() {
1679-
let storage = StorageBuilder::in_memory().unwrap();
1703+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1704+
pathfinder_storage::TriePruneMode::Archive,
1705+
std::num::NonZeroU32::new(5).unwrap(),
1706+
)
1707+
.unwrap();
16801708

16811709
let (event_tx, event_rx) = tokio::sync::mpsc::channel(5);
16821710

crates/pathfinder/src/state/sync/l2.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,6 +1171,7 @@ async fn reorg(
11711171
#[cfg(test)]
11721172
mod tests {
11731173
mod sync {
1174+
use std::num::NonZeroU32;
11741175
use std::sync::LazyLock;
11751176

11761177
use assert_matches::assert_matches;
@@ -1330,7 +1331,11 @@ mod tests {
13301331
tx_event: mpsc::Sender<SyncEvent>,
13311332
sequencer: MockGatewayApi,
13321333
) -> JoinHandle<anyhow::Result<()>> {
1333-
let storage = StorageBuilder::in_memory().unwrap();
1334+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1335+
pathfinder_storage::TriePruneMode::Archive,
1336+
NonZeroU32::new(5).unwrap(),
1337+
)
1338+
.unwrap();
13341339
let sequencer = std::sync::Arc::new(sequencer);
13351340
let context = L2SyncContext {
13361341
sequencer,
@@ -1358,7 +1363,11 @@ mod tests {
13581363
tx_event: mpsc::Sender<SyncEvent>,
13591364
sequencer: MockGatewayApi,
13601365
) -> JoinHandle<anyhow::Result<Option<(BlockNumber, BlockHash, StateCommitment)>>> {
1361-
let storage = StorageBuilder::in_memory().unwrap();
1366+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1367+
pathfinder_storage::TriePruneMode::Archive,
1368+
NonZeroU32::new(5).unwrap(),
1369+
)
1370+
.unwrap();
13621371
let sequencer = std::sync::Arc::new(sequencer);
13631372
let context = L2SyncContext {
13641373
sequencer,
@@ -1844,7 +1853,11 @@ mod tests {
18441853
chain: Chain::SepoliaTestnet,
18451854
chain_id: ChainId::SEPOLIA_TESTNET,
18461855
block_validation_mode: MODE,
1847-
storage: StorageBuilder::in_memory().unwrap(),
1856+
storage: StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1857+
pathfinder_storage::TriePruneMode::Archive,
1858+
NonZeroU32::new(5).unwrap(),
1859+
)
1860+
.unwrap(),
18481861
sequencer_public_key: PublicKey::ZERO,
18491862
fetch_concurrency: std::num::NonZeroUsize::new(1).unwrap(),
18501863
fetch_casm_from_fgw: false,

crates/pathfinder/src/sync/checkpoint.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,11 @@ mod tests {
815815
.map(PeerData::for_tests)
816816
.collect::<Vec<_>>(),
817817
expected_headers,
818-
storage: StorageBuilder::in_memory().unwrap(),
818+
storage: StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
819+
pathfinder_storage::TriePruneMode::Archive,
820+
std::num::NonZeroU32::new(5).unwrap(),
821+
)
822+
.unwrap(),
819823
// https://alpha-sepolia.starknet.io/feeder_gateway/get_public_key
820824
public_key: public_key!(
821825
"0x1252b6bce1351844c677869c6327e80eae1535755b611c66b8f46e595b40eea"
@@ -1051,7 +1055,11 @@ mod tests {
10511055
b.transaction_data = Default::default();
10521056
});
10531057

1054-
let storage = StorageBuilder::in_memory().unwrap();
1058+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1059+
pathfinder_storage::TriePruneMode::Archive,
1060+
std::num::NonZeroU32::new(5).unwrap(),
1061+
)
1062+
.unwrap();
10551063
fake_storage::fill(&storage, &blocks);
10561064
Setup {
10571065
streamed_transactions,
@@ -1087,7 +1095,11 @@ mod tests {
10871095
b.transaction_data = Default::default();
10881096
});
10891097

1090-
let storage = StorageBuilder::in_memory().unwrap();
1098+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1099+
pathfinder_storage::TriePruneMode::Archive,
1100+
std::num::NonZeroU32::new(5).unwrap(),
1101+
)
1102+
.unwrap();
10911103
fake_storage::fill(&storage, &blocks);
10921104
Setup {
10931105
streamed_transactions,
@@ -1272,7 +1284,11 @@ mod tests {
12721284
})
12731285
.collect::<Vec<_>>();
12741286

1275-
let storage = StorageBuilder::in_memory().unwrap();
1287+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
1288+
pathfinder_storage::TriePruneMode::Archive,
1289+
std::num::NonZeroU32::new(5).unwrap(),
1290+
)
1291+
.unwrap();
12761292
fake_storage::fill(&storage, &blocks);
12771293
Setup {
12781294
streamed_state_diffs,

crates/pathfinder/src/sync/track.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,7 +928,11 @@ mod tests {
928928
blocks: blocks.clone(),
929929
};
930930

931-
let storage = StorageBuilder::in_memory().unwrap();
931+
let storage = StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
932+
pathfinder_storage::TriePruneMode::Archive,
933+
std::num::NonZeroU32::new(5).unwrap(),
934+
)
935+
.unwrap();
932936

933937
let sync = Sync {
934938
latest: futures::stream::iter(vec![latest]),

crates/rpc/src/method/call.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ mod tests {
294294
.unwrap();
295295

296296
tx.commit().unwrap();
297+
drop(db);
297298

298299
let context =
299300
RpcContext::for_tests_on(pathfinder_common::Chain::Mainnet).with_storage(storage);
@@ -501,6 +502,7 @@ mod tests {
501502
tx.insert_state_update(block_number, &state_update).unwrap();
502503

503504
tx.commit().unwrap();
505+
drop(connection);
504506

505507
let input = Input {
506508
request: FunctionCall {

crates/rpc/src/pathfinder/methods/get_proof.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,7 @@ mod tests {
468468
)
469469
.unwrap();
470470
tx.commit().unwrap();
471+
drop(conn);
471472

472473
let input = GetProofInput {
473474
block_id: BlockId::Latest,

crates/rpc/src/test_setup.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ pub async fn test_storage<F: FnOnce(StateUpdate) -> StateUpdate>(
2020
version: StarknetVersion,
2121
customize_state_update: F,
2222
) -> (Storage, BlockHeader, ContractAddress, ContractAddress) {
23-
let storage = pathfinder_storage::StorageBuilder::in_memory().unwrap();
23+
let storage = pathfinder_storage::StorageBuilder::in_memory_with_trie_pruning_and_pool_size(
24+
pathfinder_storage::TriePruneMode::Archive,
25+
std::num::NonZeroU32::new(2).unwrap(),
26+
)
27+
.unwrap();
2428
let mut db = storage.connection().unwrap();
2529
let tx = db.transaction().unwrap();
2630

crates/rpc/src/v06/method/call.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ mod tests {
275275
.unwrap();
276276

277277
tx.commit().unwrap();
278+
drop(db);
278279

279280
let context =
280281
RpcContext::for_tests_on(pathfinder_common::Chain::Mainnet).with_storage(storage);
@@ -484,6 +485,7 @@ mod tests {
484485
tx.insert_state_update(block_number, &state_update).unwrap();
485486

486487
tx.commit().unwrap();
488+
drop(connection);
487489

488490
let input = CallInput {
489491
request: FunctionCall {

crates/rpc/src/v06/method/trace_block_transactions.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,7 @@ pub(crate) mod tests {
713713
.insert_transaction_data(header.number, &transactions_data, Some(&events_data))
714714
.unwrap();
715715
transaction.commit().unwrap();
716+
drop(connection);
716717

717718
// The tracing succeeds.
718719
trace_block_transactions(

crates/rpc/src/v06/method/trace_transaction.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,7 @@ pub mod tests {
385385
.insert_transaction_data(header.number, &transactions_data, Some(&events_data))
386386
.unwrap();
387387
transaction.commit().unwrap();
388+
drop(connection);
388389

389390
// The tracing succeeds.
390391
trace_transaction(

0 commit comments

Comments
 (0)