Skip to content

Commit 5f88e45

Browse files
committed
graph: TriggersAdapterWrapper.chain_head_ptr to consider head of source subgraph ptr
1 parent c17e546 commit 5f88e45

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
@@ -370,6 +370,14 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
370370
)
371371
.await?;
372372

373+
debug!(
374+
logger,
375+
"Scanned subgraph triggers";
376+
"from" => from,
377+
"to" => to,
378+
"blocks_with_triggers" => blocks_with_triggers.len(),
379+
);
380+
373381
// Ensure the 'to' block is present even if it has no triggers
374382
if !blocks_with_triggers.iter().any(|b| b.block.number() == to) {
375383
let to_block_numbers: HashSet<BlockNumber> = vec![to].into_iter().collect();
@@ -433,13 +441,23 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
433441
block: C::Block,
434442
filter: &Arc<TriggerFilterWrapper<C>>,
435443
) -> Result<BlockWithTriggers<C>, Error> {
444+
trace!(
445+
logger,
446+
"triggers_in_block";
447+
"block_number" => block.number(),
448+
"block_hash" => block.hash().hash_hex(),
449+
);
450+
436451
let block_number = block.number();
452+
437453
if filter.subgraph_filter.is_empty() {
454+
trace!(logger, "No subgraph filters, scanning triggers in block");
438455
return self
439456
.adapter
440457
.triggers_in_block(logger, block, &filter.chain_filter)
441458
.await;
442459
}
460+
443461
self.scan_triggers(logger, block_number, block_number, filter)
444462
.await
445463
.map(|(mut blocks, _)| blocks.pop().unwrap())
@@ -454,7 +472,17 @@ impl<C: Blockchain> TriggersAdapterWrapper<C> {
454472
}
455473

456474
pub async fn chain_head_ptr(&self) -> Result<Option<BlockPtr>, Error> {
457-
self.adapter.chain_head_ptr().await
475+
if self.source_subgraph_stores.is_empty() {
476+
return self.adapter.chain_head_ptr().await;
477+
}
478+
479+
let ptr = self
480+
.source_subgraph_stores
481+
.iter()
482+
.filter_map(|(_, store)| store.block_ptr())
483+
.min_by_key(|ptr| ptr.number);
484+
485+
Ok(ptr)
458486
}
459487

460488
fn create_subgraph_trigger_from_entity(

0 commit comments

Comments
 (0)