diff --git a/Cargo.lock b/Cargo.lock index 3dde394738..8219477ec8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4731,7 +4731,7 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nym-api" -version = "1.1.57" +version = "1.1.61" dependencies = [ "anyhow", "async-trait", @@ -6038,7 +6038,7 @@ dependencies = [ [[package]] name = "nym-network-monitor" -version = "1.1.0" +version = "1.1.4" dependencies = [ "anyhow", "axum 0.7.9", diff --git a/nym-api/Cargo.toml b/nym-api/Cargo.toml index 2e7b4cfef5..69c9a714ac 100644 --- a/nym-api/Cargo.toml +++ b/nym-api/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "nym-api" license = "GPL-3.0" -version = "1.1.60" +version = "1.1.61" authors.workspace = true edition = "2021" rust-version.workspace = true diff --git a/nym-api/src/epoch_operations/mod.rs b/nym-api/src/epoch_operations/mod.rs index 9cd776306a..c62142436b 100644 --- a/nym-api/src/epoch_operations/mod.rs +++ b/nym-api/src/epoch_operations/mod.rs @@ -195,7 +195,7 @@ impl EpochAdvancer { self.update_rewarded_set_and_advance_epoch(&nym_nodes) .await?; - info!("Purging old node statuses from the storage..."); + info!("Purging old data (node statuses and routes) from the storage..."); let cutoff = (epoch_end - 2 * ONE_DAY).unix_timestamp(); self.storage.purge_old_statuses(cutoff).await?; diff --git a/nym-api/src/support/storage/manager.rs b/nym-api/src/support/storage/manager.rs index 1b0020ea89..80ca667662 100644 --- a/nym-api/src/support/storage/manager.rs +++ b/nym-api/src/support/storage/manager.rs @@ -1198,6 +1198,22 @@ impl StorageManager { Ok(()) } + /// Removes all route monitoring results that are older than the + /// provided timestamp. This method is indirectly called at every reward cycle. + /// + /// # Arguments + /// + /// * `timestamp`: timestamp specifying the purge cutoff. + pub(super) async fn purge_old_routes( + &self, + timestamp: i64, + ) -> Result<(), sqlx::Error> { + sqlx::query!("DELETE FROM routes WHERE timestamp < ?", timestamp) + .execute(&self.connection_pool) + .await?; + Ok(()) + } + /// Returns public key, owner and id of all mixnodes that have had any statuses submitted /// within the provided time interval. /// diff --git a/nym-api/src/support/storage/mod.rs b/nym-api/src/support/storage/mod.rs index 5f0b50cd83..0618470ebb 100644 --- a/nym-api/src/support/storage/mod.rs +++ b/nym-api/src/support/storage/mod.rs @@ -943,8 +943,9 @@ impl NymApiStorage { /// * `until`: timestamp specifying the purge cutoff. pub(crate) async fn purge_old_statuses(&self, until: i64) -> Result<(), NymApiStorageError> { self.manager.purge_old_mixnode_statuses(until).await?; + self.manager.purge_old_gateway_statuses(until).await?; self.manager - .purge_old_gateway_statuses(until) + .purge_old_routes(until) .await .map_err(|err| err.into()) } diff --git a/nym-network-monitor/Cargo.toml b/nym-network-monitor/Cargo.toml index ba4ef8df41..b9d5bb5308 100644 --- a/nym-network-monitor/Cargo.toml +++ b/nym-network-monitor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-network-monitor" -version = "1.1.3" +version = "1.1.4" authors.workspace = true repository.workspace = true homepage.workspace = true diff --git a/nym-network-monitor/src/main.rs b/nym-network-monitor/src/main.rs index 65220db9cb..9d0a586149 100644 --- a/nym-network-monitor/src/main.rs +++ b/nym-network-monitor/src/main.rs @@ -175,7 +175,11 @@ async fn nym_topology_forced_all_from_env() -> anyhow::Result { let node_ids = topology .node_details() .iter() - .filter(|(_node_id, node)| node.supported_roles.mixnode) + .filter(|(_node_id, node)| { + node.supported_roles.mixnode + && !node.supported_roles.mixnet_entry + && !node.supported_roles.mixnet_exit + }) .map(|(node_id, _)| *node_id) .collect::>();