@@ -369,6 +369,14 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
369369 )
370370 . await ?;
371371
372+ debug ! (
373+ logger,
374+ "Scanned subgraph triggers" ;
375+ "from" => from,
376+ "to" => to,
377+ "blocks_with_triggers" => blocks_with_triggers. len( ) ,
378+ ) ;
379+
372380 // Ensure the 'to' block is present even if it has no triggers
373381 if !blocks_with_triggers. iter ( ) . any ( |b| b. block . number ( ) == to) {
374382 let to_block_numbers: HashSet < BlockNumber > = vec ! [ to] . into_iter ( ) . collect ( ) ;
@@ -398,13 +406,23 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
398406 block : C :: Block ,
399407 filter : & Arc < TriggerFilterWrapper < C > > ,
400408 ) -> Result < BlockWithTriggers < C > , Error > {
409+ trace ! (
410+ logger,
411+ "triggers_in_block" ;
412+ "block_number" => block. number( ) ,
413+ "block_hash" => block. hash( ) . hash_hex( ) ,
414+ ) ;
415+
401416 let block_number = block. number ( ) ;
417+
402418 if filter. subgraph_filter . is_empty ( ) {
419+ trace ! ( logger, "No subgraph filters, scanning triggers in block" ) ;
403420 return self
404421 . adapter
405422 . triggers_in_block ( logger, block, & filter. chain_filter )
406423 . await ;
407424 }
425+
408426 self . scan_triggers ( logger, block_number, block_number, filter)
409427 . await
410428 . map ( |( mut blocks, _) | blocks. pop ( ) . unwrap ( ) )
@@ -419,7 +437,17 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
419437 }
420438
421439 pub async fn chain_head_ptr ( & self ) -> Result < Option < BlockPtr > , Error > {
422- self . adapter . chain_head_ptr ( ) . await
440+ if self . source_subgraph_stores . is_empty ( ) {
441+ return self . adapter . chain_head_ptr ( ) . await ;
442+ }
443+
444+ let ptr = self
445+ . source_subgraph_stores
446+ . iter ( )
447+ . filter_map ( |( _, store) | store. block_ptr ( ) )
448+ . min_by_key ( |ptr| ptr. number ) ;
449+
450+ Ok ( ptr)
423451 }
424452 async fn subgraph_triggers (
425453 & self ,
0 commit comments