Skip to content

Commit 6b83c3d

Browse files
committed
graph: TriggersAdapterWrapper.chain_head_ptr to consider head of source subgraph ptr
1 parent de45d5a commit 6b83c3d

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
@@ -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

Comments
 (0)