From 6d93a41f4044a4eb07247bdcb57d749a250c0e77 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 14 Jun 2022 16:26:00 +0200 Subject: [PATCH] Exclude admins from collected metrics --- crates/collab/src/rpc.rs | 2 +- crates/collab/src/rpc/store.rs | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index 2204a0319c264791e78064661197c9038e9bb5df..5567472d6571aac1836160324d68cb0d34643f08 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -329,7 +329,7 @@ impl Server { { let mut store = this.store_mut().await; - store.add_connection(connection_id, user_id); + store.add_connection(connection_id, user_id, user.admin); this.peer.send(connection_id, store.build_initial_contacts_update(contacts))?; if let Some((code, count)) = invite_code { diff --git a/crates/collab/src/rpc/store.rs b/crates/collab/src/rpc/store.rs index d929078dc5f9c1f41660aac4d322caacda653abc..88b4cc80677b08dda58d2556c220621a8a46ffd4 100644 --- a/crates/collab/src/rpc/store.rs +++ b/crates/collab/src/rpc/store.rs @@ -25,6 +25,7 @@ pub struct Store { #[derive(Serialize)] struct ConnectionState { user_id: UserId, + admin: bool, projects: HashSet, requested_projects: HashSet, channels: HashSet, @@ -88,13 +89,17 @@ pub struct Metrics { impl Store { pub fn metrics(&self) -> Metrics { - let connections = self.connections.len(); + let connections = self.connections.values().filter(|c| !c.admin).count(); let mut registered_projects = 0; let mut shared_projects = 0; for project in self.projects.values() { - registered_projects += 1; - if !project.guests.is_empty() { - shared_projects += 1; + if let Some(connection) = self.connections.get(&project.host_connection_id) { + if !connection.admin { + registered_projects += 1; + if !project.guests.is_empty() { + shared_projects += 1; + } + } } } @@ -106,11 +111,12 @@ impl Store { } #[instrument(skip(self))] - pub fn add_connection(&mut self, connection_id: ConnectionId, user_id: UserId) { + pub fn add_connection(&mut self, connection_id: ConnectionId, user_id: UserId, admin: bool) { self.connections.insert( connection_id, ConnectionState { user_id, + admin, projects: Default::default(), requested_projects: Default::default(), channels: Default::default(),