Skip to content

Commit 17fc5da

Browse files
committed
Use BtreeMap instead of HashMap to preserve order
1 parent 7324207 commit 17fc5da

File tree

9 files changed

+32
-28
lines changed

9 files changed

+32
-28
lines changed

chain/arweave/src/chain.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use graph::{
2727
prelude::{async_trait, o, BlockNumber, ChainStore, Error, Logger, LoggerFactory},
2828
};
2929
use prost::Message;
30-
use std::collections::HashSet;
30+
use std::collections::BTreeSet;
3131
use std::sync::Arc;
3232

3333
use crate::adapter::TriggerFilter;
@@ -272,7 +272,7 @@ impl TriggersAdapterTrait<Chain> for TriggersAdapter {
272272
async fn load_block_ptrs_by_numbers(
273273
&self,
274274
_logger: Logger,
275-
_block_numbers: HashSet<BlockNumber>,
275+
_block_numbers: BTreeSet<BlockNumber>,
276276
) -> Result<Vec<ArweaveBlock>, Error> {
277277
todo!()
278278
}

chain/cosmos/src/chain.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use graph::components::adapter::ChainId;
44
use graph::env::EnvVars;
55
use graph::prelude::MetricsRegistry;
66
use graph::substreams::Clock;
7-
use std::collections::HashSet;
7+
use std::collections::BTreeSet;
88
use std::convert::TryFrom;
99
use std::sync::Arc;
1010

@@ -200,7 +200,7 @@ impl TriggersAdapterTrait<Chain> for TriggersAdapter {
200200
async fn load_block_ptrs_by_numbers(
201201
&self,
202202
_logger: Logger,
203-
_block_numbers: HashSet<BlockNumber>,
203+
_block_numbers: BTreeSet<BlockNumber>,
204204
) -> Result<Vec<Block>, Error> {
205205
todo!()
206206
}

chain/ethereum/src/chain.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ use graph::{
3939
},
4040
};
4141
use prost::Message;
42-
use std::collections::HashSet;
42+
use std::collections::{BTreeSet, HashSet};
4343
use std::future::Future;
4444
use std::iter::FromIterator;
4545
use std::sync::Arc;
@@ -747,7 +747,7 @@ pub struct TriggersAdapter {
747747
async fn fetch_unique_blocks_from_cache(
748748
logger: &Logger,
749749
chain_store: Arc<dyn ChainStore>,
750-
block_numbers: HashSet<BlockNumber>,
750+
block_numbers: BTreeSet<BlockNumber>,
751751
) -> (Vec<Arc<ExtendedBlockPtr>>, Vec<i32>) {
752752
// Load blocks from the cache
753753
let blocks_map = chain_store
@@ -795,7 +795,7 @@ async fn fetch_unique_blocks_from_cache(
795795
async fn load_blocks<F, Fut>(
796796
logger: &Logger,
797797
chain_store: Arc<dyn ChainStore>,
798-
block_numbers: HashSet<BlockNumber>,
798+
block_numbers: BTreeSet<BlockNumber>,
799799
fetch_missing: F,
800800
) -> Result<Vec<BlockFinality>>
801801
where
@@ -843,7 +843,7 @@ impl TriggersAdapterTrait<Chain> for TriggersAdapter {
843843
async fn load_block_ptrs_by_numbers(
844844
&self,
845845
logger: Logger,
846-
block_numbers: HashSet<BlockNumber>,
846+
block_numbers: BTreeSet<BlockNumber>,
847847
) -> Result<Vec<BlockFinality>> {
848848
match &*self.chain_client {
849849
ChainClient::Firehose(endpoints) => {
@@ -1200,7 +1200,6 @@ mod tests {
12001200
use graph::{slog, tokio};
12011201

12021202
use super::*;
1203-
use std::collections::HashSet;
12041203
use std::sync::Arc;
12051204

12061205
// Helper function to create test blocks
@@ -1224,7 +1223,7 @@ mod tests {
12241223
let block = create_test_block(1, "block1");
12251224
chain_store.blocks.insert(1, vec![block.clone()]);
12261225

1227-
let block_numbers: HashSet<_> = vec![1].into_iter().collect();
1226+
let block_numbers: BTreeSet<_> = vec![1].into_iter().collect();
12281227

12291228
let (blocks, missing) =
12301229
fetch_unique_blocks_from_cache(&logger, Arc::new(chain_store), block_numbers).await;
@@ -1246,7 +1245,7 @@ mod tests {
12461245
.blocks
12471246
.insert(1, vec![block1.clone(), block2.clone()]);
12481247

1249-
let block_numbers: HashSet<_> = vec![1].into_iter().collect();
1248+
let block_numbers: BTreeSet<_> = vec![1].into_iter().collect();
12501249

12511250
let (blocks, missing) =
12521251
fetch_unique_blocks_from_cache(&logger, Arc::new(chain_store), block_numbers).await;
@@ -1266,7 +1265,7 @@ mod tests {
12661265
let block = create_test_block(1, "block1");
12671266
chain_store.blocks.insert(1, vec![block.clone()]);
12681267

1269-
let block_numbers: HashSet<_> = vec![1, 2].into_iter().collect();
1268+
let block_numbers: BTreeSet<_> = vec![1, 2].into_iter().collect();
12701269

12711270
let (blocks, missing) =
12721271
fetch_unique_blocks_from_cache(&logger, Arc::new(chain_store), block_numbers).await;
@@ -1287,7 +1286,7 @@ mod tests {
12871286
chain_store.blocks.insert(1, vec![block1.clone()]);
12881287
chain_store.blocks.insert(2, vec![block2.clone()]);
12891288

1290-
let block_numbers: HashSet<_> = vec![1, 2].into_iter().collect();
1289+
let block_numbers: BTreeSet<_> = vec![1, 2].into_iter().collect();
12911290

12921291
let (blocks, missing) =
12931292
fetch_unique_blocks_from_cache(&logger, Arc::new(chain_store), block_numbers).await;
@@ -1316,7 +1315,7 @@ mod tests {
13161315
.blocks
13171316
.insert(2, vec![block2a.clone(), block2b.clone()]);
13181317

1319-
let block_numbers: HashSet<_> = vec![1, 2, 3].into_iter().collect();
1318+
let block_numbers: BTreeSet<_> = vec![1, 2, 3].into_iter().collect();
13201319

13211320
let (blocks, missing) =
13221321
fetch_unique_blocks_from_cache(&logger, Arc::new(chain_store), block_numbers).await;

chain/near/src/chain.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use graph::{
3232
prelude::{async_trait, o, BlockNumber, ChainStore, Error, Logger, LoggerFactory},
3333
};
3434
use prost::Message;
35-
use std::collections::HashSet;
35+
use std::collections::BTreeSet;
3636
use std::sync::Arc;
3737

3838
use crate::adapter::TriggerFilter;
@@ -328,7 +328,7 @@ impl TriggersAdapterTrait<Chain> for TriggersAdapter {
328328
async fn load_block_ptrs_by_numbers(
329329
&self,
330330
_logger: Logger,
331-
_block_numbers: HashSet<BlockNumber>,
331+
_block_numbers: BTreeSet<BlockNumber>,
332332
) -> Result<Vec<Block>> {
333333
unimplemented!()
334334
}

chain/starknet/src/chain.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use graph::{
3030
slog::o,
3131
};
3232
use prost::Message;
33-
use std::{collections::HashSet, sync::Arc};
33+
use std::{collections::BTreeSet, sync::Arc};
3434

3535
use crate::{
3636
adapter::TriggerFilter,
@@ -375,7 +375,7 @@ impl TriggersAdapterTrait<Chain> for TriggersAdapter {
375375
async fn load_block_ptrs_by_numbers(
376376
&self,
377377
_logger: Logger,
378-
_block_numbers: HashSet<BlockNumber>,
378+
_block_numbers: BTreeSet<BlockNumber>,
379379
) -> Result<Vec<StarknetBlock>, Error> {
380380
unimplemented!()
381381
}

chain/substreams/src/trigger.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use graph::{
1616
};
1717
use graph_runtime_wasm::module::ToAscPtr;
1818
use lazy_static::__Deref;
19-
use std::{collections::HashSet, sync::Arc};
19+
use std::{collections::BTreeSet, sync::Arc};
2020

2121
use crate::{Block, Chain, NoopDataSourceTemplate, ParsedChanges};
2222

@@ -139,7 +139,7 @@ impl blockchain::TriggersAdapter<Chain> for TriggersAdapter {
139139
async fn load_block_ptrs_by_numbers(
140140
&self,
141141
_logger: Logger,
142-
_block_numbers: HashSet<BlockNumber>,
142+
_block_numbers: BTreeSet<BlockNumber>,
143143
) -> Result<Vec<Block>, Error> {
144144
unimplemented!()
145145
}

graph/src/blockchain/block_stream.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use anyhow::Error;
77
use async_stream::stream;
88
use futures03::Stream;
99
use prost_types::Any;
10-
use std::collections::{BTreeMap, HashMap, HashSet};
10+
use std::collections::{BTreeMap, BTreeSet, HashMap};
1111
use std::fmt;
1212
use std::sync::Arc;
1313
use std::time::Instant;
@@ -357,7 +357,7 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
357357
SubgraphTriggerScanRange::Range(from, to) => {
358358
let hash_to_entities = self.fetch_entities_for_filters(filters, from, to).await?;
359359

360-
let block_numbers: HashSet<BlockNumber> = hash_to_entities
360+
let block_numbers: BTreeSet<BlockNumber> = hash_to_entities
361361
.iter()
362362
.flat_map(|(_, entities)| entities.keys().copied())
363363
.chain(std::iter::once(to))
@@ -628,7 +628,7 @@ pub trait TriggersAdapter<C: Blockchain>: Send + Sync {
628628
async fn load_block_ptrs_by_numbers(
629629
&self,
630630
logger: Logger,
631-
block_numbers: HashSet<BlockNumber>,
631+
block_numbers: BTreeSet<BlockNumber>,
632632
) -> Result<Vec<C::Block>>;
633633
}
634634

graph/src/blockchain/mock.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use serde::Deserialize;
1818
use serde_json::Value;
1919
use slog::Logger;
2020
use std::{
21-
collections::{BTreeMap, HashMap, HashSet},
21+
collections::{BTreeMap, BTreeSet, HashMap, HashSet},
2222
convert::TryFrom,
2323
sync::Arc,
2424
};
@@ -243,9 +243,14 @@ impl TriggersAdapter<MockBlockchain> for MockTriggersAdapter {
243243
async fn load_block_ptrs_by_numbers(
244244
&self,
245245
_logger: Logger,
246-
_block_numbers: HashSet<BlockNumber>,
246+
block_numbers: BTreeSet<BlockNumber>,
247247
) -> Result<Vec<MockBlock>> {
248-
unimplemented!()
248+
Ok(block_numbers
249+
.into_iter()
250+
.map(|number| MockBlock {
251+
number: number as u64,
252+
})
253+
.collect())
249254
}
250255

251256
async fn chain_head_ptr(&self) -> Result<Option<BlockPtr>, Error> {

tests/src/fixture/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pub mod ethereum;
22
pub mod substreams;
33

4-
use std::collections::{HashMap, HashSet};
4+
use std::collections::{BTreeSet, HashMap};
55
use std::marker::PhantomData;
66
use std::sync::Mutex;
77
use std::time::{Duration, Instant};
@@ -979,7 +979,7 @@ impl<C: Blockchain> TriggersAdapter<C> for MockTriggersAdapter<C> {
979979
async fn load_block_ptrs_by_numbers(
980980
&self,
981981
_logger: Logger,
982-
_block_numbers: HashSet<BlockNumber>,
982+
_block_numbers: BTreeSet<BlockNumber>,
983983
) -> Result<Vec<C::Block>, Error> {
984984
unimplemented!()
985985
}

0 commit comments

Comments
 (0)