BUG#45511 rpl.rpl_binlog_corruption fails with warning messages in Valgrind
This is a backport of BUG#43076.
This commit is contained in:
parent
37a5f2d421
commit
4cb4593bde
@ -13,6 +13,7 @@ Slave_reporting_capability::report(loglevel level, int err_code,
|
|||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, msg);
|
va_start(args, msg);
|
||||||
|
|
||||||
|
pthread_mutex_lock(&err_lock);
|
||||||
switch (level)
|
switch (level)
|
||||||
{
|
{
|
||||||
case ERROR_LEVEL:
|
case ERROR_LEVEL:
|
||||||
@ -38,6 +39,7 @@ Slave_reporting_capability::report(loglevel level, int err_code,
|
|||||||
|
|
||||||
my_vsnprintf(pbuff, pbuffsize, msg, args);
|
my_vsnprintf(pbuff, pbuffsize, msg, args);
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&err_lock);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
/* If the msg string ends with '.', do not add a ',' it would be ugly */
|
/* If the msg string ends with '.', do not add a ',' it would be ugly */
|
||||||
@ -46,3 +48,8 @@ Slave_reporting_capability::report(loglevel level, int err_code,
|
|||||||
(pbuff[0] && *(strend(pbuff)-1) == '.') ? "" : ",",
|
(pbuff[0] && *(strend(pbuff)-1) == '.') ? "" : ",",
|
||||||
err_code);
|
err_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Slave_reporting_capability::~Slave_reporting_capability()
|
||||||
|
{
|
||||||
|
pthread_mutex_destroy(&err_lock);
|
||||||
|
}
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
class Slave_reporting_capability
|
class Slave_reporting_capability
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/** lock used to synchronize m_last_error on 'SHOW SLAVE STATUS' **/
|
||||||
|
mutable pthread_mutex_t err_lock;
|
||||||
/**
|
/**
|
||||||
Constructor.
|
Constructor.
|
||||||
|
|
||||||
@ -24,6 +26,7 @@ public:
|
|||||||
Slave_reporting_capability(char const *thread_name)
|
Slave_reporting_capability(char const *thread_name)
|
||||||
: m_thread_name(thread_name)
|
: m_thread_name(thread_name)
|
||||||
{
|
{
|
||||||
|
pthread_mutex_init(&err_lock, MY_MUTEX_INIT_FAST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,7 +47,9 @@ public:
|
|||||||
STATUS</code>.
|
STATUS</code>.
|
||||||
*/
|
*/
|
||||||
void clear_error() {
|
void clear_error() {
|
||||||
|
pthread_mutex_lock(&err_lock);
|
||||||
m_last_error.clear();
|
m_last_error.clear();
|
||||||
|
pthread_mutex_unlock(&err_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,6 +77,7 @@ public:
|
|||||||
|
|
||||||
Error const& last_error() const { return m_last_error; }
|
Error const& last_error() const { return m_last_error; }
|
||||||
|
|
||||||
|
virtual ~Slave_reporting_capability()= 0;
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
Last error produced by the I/O or SQL thread respectively.
|
Last error produced by the I/O or SQL thread respectively.
|
||||||
@ -79,6 +85,10 @@ private:
|
|||||||
mutable Error m_last_error;
|
mutable Error m_last_error;
|
||||||
|
|
||||||
char const *const m_thread_name;
|
char const *const m_thread_name;
|
||||||
|
|
||||||
|
// not implemented
|
||||||
|
Slave_reporting_capability(const Slave_reporting_capability& rhs);
|
||||||
|
Slave_reporting_capability& operator=(const Slave_reporting_capability& rhs);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RPL_REPORTING_H
|
#endif // RPL_REPORTING_H
|
||||||
|
@ -1493,6 +1493,8 @@ bool show_master_info(THD* thd, Master_info* mi)
|
|||||||
|
|
||||||
pthread_mutex_lock(&mi->data_lock);
|
pthread_mutex_lock(&mi->data_lock);
|
||||||
pthread_mutex_lock(&mi->rli.data_lock);
|
pthread_mutex_lock(&mi->rli.data_lock);
|
||||||
|
pthread_mutex_lock(&mi->err_lock);
|
||||||
|
pthread_mutex_lock(&mi->rli.err_lock);
|
||||||
protocol->store(mi->host, &my_charset_bin);
|
protocol->store(mi->host, &my_charset_bin);
|
||||||
protocol->store(mi->user, &my_charset_bin);
|
protocol->store(mi->user, &my_charset_bin);
|
||||||
protocol->store((uint32) mi->port);
|
protocol->store((uint32) mi->port);
|
||||||
@ -1592,6 +1594,8 @@ bool show_master_info(THD* thd, Master_info* mi)
|
|||||||
// Last_SQL_Error
|
// Last_SQL_Error
|
||||||
protocol->store(mi->rli.last_error().message, &my_charset_bin);
|
protocol->store(mi->rli.last_error().message, &my_charset_bin);
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&mi->rli.err_lock);
|
||||||
|
pthread_mutex_unlock(&mi->err_lock);
|
||||||
pthread_mutex_unlock(&mi->rli.data_lock);
|
pthread_mutex_unlock(&mi->rli.data_lock);
|
||||||
pthread_mutex_unlock(&mi->data_lock);
|
pthread_mutex_unlock(&mi->data_lock);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user