Add db ping to player events processor, move back into main thread

This commit is contained in:
Chris Miles
2025-05-21 20:28:19 -05:00
parent 77cf590b55
commit e98adfd81d
3 changed files with 14 additions and 13 deletions
+5 -1
View File
@@ -15,9 +15,9 @@ const uint32 PROCESS_RETENTION_TRUNCATION_TIMER_INTERVAL = 60 * 60 * 1000; // 1
// general initialization routine // general initialization routine
void PlayerEventLogs::Init() void PlayerEventLogs::Init()
{ {
m_process_batch_events_timer.SetTimer(RuleI(Logging, BatchPlayerEventProcessIntervalSeconds) * 1000); m_process_batch_events_timer.SetTimer(RuleI(Logging, BatchPlayerEventProcessIntervalSeconds) * 1000);
m_process_retention_truncation_timer.SetTimer(PROCESS_RETENTION_TRUNCATION_TIMER_INTERVAL); m_process_retention_truncation_timer.SetTimer(PROCESS_RETENTION_TRUNCATION_TIMER_INTERVAL);
m_database_ping_timer.SetTimer(10 * 1000); // 10 seconds
ValidateDatabaseConnection(); ValidateDatabaseConnection();
@@ -916,6 +916,10 @@ std::string PlayerEventLogs::GetDiscordPayloadFromEvent(const PlayerEvent::Playe
// general process function, used in world or QS depending on rule Logging:PlayerEventsQSProcess // general process function, used in world or QS depending on rule Logging:PlayerEventsQSProcess
void PlayerEventLogs::Process() void PlayerEventLogs::Process()
{ {
if (m_database_ping_timer.Check()) {
m_database->ping();
}
if (m_process_batch_events_timer.Check() || if (m_process_batch_events_timer.Check() ||
m_record_batch_queue.size() >= RuleI(Logging, BatchPlayerEventProcessChunkSize)) { m_record_batch_queue.size() >= RuleI(Logging, BatchPlayerEventProcessChunkSize)) {
ProcessBatchQueue(); ProcessBatchQueue();
+1
View File
@@ -113,6 +113,7 @@ private:
std::map<PlayerEvent::EventType, EtlSettings> m_etl_settings{}; std::map<PlayerEvent::EventType, EtlSettings> m_etl_settings{};
// timers // timers
Timer m_database_ping_timer; // database ping timer
Timer m_process_batch_events_timer; // events processing timer Timer m_process_batch_events_timer; // events processing timer
Timer m_process_retention_truncation_timer; // timer for truncating events based on retention settings Timer m_process_retention_truncation_timer; // timer for truncating events based on retention settings
+8 -12
View File
@@ -182,7 +182,8 @@ int main(int argc, char **argv)
EQTimeTimer.Start(600000); EQTimeTimer.Start(600000);
Timer parcel_prune_timer(86400000); Timer parcel_prune_timer(86400000);
parcel_prune_timer.Start(86400000); parcel_prune_timer.Start(86400000);
Timer player_event_log_process(1000);
player_event_log_process.Start(1000);
// global loads // global loads
LogInfo("Loading launcher list"); LogInfo("Loading launcher list");
@@ -385,15 +386,6 @@ int main(int argc, char **argv)
player_event_logs.Init(); player_event_logs.Init();
} }
auto event_log_processor = std::jthread([](const std::stop_token& stoken) {
while (!stoken.stop_requested()) {
if (!RuleB(Logging, PlayerEventsQSProcess)) {
player_event_logs.Process();
}
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
});
auto loop_fn = [&](EQ::Timer* t) { auto loop_fn = [&](EQ::Timer* t) {
Timer::SetCurrentTime(); Timer::SetCurrentTime();
@@ -487,6 +479,12 @@ int main(int argc, char **argv)
shared_task_manager.Process(); shared_task_manager.Process();
dynamic_zone_manager.Process(); dynamic_zone_manager.Process();
if (!RuleB(Logging, PlayerEventsQSProcess)) {
if (player_event_log_process.Check()) {
player_event_logs.Process();
}
}
if (InterserverTimer.Check()) { if (InterserverTimer.Check()) {
InterserverTimer.Start(); InterserverTimer.Start();
database.ping(); database.ping();
@@ -506,8 +504,6 @@ int main(int argc, char **argv)
EQ::EventLoop::Get().Run(); EQ::EventLoop::Get().Run();
event_log_processor.request_stop();
LogInfo("World main loop completed"); LogInfo("World main loop completed");
LogInfo("Shutting down zone connections (if any)"); LogInfo("Shutting down zone connections (if any)");
zoneserver_list.KillAll(); zoneserver_list.KillAll();