Skip to content

Commit 2ea4f31

Browse files
committed
graph: TriggersAdapterWrapper.chain_head_ptr to consider head of source subgraph ptr
1 parent 0e6dd27 commit 2ea4f31

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

graph/src/blockchain/block_stream.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)