Skip to content

Commit 80d916e

Browse files
committed
all: Make LoadManager and argument to GraphQlRunner::new
1 parent 5f52a9b commit 80d916e

File tree

5 files changed

+28
-27
lines changed

5 files changed

+28
-27
lines changed

graph/src/data/graphql/effort.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
//! Utilities to keep moving statistics about queries
22
3+
use graphql_parser::query as q;
4+
use lazy_static::lazy_static;
35
use rand::{prelude::Rng, thread_rng};
46
use std::collections::{HashMap, HashSet};
57
use std::env;
68
use std::str::FromStr;
79
use std::sync::{Arc, RwLock};
810
use std::time::{Duration, Instant};
911

10-
use lazy_static::lazy_static;
11-
1212
use crate::components::store::PoolWaitStats;
13-
use crate::prelude::{info, warn, Logger};
13+
use crate::data::graphql::shape_hash::shape_hash;
14+
use crate::prelude::{info, o, warn, Logger};
1415
use crate::util::stats::{MovingStats, BIN_SIZE, WINDOW_SIZE};
1516

1617
lazy_static! {
@@ -198,10 +199,15 @@ pub struct LoadManager {
198199

199200
impl LoadManager {
200201
pub fn new(
201-
logger: Logger,
202+
logger: &Logger,
202203
store_wait_stats: PoolWaitStats,
203-
blocked_queries: HashSet<u64>,
204+
blocked_queries: Vec<Arc<q::Document>>,
204205
) -> Self {
206+
let logger = logger.new(o!("component" => "LoadManager"));
207+
let blocked_queries = blocked_queries
208+
.into_iter()
209+
.map(|doc| shape_hash(&doc))
210+
.collect::<HashSet<_>>();
205211
info!(
206212
logger,
207213
"Creating LoadManager with disabled={}", *LOAD_MANAGEMENT_DISABLED,

graphql/src/runner.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use futures01::future;
22
use graphql_parser::query as q;
3-
use std::collections::{BTreeMap, HashSet};
3+
use std::collections::BTreeMap;
44
use std::env;
55
use std::str::FromStr;
66
use std::sync::Arc;
@@ -13,10 +13,9 @@ use crate::query::execute_query;
1313
use crate::subscription::execute_prepared_subscription;
1414
use graph::data::graphql::effort::LoadManager;
1515
use graph::prelude::{
16-
o, shape_hash, EthereumBlockPointer, GraphQlRunner as GraphQlRunnerTrait, Logger,
17-
PoolWaitStats, Query, QueryExecutionError, QueryResult, QueryResultFuture, Store, StoreError,
18-
SubgraphDeploymentId, SubgraphDeploymentStore, Subscription, SubscriptionError,
19-
SubscriptionResultFuture,
16+
o, EthereumBlockPointer, GraphQlRunner as GraphQlRunnerTrait, Logger, Query,
17+
QueryExecutionError, QueryResult, QueryResultFuture, Store, StoreError, SubgraphDeploymentId,
18+
SubgraphDeploymentStore, Subscription, SubscriptionError, SubscriptionResultFuture,
2019
};
2120

2221
use lazy_static::lazy_static;
@@ -56,22 +55,12 @@ where
5655
S: Store + SubgraphDeploymentStore,
5756
{
5857
/// Creates a new query runner.
59-
pub fn new(
60-
logger: &Logger,
61-
store: Arc<S>,
62-
expensive: &Vec<Arc<q::Document>>,
63-
store_wait_stats: PoolWaitStats,
64-
) -> Self {
65-
let expensive = expensive
66-
.into_iter()
67-
.map(|doc| shape_hash(&doc))
68-
.collect::<HashSet<_>>();
58+
pub fn new(logger: &Logger, store: Arc<S>, load_manager: Arc<LoadManager>) -> Self {
6959
let logger = logger.new(o!("component" => "GraphQlRunner"));
70-
let load_logger = logger.new(o!("component" => "LoadManager"));
7160
GraphQlRunner {
7261
logger,
7362
store,
74-
load_manager: Arc::new(LoadManager::new(load_logger, store_wait_stats, expensive)),
63+
load_manager,
7564
}
7665
}
7766

graphql/tests/query.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::iter::FromIterator;
88
use std::sync::{Arc, RwLock};
99
use std::time::{Duration, Instant};
1010

11+
use graph::data::graphql::effort::LoadManager;
1112
use graph::prelude::{
1213
futures03::stream::StreamExt, futures03::FutureExt, futures03::TryFutureExt, o, slog, tokio,
1314
Entity, EntityKey, EntityOperation, EthereumBlockPointer, FutureExtension, Logger, MovingStats,
@@ -231,7 +232,8 @@ fn execute_query_document_with_variables(
231232
variables: Option<QueryVariables>,
232233
) -> QueryResult {
233234
let stats = Arc::new(RwLock::new(MovingStats::default()));
234-
let runner = GraphQlRunner::new(&*LOGGER, STORE.clone(), &vec![], stats);
235+
let load_manager = Arc::new(LoadManager::new(&*LOGGER, stats, vec![]));
236+
let runner = GraphQlRunner::new(&*LOGGER, STORE.clone(), load_manager);
235237
let query = Query::new(Arc::new(api_test_schema()), query, variables);
236238

237239
return_err!(runner.execute(query, None, None, None))

node/src/main.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use std::time::Duration;
1313
use tokio::sync::mpsc;
1414

1515
use graph::components::forward;
16+
use graph::data::graphql::effort::LoadManager;
1617
use graph::log::logger;
1718
use graph::prelude::{
1819
EthereumAdapter as EthereumAdapterTrait, IndexNodeServer as _, JsonRpcServer as _, *,
@@ -588,11 +589,15 @@ async fn main() {
588589
.and_then(move |stores| {
589590
let generic_store = stores.values().next().expect("error creating stores");
590591

592+
let load_manager = Arc::new(LoadManager::new(
593+
&logger,
594+
wait_stats.clone(),
595+
expensive_queries,
596+
));
591597
let graphql_runner = Arc::new(GraphQlRunner::new(
592598
&logger,
593599
generic_store.clone(),
594-
&expensive_queries,
595-
wait_stats.clone(),
600+
load_manager,
596601
));
597602
let mut graphql_server = GraphQLQueryServer::new(
598603
&logger_factory,

store/test-store/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use graph_store_postgres::{ChainHeadUpdateListener, Store, StoreConfig, Subscrip
1414
use graphql_parser::query as q;
1515
use hex_literal::hex;
1616
use lazy_static::lazy_static;
17-
use std::collections::HashSet;
1817
use std::env;
1918
use std::sync::{Mutex, RwLock};
2019
use std::time::Instant;
@@ -40,7 +39,7 @@ lazy_static! {
4039

4140
pub static ref POOL_WAIT_STATS: PoolWaitStats = Arc::new(RwLock::new(MovingStats::default()));
4241

43-
pub static ref LOAD_MANAGER: Arc<LoadManager> = Arc::new(LoadManager::new(LOGGER.clone(), POOL_WAIT_STATS.clone(), HashSet::default()));
42+
pub static ref LOAD_MANAGER: Arc<LoadManager> = Arc::new(LoadManager::new(&*LOGGER, POOL_WAIT_STATS.clone(), Vec::new()));
4443

4544
// Create Store instance once for use with each of the tests.
4645
pub static ref STORE: Arc<Store> = {

0 commit comments

Comments
 (0)