@@ -2,17 +2,18 @@ use std::collections::BTreeMap;
22use std:: result;
33use std:: sync:: Arc ;
44
5- use graph:: components:: store:: * ;
5+ use graph:: components:: store:: { SubscriptionManager , UnitStream } ;
6+ use graph:: data:: graphql:: effort:: LoadManager ;
67use graph:: data:: graphql:: { object, ObjectOrInterface } ;
7- use graph:: data:: query:: Trace ;
8+ use graph:: data:: query:: { CacheStatus , Trace } ;
89use graph:: data:: value:: { Object , Word } ;
910use graph:: prelude:: * ;
1011use graph:: schema:: { ast as sast, ApiSchema , META_FIELD_TYPE } ;
1112use graph:: schema:: { ErrorPolicy , BLOCK_FIELD_TYPE } ;
1213
13- use crate :: execution:: ast as a;
14+ use crate :: execution:: { ast as a, Query } ;
1415use crate :: metrics:: GraphQLMetrics ;
15- use crate :: prelude:: * ;
16+ use crate :: prelude:: { ExecutionContext , Resolver } ;
1617use crate :: query:: ext:: BlockConstraint ;
1718use crate :: store:: query:: collect_entities_from_query_field;
1819
@@ -28,6 +29,7 @@ pub struct StoreResolver {
2829 has_non_fatal_errors : bool ,
2930 error_policy : ErrorPolicy ,
3031 graphql_metrics : Arc < GraphQLMetrics > ,
32+ load_manager : Arc < LoadManager > ,
3133}
3234
3335#[ derive( Clone , Debug ) ]
@@ -64,6 +66,7 @@ impl StoreResolver {
6466 store : Arc < dyn QueryStore > ,
6567 subscription_manager : Arc < dyn SubscriptionManager > ,
6668 graphql_metrics : Arc < GraphQLMetrics > ,
69+ load_manager : Arc < LoadManager > ,
6770 ) -> Self {
6871 StoreResolver {
6972 logger : logger. new ( o ! ( "component" => "StoreResolver" ) ) ,
@@ -76,6 +79,7 @@ impl StoreResolver {
7679 has_non_fatal_errors : false ,
7780 error_policy : ErrorPolicy :: Deny ,
7881 graphql_metrics,
82+ load_manager,
7983 }
8084 }
8185
@@ -93,6 +97,7 @@ impl StoreResolver {
9397 error_policy : ErrorPolicy ,
9498 deployment : DeploymentHash ,
9599 graphql_metrics : Arc < GraphQLMetrics > ,
100+ load_manager : Arc < LoadManager > ,
96101 ) -> Result < Self , QueryExecutionError > {
97102 let store_clone = store. cheap_clone ( ) ;
98103 let block_ptr = Self :: locate_block ( store_clone. as_ref ( ) , bc, state) . await ?;
@@ -110,6 +115,7 @@ impl StoreResolver {
110115 has_non_fatal_errors,
111116 error_policy,
112117 graphql_metrics,
118+ load_manager,
113119 } ;
114120 Ok ( resolver)
115121 }
@@ -385,4 +391,9 @@ impl Resolver for StoreResolver {
385391 }
386392 Ok ( ( ) )
387393 }
394+
395+ fn record_work ( & self , query : & Query , elapsed : Duration , cache_status : CacheStatus ) {
396+ self . load_manager
397+ . record_work ( query. shape_hash , elapsed, cache_status) ;
398+ }
388399}
0 commit comments