From 4b632d81565b2e974bd3dc506cde48a4c6fa13b7 Mon Sep 17 00:00:00 2001 From: Christien Rioux Date: Mon, 4 Mar 2024 12:24:14 -0500 Subject: [PATCH] more debugging --- .../src/rpc_processor/rpc_value_changed.rs | 5 ++-- veilid-core/src/storage_manager/debug.rs | 23 ++++++++++++++++++- .../src/storage_manager/record_store.rs | 12 ++++++++-- veilid-core/src/veilid_api/debug.rs | 5 ++++ 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/veilid-core/src/rpc_processor/rpc_value_changed.rs b/veilid-core/src/rpc_processor/rpc_value_changed.rs index 160b1022..1f34f434 100644 --- a/veilid-core/src/rpc_processor/rpc_value_changed.rs +++ b/veilid-core/src/rpc_processor/rpc_value_changed.rs @@ -69,12 +69,13 @@ impl RPCProcessor { ); let debug_string_stmt = format!( - "IN <== ValueChanged({} #{:?}+{}{}) <= {}", + "IN <== ValueChanged({} #{:?}+{}{}) from {} <= {}", key, subkeys, count, debug_string_value, - msg.header.direct_sender_node_id() + inbound_node_id, + msg.header.direct_sender_node_id(), ); log_rpc!(debug "{}", debug_string_stmt); diff --git a/veilid-core/src/storage_manager/debug.rs b/veilid-core/src/storage_manager/debug.rs index 8a8328b5..84e47a34 100644 --- a/veilid-core/src/storage_manager/debug.rs +++ b/veilid-core/src/storage_manager/debug.rs @@ -15,6 +15,18 @@ impl StorageManager { }; remote_record_store.debug_records() } + pub(crate) async fn debug_opened_records(&self) -> String { + let inner = self.inner.lock().await; + format!( + "{:#?}", + inner + .opened_records + .keys() + .copied() + .collect::>() + ) + } + pub(crate) async fn purge_local_records(&self, reclaim: Option) -> String { let mut inner = self.inner.lock().await; let Some(local_record_store) = &mut inner.local_record_store else { @@ -66,8 +78,17 @@ impl StorageManager { let Some(local_record_store) = &inner.local_record_store else { return "not initialized".to_owned(); }; - local_record_store.debug_record_info(key) + let local_debug = local_record_store.debug_record_info(key); + + let opened_debug = if let Some(o) = inner.opened_records.get(&key) { + format!("Opened Record: {:#?}\n", o) + } else { + "".to_owned() + }; + + format!("{}\n{}", local_debug, opened_debug) } + pub(crate) async fn debug_remote_record_info(&self, key: TypedKey) -> String { let inner = self.inner.lock().await; let Some(remote_record_store) = &inner.remote_record_store else { diff --git a/veilid-core/src/storage_manager/record_store.rs b/veilid-core/src/storage_manager/record_store.rs index 8330a753..32f73710 100644 --- a/veilid-core/src/storage_manager/record_store.rs +++ b/veilid-core/src/storage_manager/record_store.rs @@ -1053,8 +1053,16 @@ where } pub fn debug_record_info(&self, key: TypedKey) -> String { - self.peek_record(key, |r| format!("{:#?}", r)) - .unwrap_or("Not found".to_owned()) + let record_info = self + .peek_record(key, |r| format!("{:#?}", r)) + .unwrap_or("Not found".to_owned()); + let watched_record = match self.watched_records.get(&RecordTableKey { key }) { + Some(w) => { + format!("Remote Watches: {:#?}", w) + } + None => "No remote watches".to_owned(), + }; + format!("{}\n{}\n", record_info, watched_record) } pub async fn debug_record_subkey_info(&self, key: TypedKey, subkey: ValueSubkey) -> String { diff --git a/veilid-core/src/veilid_api/debug.rs b/veilid-core/src/veilid_api/debug.rs index aa79cd99..b9e76288 100644 --- a/veilid-core/src/veilid_api/debug.rs +++ b/veilid-core/src/veilid_api/debug.rs @@ -1388,6 +1388,11 @@ impl VeilidAPI { out += &storage_manager.debug_remote_records().await; out } + "opened" => { + let mut out = "Opened Records:\n".to_string(); + out += &storage_manager.debug_opened_records().await; + out + } _ => "Invalid scope\n".to_owned(), }; Ok(out)