mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-20220: Merge 5.7 P_S replication table 'replication_applier_status_by_worker
Step1: ===== Backport 'replication_applier_status_by_worker' from upstream. Iterate through rpl_parallel_thread_pool and display slave worker thread specific information as part of 'replication_applier_status_by_worker' table. --------------------------------------------------------------------------- |Column Name: | Description: | |-------------------------------------------------------------------------| | | | |CHANNEL_NAME | Name of replication channel through which the | | | transaction is received. | | | | |THREAD_ID | Thread_Id as displayed in 'performance_schema. | | | threads' table for thread with name | | | 'thread/sql/rpl_parallel_thread' | | | | | | THREAD_ID will be NULL when worker threads are | | | stopped due to an error/force stop | | | | |SERVICE_STATE | Thread is running or not | | | | |LAST_SEEN_TRANSACTION | Last GTID executed by worker | | | | |LAST_ERROR_NUMBER | Last Error that occured on a particular worker | | | | |LAST_ERROR_MESSAGE | Last error specific message | | | | |LAST_ERROR_TIMESTAMP | Time stamp of last error | | | | --------------------------------------------------------------------------- CHANNEL_NAME will be empty when the worker has not processed any transaction. Channel_name points to valid source channel_name when it is processing a transaction/event group.
This commit is contained in:
@@ -41,6 +41,7 @@ public:
|
||||
@param thread_name Printable name of the slave thread that is reporting.
|
||||
*/
|
||||
Slave_reporting_capability(char const *thread_name);
|
||||
mutable my_thread_id err_thread_id;
|
||||
|
||||
/**
|
||||
Writes a message and, if it's an error message, to Last_Error
|
||||
@@ -81,12 +82,35 @@ public:
|
||||
{
|
||||
number= 0;
|
||||
message[0]= '\0';
|
||||
timestamp[0]= '\0';
|
||||
}
|
||||
void update_timestamp()
|
||||
{
|
||||
struct tm tm_tmp;
|
||||
struct tm *start;
|
||||
|
||||
skr= my_time(0);
|
||||
localtime_r(&skr, &tm_tmp);
|
||||
start=&tm_tmp;
|
||||
|
||||
sprintf(timestamp, "%02d%02d%02d %02d:%02d:%02d",
|
||||
start->tm_year % 100,
|
||||
start->tm_mon+1,
|
||||
start->tm_mday,
|
||||
start->tm_hour,
|
||||
start->tm_min,
|
||||
start->tm_sec);
|
||||
timestamp[15]= '\0';
|
||||
}
|
||||
|
||||
/** Error code */
|
||||
uint32 number;
|
||||
/** Error message */
|
||||
char message[MAX_SLAVE_ERRMSG];
|
||||
/** Error timestamp as string */
|
||||
char timestamp[64];
|
||||
/** Error timestamp as time_t variable. Used in performance_schema */
|
||||
time_t skr;
|
||||
};
|
||||
|
||||
Error const& last_error() const { return m_last_error; }
|
||||
|
Reference in New Issue
Block a user