Commit fb4b3472 authored by Oleksandr Byelkin's avatar Oleksandr Byelkin

Merge branch '10.1' into bb-10.1-merge-sanja

parents 0896d7eb 09f14765
...@@ -326,11 +326,16 @@ void wsrep_dump_rbr_buf(THD *thd, const void* rbr_buf, size_t buf_len) ...@@ -326,11 +326,16 @@ void wsrep_dump_rbr_buf(THD *thd, const void* rbr_buf, size_t buf_len)
WSREP_ERROR("snprintf error: %d, skipping dump.", len); WSREP_ERROR("snprintf error: %d, skipping dump.", len);
return; return;
} }
/*
len doesn't count the \0 end-of-string. Use len+1 below
to alloc and pass as an argument to snprintf.
*/
char *filename= (char *)malloc(len+1); char *filename= (char *)malloc(len+1);
int len1= snprintf(filename, len, "%s/GRA_%ld_%lld.log", int len1= snprintf(filename, len+1, "%s/GRA_%ld_%lld.log",
wsrep_data_home_dir, thd->thread_id, wsrep_data_home_dir, thd->thread_id,
(long long)wsrep_thd_trx_seqno(thd)); (long long)wsrep_thd_trx_seqno(thd));
if (len > len1) if (len > len1)
{ {
WSREP_ERROR("RBR dump path truncated: %d, skipping dump.", len); WSREP_ERROR("RBR dump path truncated: %d, skipping dump.", len);
...@@ -469,7 +474,10 @@ void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf, ...@@ -469,7 +474,10 @@ void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf,
int len= snprintf(NULL, 0, "%s/GRA_%ld_%lld_v2.log", int len= snprintf(NULL, 0, "%s/GRA_%ld_%lld_v2.log",
wsrep_data_home_dir, thd->thread_id, wsrep_data_home_dir, thd->thread_id,
thd_trx_seqno); thd_trx_seqno);
/*
len doesn't count the \0 end-of-string. Use len+1 below
to alloc and pass as an argument to snprintf.
*/
char *filename; char *filename;
if (len < 0 || !(filename= (char*)malloc(len+1))) if (len < 0 || !(filename= (char*)malloc(len+1)))
{ {
...@@ -477,7 +485,7 @@ void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf, ...@@ -477,7 +485,7 @@ void wsrep_dump_rbr_buf_with_header(THD *thd, const void *rbr_buf,
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
int len1= snprintf(filename, len, "%s/GRA_%ld_%lld_v2.log", int len1= snprintf(filename, len+1, "%s/GRA_%ld_%lld_v2.log",
wsrep_data_home_dir, thd->thread_id, wsrep_data_home_dir, thd->thread_id,
thd_trx_seqno); thd_trx_seqno);
......
...@@ -204,8 +204,7 @@ void wsrep_sst_grab () ...@@ -204,8 +204,7 @@ void wsrep_sst_grab ()
// Wait for end of SST // Wait for end of SST
bool wsrep_sst_wait () bool wsrep_sst_wait ()
{ {
struct timespec wtime = {WSREP_TIMEDWAIT_SECONDS, 0}; double total_wtime = 0;
uint32 total_wtime = 0;
if (mysql_mutex_lock (&LOCK_wsrep_sst)) if (mysql_mutex_lock (&LOCK_wsrep_sst))
abort(); abort();
...@@ -214,14 +213,18 @@ bool wsrep_sst_wait () ...@@ -214,14 +213,18 @@ bool wsrep_sst_wait ()
while (!sst_complete) while (!sst_complete)
{ {
struct timespec wtime;
set_timespec(wtime, WSREP_TIMEDWAIT_SECONDS);
time_t start_time = time(NULL);
mysql_cond_timedwait (&COND_wsrep_sst, &LOCK_wsrep_sst, &wtime); mysql_cond_timedwait (&COND_wsrep_sst, &LOCK_wsrep_sst, &wtime);
time_t end_time = time(NULL);
if (!sst_complete) if (!sst_complete)
{ {
total_wtime += wtime.tv_sec; total_wtime += difftime(end_time, start_time);
WSREP_DEBUG("Waiting for SST to complete. waited %u secs.", total_wtime); WSREP_DEBUG("Waiting for SST to complete. current seqno: %ld waited %f secs.", local_seqno, total_wtime);
service_manager_extend_timeout(WSREP_EXTEND_TIMEOUT_INTERVAL, service_manager_extend_timeout(WSREP_EXTEND_TIMEOUT_INTERVAL,
"WSREP state transfer ongoing, current seqno: %ld", local_seqno); "WSREP state transfer ongoing, current seqno: %ld waited %f secs", local_seqno, total_wtime);
} }
} }
...@@ -1319,19 +1322,22 @@ void wsrep_SE_init_grab() ...@@ -1319,19 +1322,22 @@ void wsrep_SE_init_grab()
void wsrep_SE_init_wait() void wsrep_SE_init_wait()
{ {
struct timespec wtime = {WSREP_TIMEDWAIT_SECONDS, 0}; double total_wtime=0;
uint32 total_wtime=0;
while (SE_initialized == false) while (SE_initialized == false)
{ {
struct timespec wtime;
set_timespec(wtime, WSREP_TIMEDWAIT_SECONDS);
time_t start_time = time(NULL);
mysql_cond_timedwait (&COND_wsrep_sst_init, &LOCK_wsrep_sst_init, &wtime); mysql_cond_timedwait (&COND_wsrep_sst_init, &LOCK_wsrep_sst_init, &wtime);
time_t end_time = time(NULL);
if (!SE_initialized) if (!SE_initialized)
{ {
total_wtime += wtime.tv_sec; total_wtime += difftime(end_time, start_time);
WSREP_DEBUG("Waiting for SST to complete. waited %u secs.", total_wtime); WSREP_DEBUG("Waiting for SST to complete. current seqno: %ld waited %f secs.", local_seqno, total_wtime);
service_manager_extend_timeout(WSREP_EXTEND_TIMEOUT_INTERVAL, service_manager_extend_timeout(WSREP_EXTEND_TIMEOUT_INTERVAL,
"WSREP SE initialization ongoing."); "WSREP state transfer ongoing, current seqno: %ld waited %f secs", local_seqno, total_wtime);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment