diff --git a/meilisearch/src/analytics/mock_analytics.rs b/meilisearch/src/analytics/mock_analytics.rs index aa8989c3e..1687e9e19 100644 --- a/meilisearch/src/analytics/mock_analytics.rs +++ b/meilisearch/src/analytics/mock_analytics.rs @@ -85,5 +85,4 @@ impl Analytics for MockAnalytics { } fn get_fetch_documents(&self, _documents_query: &DocumentFetchKind, _request: &HttpRequest) {} fn post_fetch_documents(&self, _documents_query: &DocumentFetchKind, _request: &HttpRequest) {} - fn health_seen(&self, _request: &HttpRequest) {} } diff --git a/meilisearch/src/analytics/mod.rs b/meilisearch/src/analytics/mod.rs index d6e8f1449..09c0a05df 100644 --- a/meilisearch/src/analytics/mod.rs +++ b/meilisearch/src/analytics/mod.rs @@ -116,7 +116,4 @@ pub trait Analytics: Sync + Send { index_creation: bool, request: &HttpRequest, ); - - // this method should be called to aggregate a add documents request - fn health_seen(&self, request: &HttpRequest); } diff --git a/meilisearch/src/analytics/segment_analytics.rs b/meilisearch/src/analytics/segment_analytics.rs index 0dc471e78..8c20c82c2 100644 --- a/meilisearch/src/analytics/segment_analytics.rs +++ b/meilisearch/src/analytics/segment_analytics.rs @@ -80,7 +80,6 @@ pub enum AnalyticsMsg { AggregateUpdateDocuments(DocumentsAggregator), AggregateGetFetchDocuments(DocumentsFetchAggregator), AggregatePostFetchDocuments(DocumentsFetchAggregator), - AggregateHealth(HealthAggregator), } pub struct SegmentAnalytics { @@ -150,7 +149,6 @@ impl SegmentAnalytics { update_documents_aggregator: DocumentsAggregator::default(), get_fetch_documents_aggregator: DocumentsFetchAggregator::default(), post_fetch_documents_aggregator: DocumentsFetchAggregator::default(), - health_aggregator: HealthAggregator::default(), }); tokio::spawn(segment.run(index_scheduler.clone(), auth_controller.clone())); @@ -228,11 +226,6 @@ impl super::Analytics for SegmentAnalytics { let aggregate = DocumentsFetchAggregator::from_query(documents_query, request); let _ = self.sender.try_send(AnalyticsMsg::AggregatePostFetchDocuments(aggregate)); } - - fn health_seen(&self, request: &HttpRequest) { - let aggregate = HealthAggregator::from_query(request); - let _ = self.sender.try_send(AnalyticsMsg::AggregateHealth(aggregate)); - } } /// This structure represent the `infos` field we send in the analytics. @@ -386,7 +379,6 @@ pub struct Segment { update_documents_aggregator: DocumentsAggregator, get_fetch_documents_aggregator: DocumentsFetchAggregator, post_fetch_documents_aggregator: DocumentsFetchAggregator, - health_aggregator: HealthAggregator, } impl Segment { @@ -449,7 +441,6 @@ impl Segment { Some(AnalyticsMsg::AggregateUpdateDocuments(agreg)) => self.update_documents_aggregator.aggregate(agreg), Some(AnalyticsMsg::AggregateGetFetchDocuments(agreg)) => self.get_fetch_documents_aggregator.aggregate(agreg), Some(AnalyticsMsg::AggregatePostFetchDocuments(agreg)) => self.post_fetch_documents_aggregator.aggregate(agreg), - Some(AnalyticsMsg::AggregateHealth(agreg)) => self.health_aggregator.aggregate(agreg), None => (), } } @@ -503,7 +494,6 @@ impl Segment { update_documents_aggregator, get_fetch_documents_aggregator, post_fetch_documents_aggregator, - health_aggregator, } = self; if let Some(get_search) = @@ -551,9 +541,6 @@ impl Segment { { let _ = self.batcher.push(post_fetch_documents).await; } - if let Some(health) = take(health_aggregator).into_event(user, "Health Seen") { - let _ = self.batcher.push(health).await; - } let _ = self.batcher.flush().await; } } @@ -1489,58 +1476,6 @@ impl DocumentsDeletionAggregator { } } -#[derive(Default, Serialize)] -pub struct HealthAggregator { - #[serde(skip)] - timestamp: Option, - - // context - #[serde(rename = "user-agent")] - user_agents: HashSet, - - #[serde(rename = "requests.total_received")] - total_received: usize, -} - -impl HealthAggregator { - pub fn from_query(request: &HttpRequest) -> Self { - Self { - timestamp: Some(OffsetDateTime::now_utc()), - user_agents: extract_user_agents(request).into_iter().collect(), - total_received: 1, - } - } - - /// Aggregate one [HealthAggregator] into another. - pub fn aggregate(&mut self, other: Self) { - let Self { timestamp, user_agents, total_received } = other; - - if self.timestamp.is_none() { - self.timestamp = timestamp; - } - - // we can't create a union because there is no `into_union` method - for user_agent in user_agents { - self.user_agents.insert(user_agent); - } - self.total_received = self.total_received.saturating_add(total_received); - } - - pub fn into_event(self, user: &User, event_name: &str) -> Option { - // if we had no timestamp it means we never encountered any events and - // thus we don't need to send this event. - let timestamp = self.timestamp?; - - Some(Track { - timestamp: Some(timestamp), - user: user.clone(), - event: event_name.to_string(), - properties: serde_json::to_value(self).ok()?, - ..Default::default() - }) - } -} - #[derive(Default, Serialize)] pub struct DocumentsFetchAggregator { #[serde(skip)] diff --git a/meilisearch/src/routes/mod.rs b/meilisearch/src/routes/mod.rs index 92d4af8e2..0e6ab7765 100644 --- a/meilisearch/src/routes/mod.rs +++ b/meilisearch/src/routes/mod.rs @@ -8,11 +8,9 @@ use meilisearch_types::error::{Code, ResponseError}; use meilisearch_types::settings::{Settings, Unchecked}; use meilisearch_types::tasks::{Kind, Status, Task, TaskId}; use serde::{Deserialize, Serialize}; -use serde_json::json; use time::OffsetDateTime; use tracing::debug; -use crate::analytics::Analytics; use crate::extractors::authentication::policies::*; use crate::extractors::authentication::GuardedData; use crate::search_queue::SearchQueue; @@ -376,14 +374,10 @@ struct KeysResponse { } pub async fn get_health( - req: HttpRequest, index_scheduler: Data, auth_controller: Data, search_queue: Data, - analytics: web::Data, ) -> Result { - analytics.health_seen(&req); - search_queue.health().unwrap(); index_scheduler.health().unwrap(); auth_controller.health().unwrap();