@@ -5,7 +5,6 @@ use graph::cheap_clone::CheapClone;
55use graph:: data:: subgraph:: UnifiedMappingApiVersion ;
66use graph:: prelude:: MetricsRegistry ;
77use graph:: {
8- anyhow:: anyhow,
98 blockchain:: {
109 block_stream:: {
1110 BlockStream , BlockStreamEvent , BlockWithTriggers , FirehoseError ,
@@ -106,19 +105,14 @@ impl Blockchain for Chain {
106105 . triggers_adapter ( & deployment, & NodeCapabilities { } , unified_api_version)
107106 . unwrap_or_else ( |_| panic ! ( "no adapter for network {}" , self . name) ) ;
108107
109- let firehose_endpoint = match self . firehose_endpoints . random ( ) {
110- Some ( e) => e. clone ( ) ,
111- None => return Err ( anyhow ! ( "no firehose endpoint available" , ) ) ,
112- } ;
108+ let firehose_endpoint = self . firehose_endpoints . random ( ) ?;
113109
114110 let logger = self
115111 . logger_factory
116112 . subgraph_logger ( & deployment)
117113 . new ( o ! ( "component" => "FirehoseBlockStream" ) ) ;
118114
119- let firehose_mapper = Arc :: new ( FirehoseMapper {
120- endpoint : firehose_endpoint. cheap_clone ( ) ,
121- } ) ;
115+ let firehose_mapper = Arc :: new ( FirehoseMapper { } ) ;
122116
123117 Ok ( Box :: new ( FirehoseBlockStream :: new (
124118 deployment. hash ,
@@ -154,10 +148,7 @@ impl Blockchain for Chain {
154148 logger : & Logger ,
155149 number : BlockNumber ,
156150 ) -> Result < BlockPtr , IngestorError > {
157- let firehose_endpoint = match self . firehose_endpoints . random ( ) {
158- Some ( e) => e. clone ( ) ,
159- None => return Err ( anyhow ! ( "no firehose endpoint available" ) . into ( ) ) ,
160- } ;
151+ let firehose_endpoint = self . firehose_endpoints . random ( ) ?;
161152
162153 firehose_endpoint
163154 . block_ptr_for_number :: < codec:: HeaderOnlyBlock > ( logger, number)
@@ -324,9 +315,7 @@ fn build_tx_context(tx: &codec::TxResult) -> codec::TransactionContext {
324315 }
325316}
326317
327- pub struct FirehoseMapper {
328- endpoint : Arc < FirehoseEndpoint > ,
329- }
318+ pub struct FirehoseMapper { }
330319
331320#[ async_trait]
332321impl FirehoseMapperTrait < Chain > for FirehoseMapper {
@@ -389,21 +378,22 @@ impl FirehoseMapperTrait<Chain> for FirehoseMapper {
389378 async fn block_ptr_for_number (
390379 & self ,
391380 logger : & Logger ,
381+ endpoint : & Arc < FirehoseEndpoint > ,
392382 number : BlockNumber ,
393383 ) -> Result < BlockPtr , Error > {
394- self . endpoint
384+ endpoint
395385 . block_ptr_for_number :: < codec:: HeaderOnlyBlock > ( logger, number)
396386 . await
397387 }
398388
399389 async fn final_block_ptr_for (
400390 & self ,
401391 logger : & Logger ,
392+ endpoint : & Arc < FirehoseEndpoint > ,
402393 block : & codec:: Block ,
403394 ) -> Result < BlockPtr , Error > {
404395 // Cosmos provides instant block finality.
405- self . endpoint
406- . block_ptr_for_number :: < codec:: HeaderOnlyBlock > ( logger, block. number ( ) )
396+ self . block_ptr_for_number ( logger, endpoint, block. number ( ) )
407397 . await
408398 }
409399}
0 commit comments