@@ -372,6 +372,14 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
372372 )
373373 . await ?;
374374
375+ debug ! (
376+ logger,
377+ "Scanned subgraph triggers" ;
378+ "from" => from,
379+ "to" => to,
380+ "blocks_with_triggers" => blocks_with_triggers. len( ) ,
381+ ) ;
382+
375383 // Ensure the 'to' block is present even if it has no triggers
376384 if !blocks_with_triggers. iter ( ) . any ( |b| b. block . number ( ) == to) {
377385 let to_block_numbers: HashSet < BlockNumber > = vec ! [ to] . into_iter ( ) . collect ( ) ;
@@ -401,13 +409,23 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
401409 block : C :: Block ,
402410 filter : & Arc < TriggerFilterWrapper < C > > ,
403411 ) -> Result < BlockWithTriggers < C > , Error > {
412+ trace ! (
413+ logger,
414+ "triggers_in_block" ;
415+ "block_number" => block. number( ) ,
416+ "block_hash" => block. hash( ) . hash_hex( ) ,
417+ ) ;
418+
404419 let block_number = block. number ( ) ;
420+
405421 if filter. subgraph_filter . is_empty ( ) {
422+ trace ! ( logger, "No subgraph filters, scanning triggers in block" ) ;
406423 return self
407424 . adapter
408425 . triggers_in_block ( logger, block, & filter. chain_filter )
409426 . await ;
410427 }
428+
411429 self . scan_triggers ( logger, block_number, block_number, filter)
412430 . await
413431 . map ( |( mut blocks, _) | blocks. pop ( ) . unwrap ( ) )
@@ -422,7 +440,17 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
422440 }
423441
424442 pub async fn chain_head_ptr ( & self ) -> Result < Option < BlockPtr > , Error > {
425- self . adapter . chain_head_ptr ( ) . await
443+ if self . source_subgraph_stores . is_empty ( ) {
444+ return self . adapter . chain_head_ptr ( ) . await ;
445+ }
446+
447+ let ptr = self
448+ . source_subgraph_stores
449+ . iter ( )
450+ . filter_map ( |( _, store) | store. block_ptr ( ) )
451+ . min_by_key ( |ptr| ptr. number ) ;
452+
453+ Ok ( ptr)
426454 }
427455 async fn subgraph_triggers (
428456 & self ,
0 commit comments