MySQL 9.3.0
Source Code Documentation
mrs::database::SlowQueryMonitor Class Reference

#include <slow_query_monitor.h>

Classes

struct  ActiveQuery
 
class  Waitable
 

Public Types

using TimeType = std::chrono::time_point< std::chrono::system_clock >
 
using MySQLSession = collector::CountedMySQLSession
 

Public Member Functions

 SlowQueryMonitor (const mrs::Configuration &configuration, collector::MysqlCacheManager *cache)
 
 ~SlowQueryMonitor ()
 
void execute (const std::function< void()> &fn, MySQLSession *conn, int64_t timeout_ms=-1)
 
void start ()
 
void stop ()
 
void reset ()
 
void configure (const std::string &options)
 
int64_t default_timeout () const
 

Private Types

enum  State { k_initializing , k_running , k_idle , k_stopped }
 
using ActiveQueryList = std::list< ActiveQuery >
 
using ActiveQueryListIt = ActiveQueryList::iterator
 

Private Member Functions

ActiveQueryListIt on_query_start (MySQLSession *conn, int64_t timeout_ms=-1)
 
void on_query_end (ActiveQueryListIt query)
 
void run ()
 
bool wait_until_next_timeout (int64_t next_timeout)
 
void kill_session (const collector::CountedMySQLSession::ConnectionParameters &params, unsigned long conn_id)
 
int64_t check_queries ()
 

Private Attributes

uint64_t default_sql_timeout_ms_ {2000}
 
std::thread monitor_thread_
 
const mrs::Configuration configuration_
 
collector::MysqlCacheManagercache_manager_
 
WaitableVariable< Statestate_ {k_initializing}
 
Waitable waitable_ {this}
 
std::mutex active_queries_mutex_
 
ActiveQueryList active_queries_
 

Member Typedef Documentation

◆ ActiveQueryList

◆ ActiveQueryListIt

using mrs::database::SlowQueryMonitor::ActiveQueryListIt = ActiveQueryList::iterator
private

◆ MySQLSession

◆ TimeType

using mrs::database::SlowQueryMonitor::TimeType = std::chrono::time_point<std::chrono::system_clock>

Member Enumeration Documentation

◆ State

Enumerator
k_initializing 
k_running 
k_idle 
k_stopped 

Constructor & Destructor Documentation

◆ SlowQueryMonitor()

mrs::database::SlowQueryMonitor::SlowQueryMonitor ( const mrs::Configuration configuration,
collector::MysqlCacheManager cache 
)

◆ ~SlowQueryMonitor()

mrs::database::SlowQueryMonitor::~SlowQueryMonitor ( )

Member Function Documentation

◆ check_queries()

int64_t mrs::database::SlowQueryMonitor::check_queries ( )
private

◆ configure()

void mrs::database::SlowQueryMonitor::configure ( const std::string &  options)

◆ default_timeout()

int64_t mrs::database::SlowQueryMonitor::default_timeout ( ) const
inline

◆ execute()

void mrs::database::SlowQueryMonitor::execute ( const std::function< void()> &  fn,
MySQLSession conn,
int64_t  timeout_ms = -1 
)

◆ kill_session()

void mrs::database::SlowQueryMonitor::kill_session ( const collector::CountedMySQLSession::ConnectionParameters params,
unsigned long  conn_id 
)
private

◆ on_query_end()

void mrs::database::SlowQueryMonitor::on_query_end ( ActiveQueryListIt  query)
private

◆ on_query_start()

SlowQueryMonitor::ActiveQueryListIt mrs::database::SlowQueryMonitor::on_query_start ( MySQLSession conn,
int64_t  timeout_ms = -1 
)
private

◆ reset()

void mrs::database::SlowQueryMonitor::reset ( )

◆ run()

void mrs::database::SlowQueryMonitor::run ( )
private

◆ start()

void mrs::database::SlowQueryMonitor::start ( )

◆ stop()

void mrs::database::SlowQueryMonitor::stop ( )

◆ wait_until_next_timeout()

bool mrs::database::SlowQueryMonitor::wait_until_next_timeout ( int64_t  next_timeout)
private

Member Data Documentation

◆ active_queries_

ActiveQueryList mrs::database::SlowQueryMonitor::active_queries_
private

◆ active_queries_mutex_

std::mutex mrs::database::SlowQueryMonitor::active_queries_mutex_
private

◆ cache_manager_

collector::MysqlCacheManager* mrs::database::SlowQueryMonitor::cache_manager_
private

◆ configuration_

const mrs::Configuration mrs::database::SlowQueryMonitor::configuration_
private

◆ default_sql_timeout_ms_

uint64_t mrs::database::SlowQueryMonitor::default_sql_timeout_ms_ {2000}
private

◆ monitor_thread_

std::thread mrs::database::SlowQueryMonitor::monitor_thread_
private

◆ state_

WaitableVariable<State> mrs::database::SlowQueryMonitor::state_ {k_initializing}
private

◆ waitable_

Waitable mrs::database::SlowQueryMonitor::waitable_ {this}
private

The documentation for this class was generated from the following files: