From 5c879ccc49a0b63be7bcfdbb2c5f7918d5b40dcd Mon Sep 17 00:00:00 2001 From: Kishore Nallan Date: Fri, 15 Sep 2023 11:43:29 +0530 Subject: [PATCH] Fix analytics aggregstion with interval > 60s --- include/analytics_manager.h | 2 +- src/analytics_manager.cpp | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/analytics_manager.h b/include/analytics_manager.h index 0f098a7a..3e566805 100644 --- a/include/analytics_manager.h +++ b/include/analytics_manager.h @@ -14,7 +14,7 @@ private: std::atomic quit = false; - const size_t QUERY_COMPACTION_INTERVAL_S = 60; + const size_t QUERY_COMPACTION_INTERVAL_S = 30; struct suggestion_config_t { std::string name; diff --git a/src/analytics_manager.cpp b/src/analytics_manager.cpp index 31ac078a..d4e76725 100644 --- a/src/analytics_manager.cpp +++ b/src/analytics_manager.cpp @@ -233,6 +233,15 @@ void AnalyticsManager::run(ReplicationState* raft_server) { break; } + auto now_ts_seconds = std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()).count(); + + if(now_ts_seconds - prev_persistence_s < Config::get_instance().get_analytics_flush_interval()) { + // we will persist aggregation every hour + // LOG(INFO) << "QuerySuggestions::run interval is less, continuing"; + continue; + } + persist_suggestions(raft_server, prev_persistence_s); prev_persistence_s = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()).count(); @@ -264,13 +273,6 @@ void AnalyticsManager::persist_suggestions(ReplicationState *raft_server, uint64 auto now_ts_us = std::chrono::duration_cast(now).count(); popularQueries->compact_user_queries(now_ts_us); - auto now_ts_seconds = std::chrono::duration_cast(now).count(); - - if(now_ts_seconds - prev_persistence_s < Config::get_instance().get_analytics_flush_interval()) { - // we will persist aggregation every hour - continue; - } - std::string import_payload; popularQueries->serialize_as_docs(import_payload);