Skip to content

Commit 2b66a8e

Browse files
committed
detailed logs for derived query
1 parent 8fb5381 commit 2b66a8e

File tree

6 files changed

+86
-8
lines changed

6 files changed

+86
-8
lines changed

graph/src/components/store/entity_cache.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ impl EntityCache {
252252
};
253253
trace!(logger, "load_related"; "query" => format!("{:?}", query));
254254

255-
let mut entity_map = self.store.get_derived(&query)?;
255+
let mut entity_map = self.store.get_derived(logger,&query )?;
256256

257257
trace!(logger, "load_related"; "entity_map from store count" => entity_map.len());
258258

graph/src/components/store/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,6 +1040,7 @@ impl ReadStore for EmptyStore {
10401040

10411041
fn get_derived(
10421042
&self,
1043+
_logger: &Logger,
10431044
_query: &DerivedEntityQuery,
10441045
) -> Result<BTreeMap<EntityKey, Entity>, StoreError> {
10451046
Ok(BTreeMap::new())

graph/src/components/store/traits.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ pub trait ReadStore: Send + Sync + 'static {
236236
/// Reverse lookup
237237
fn get_derived(
238238
&self,
239+
logger: &Logger,
239240
query_derived: &DerivedEntityQuery,
240241
) -> Result<BTreeMap<EntityKey, Entity>, StoreError>;
241242

@@ -257,9 +258,10 @@ impl<T: ?Sized + ReadStore> ReadStore for Arc<T> {
257258

258259
fn get_derived(
259260
&self,
261+
logger: &Logger,
260262
entity_derived: &DerivedEntityQuery,
261263
) -> Result<BTreeMap<EntityKey, Entity>, StoreError> {
262-
(**self).get_derived(entity_derived)
264+
(**self).get_derived(logger, entity_derived)
263265
}
264266

265267
fn input_schema(&self) -> InputSchema {

store/postgres/src/writable.rs

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use graph::prelude::{
1818
SubgraphStore as _, BLOCK_NUMBER_MAX,
1919
};
2020
use graph::schema::{EntityKey, EntityType, InputSchema};
21-
use graph::slog::{debug, info, warn};
21+
use graph::slog::{debug, info, trace, warn};
2222
use graph::tokio::select;
2323
use graph::tokio::sync::Notify;
2424
use graph::tokio::task::JoinHandle;
@@ -355,6 +355,7 @@ impl SyncStore {
355355

356356
fn get_derived(
357357
&self,
358+
_logger: &Logger,
358359
key: &DerivedEntityQuery,
359360
block: BlockNumber,
360361
excluded_keys: Vec<EntityKey>,
@@ -1222,8 +1223,15 @@ impl Queue {
12221223

12231224
fn get_derived(
12241225
&self,
1226+
logger: &Logger,
12251227
derived_query: &DerivedEntityQuery,
12261228
) -> Result<BTreeMap<EntityKey, Entity>, StoreError> {
1229+
trace!(logger, "queue.get_derived: Starting derived entity query";
1230+
"entity_type" => derived_query.entity_type.to_string(),
1231+
"entity_field" => derived_query.entity_field.to_string(),
1232+
"value" => format!("{:?}", derived_query.value)
1233+
);
1234+
12271235
fn is_related(derived_query: &DerivedEntityQuery, entity: &Entity) -> bool {
12281236
entity
12291237
.get(&derived_query.entity_field)
@@ -1247,6 +1255,10 @@ impl Queue {
12471255
})
12481256
}
12491257

1258+
trace!(logger, "queue.get_derived: Starting queue fold operation";
1259+
"entity_type" => derived_query.entity_type.to_string()
1260+
);
1261+
12501262
// Get entities from entries in the queue
12511263
let (entities_in_queue, query_block) = BlockTracker::fold(
12521264
&self.queue,
@@ -1255,30 +1267,76 @@ impl Queue {
12551267
// Since we are going newest to oldest, do not clobber
12561268
// already existing entries in map as that would make us
12571269
// produce stale values
1270+
1271+
let before_count = map.len();
12581272
for (k, v) in effective_ops(batch, derived_query, at) {
12591273
if !map.contains_key(&k) {
12601274
map.insert(k, v);
12611275
}
12621276
}
1277+
let after_count = map.len();
1278+
1279+
trace!(logger, "queue.get_derived: Processed batch";
1280+
"entity_type" => derived_query.entity_type.to_string(),
1281+
"block_number" => at,
1282+
"new_entities_found" => (after_count - before_count),
1283+
"total_entities_in_map" => after_count
1284+
);
1285+
12631286
map
12641287
},
12651288
);
12661289

1290+
trace!(logger, "queue.get_derived: Completed queue fold operation";
1291+
"entity_type" => derived_query.entity_type.to_string(),
1292+
"entities_in_queue" => entities_in_queue.len(),
1293+
"query_block" => query_block,
1294+
1295+
);
1296+
12671297
let excluded_keys: Vec<EntityKey> = entities_in_queue.keys().cloned().collect();
1298+
trace!(logger, "queue.get_derived: Excluded keys from database query";
1299+
"entity_type" => derived_query.entity_type.to_string(),
1300+
"excluded_keys_count" => excluded_keys.len()
1301+
);
12681302

12691303
// We filter to exclude the entities ids that we already have from the queue
1304+
trace!(logger, "queue.get_derived: Querying database for derived entities";
1305+
"entity_type" => derived_query.entity_type.to_string(),
1306+
"query_block" => query_block
1307+
);
1308+
1309+
let db_query_start = Instant::now();
12701310
let mut items_from_database =
12711311
self.store
1272-
.get_derived(derived_query, query_block, excluded_keys)?;
1312+
.get_derived(logger, derived_query, query_block, excluded_keys)?;
1313+
let db_query_duration = db_query_start.elapsed();
1314+
1315+
trace!(logger, "queue.get_derived: Retrieved entities from database";
1316+
"entity_type" => derived_query.entity_type.to_string(),
1317+
"items_from_database" => items_from_database.len(),
1318+
"duration_ms" => db_query_duration.as_millis()
1319+
);
12731320

12741321
// Extend the store results with the entities from the queue.
12751322
// This overwrites any entitiy from the database with the same key from queue
12761323
let items_from_queue: BTreeMap<EntityKey, Entity> = entities_in_queue
12771324
.into_iter()
12781325
.filter_map(|(key, entity)| entity.map(|entity| (key, entity)))
12791326
.collect();
1327+
1328+
trace!(logger, "queue.get_derived: Filtered queue entities";
1329+
"entity_type" => derived_query.entity_type.to_string(),
1330+
"items_from_queue" => items_from_queue.len()
1331+
);
1332+
12801333
items_from_database.extend(items_from_queue);
12811334

1335+
trace!(logger, "queue.get_derived: Completed derived entity query";
1336+
"entity_type" => derived_query.entity_type.to_string(),
1337+
"total_entities" => items_from_database.len(),
1338+
);
1339+
12821340
Ok(items_from_database)
12831341
}
12841342

@@ -1434,11 +1492,26 @@ impl Writer {
14341492

14351493
fn get_derived(
14361494
&self,
1495+
logger: &Logger,
14371496
key: &DerivedEntityQuery,
14381497
) -> Result<BTreeMap<EntityKey, Entity>, StoreError> {
14391498
match self {
1440-
Writer::Sync(store) => store.get_derived(key, BLOCK_NUMBER_MAX, vec![]),
1441-
Writer::Async { queue, .. } => queue.get_derived(key),
1499+
Writer::Sync(store) => {
1500+
trace!(logger, "writer.get_derived: Getting derived entities using sync store";
1501+
"entity_type" => key.entity_type.to_string(),
1502+
"entity_field" => key.entity_field.to_string(),
1503+
"value" => format!("{:?}", key.value)
1504+
);
1505+
store.get_derived(logger, key, BLOCK_NUMBER_MAX, vec![])
1506+
}
1507+
Writer::Async { queue, .. } => {
1508+
trace!(logger, "writer.get_derived: Getting derived entities using async store";
1509+
"entity_type" => key.entity_type.to_string(),
1510+
"entity_field" => key.entity_field.to_string(),
1511+
"value" => format!("{:?}", key.value)
1512+
);
1513+
queue.get_derived(logger, key)
1514+
}
14421515
}
14431516
}
14441517

@@ -1562,9 +1635,10 @@ impl ReadStore for WritableStore {
15621635

15631636
fn get_derived(
15641637
&self,
1638+
logger: &Logger,
15651639
key: &DerivedEntityQuery,
15661640
) -> Result<BTreeMap<EntityKey, Entity>, StoreError> {
1567-
self.writer.get_derived(key)
1641+
self.writer.get_derived(logger, key)
15681642
}
15691643

15701644
fn input_schema(&self) -> InputSchema {

store/test-store/tests/graph/entity_cache.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ impl ReadStore for MockStore {
6868

6969
fn get_derived(
7070
&self,
71+
_logger: &Logger,
7172
_key: &DerivedEntityQuery,
7273
) -> Result<BTreeMap<EntityKey, Entity>, StoreError> {
7374
Ok(self.get_many_res.clone())

store/test-store/tests/postgres/writable.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ fn count_get_derived(writable: &dyn WritableStore) -> i32 {
279279
value: key.entity_id.clone(),
280280
causality_region: CausalityRegion::ONCHAIN,
281281
};
282-
let map = writable.get_derived(&query).unwrap();
282+
let map = writable.get_derived(&LOGGER, &query).unwrap();
283283
let counter = map.get(&key).unwrap();
284284
counter.get("count").unwrap().as_int().unwrap()
285285
}

0 commit comments

Comments
 (0)