From 33cdd52332ceda48562df113422ef4742cc8df4f Mon Sep 17 00:00:00 2001 From: Leonardo Yvens Date: Mon, 15 Aug 2022 11:47:05 +0100 Subject: [PATCH] fix: Dynamic data sources hotfixes --- core/src/subgraph/instance_manager.rs | 16 ++++++---------- store/postgres/src/dynds/private.rs | 7 +++++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/core/src/subgraph/instance_manager.rs b/core/src/subgraph/instance_manager.rs index 2f618daa3e6..a8749093b04 100644 --- a/core/src/subgraph/instance_manager.rs +++ b/core/src/subgraph/instance_manager.rs @@ -4,7 +4,6 @@ use crate::subgraph::loader::load_dynamic_data_sources; use crate::subgraph::runner::SubgraphRunner; use crate::subgraph::SubgraphInstance; use graph::blockchain::block_stream::BlockStreamMetrics; -use graph::blockchain::DataSource; use graph::blockchain::NodeCapabilities; use graph::blockchain::{Blockchain, DataSourceTemplate}; use graph::blockchain::{BlockchainKind, TriggerFilter}; @@ -187,18 +186,15 @@ impl SubgraphInstanceManager { .await .context("Failed to resolve subgraph from IPFS")?; + // We cannot include static data sources in the map because a static data source and a + // template may have the same name in the manifest. + let ds_len = manifest.data_sources.len() as u32; let manifest_idx_and_name: Vec<(u32, String)> = manifest - .data_sources + .templates .iter() - .map(|ds: &C::DataSource| ds.name().to_owned()) - .chain( - manifest - .templates - .iter() - .map(|t: &C::DataSourceTemplate| t.name().to_owned()), - ) + .map(|t: &C::DataSourceTemplate| t.name().to_owned()) .enumerate() - .map(|(idx, name)| (idx as u32, name)) + .map(|(idx, name)| (ds_len + idx as u32, name)) .collect(); let data_sources = load_dynamic_data_sources( diff --git a/store/postgres/src/dynds/private.rs b/store/postgres/src/dynds/private.rs index aba5e4d19ce..3638e2efcad 100644 --- a/store/postgres/src/dynds/private.rs +++ b/store/postgres/src/dynds/private.rs @@ -96,7 +96,7 @@ impl DataSourcesTable { )) .load::(conn)?; - Ok(tuples + let mut dses: Vec<_> = tuples .into_iter() .map(|(block_range, manifest_idx, param, context)| { let creation_block = match block_range.0 { @@ -112,7 +112,10 @@ impl DataSourcesTable { creation_block, } }) - .collect()) + .collect(); + dses.sort_by_key(|v| v.creation_block); + + Ok(dses) } pub(crate) fn insert(