Skip to content

Commit bafb011

Browse files
committed
Merge branch '10.2' into 10.3
2 parents 150f447 + 984a06d commit bafb011

File tree

4 files changed

+27
-10
lines changed

4 files changed

+27
-10
lines changed

sql/log.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4448,7 +4448,9 @@ int MYSQL_BIN_LOG::purge_first_log(Relay_log_info* rli, bool included)
44484448
0, 0, &log_space_reclaimed);
44494449

44504450
mysql_mutex_lock(&rli->log_space_lock);
4451-
rli->log_space_total-= log_space_reclaimed;
4451+
my_atomic_add64_explicit((volatile int64*)(&rli->log_space_total),
4452+
(-(int64)log_space_reclaimed),
4453+
MY_MEMORY_ORDER_RELAXED);
44524454
mysql_cond_broadcast(&rli->log_space_cond);
44534455
mysql_mutex_unlock(&rli->log_space_lock);
44544456

sql/log.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,9 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
731731
char buf1[22],buf2[22];
732732
#endif
733733
DBUG_ENTER("harvest_bytes_written");
734-
(*counter)+=bytes_written;
734+
735+
my_atomic_add64_explicit((volatile int64*)(counter), bytes_written,
736+
MY_MEMORY_ORDER_RELAXED);
735737
DBUG_PRINT("info",("counter: %s bytes_written: %s", llstr(*counter,buf1),
736738
llstr(bytes_written,buf2)));
737739
bytes_written=0;

sql/rpl_rli.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,8 @@ static inline int add_relay_log(Relay_log_info* rli,LOG_INFO* linfo)
458458
linfo->log_file_name);
459459
DBUG_RETURN(1);
460460
}
461-
rli->log_space_total += s.st_size;
461+
my_atomic_add64_explicit((volatile int64*)(&rli->log_space_total),
462+
s.st_size, MY_MEMORY_ORDER_RELAXED);
462463
DBUG_PRINT("info",("log_space_total: %llu", rli->log_space_total));
463464
DBUG_RETURN(0);
464465
}
@@ -468,7 +469,8 @@ static int count_relay_log_space(Relay_log_info* rli)
468469
{
469470
LOG_INFO linfo;
470471
DBUG_ENTER("count_relay_log_space");
471-
rli->log_space_total= 0;
472+
my_atomic_store64_explicit((volatile int64*)(&rli->log_space_total), 0,
473+
MY_MEMORY_ORDER_RELAXED);
472474
if (rli->relay_log.find_log_pos(&linfo, NullS, 1))
473475
{
474476
sql_print_error("Could not find first log while counting relay log space");
@@ -1227,8 +1229,8 @@ int purge_relay_logs(Relay_log_info* rli, THD *thd, bool just_reset,
12271229
strmake_buf(rli->group_relay_log_name, rli->relay_log.get_log_fname());
12281230
strmake_buf(rli->event_relay_log_name, rli->relay_log.get_log_fname());
12291231
rli->group_relay_log_pos= rli->event_relay_log_pos= BIN_LOG_HEADER_SIZE;
1230-
rli->log_space_total= 0;
1231-
1232+
my_atomic_store64_explicit((volatile int64*)(&rli->log_space_total), 0,
1233+
MY_MEMORY_ORDER_RELAXED);
12321234
if (count_relay_log_space(rli))
12331235
{
12341236
*errmsg= "Error counting relay log space";

sql/slave.cc

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2687,7 +2687,10 @@ static bool wait_for_relay_log_space(Relay_log_info* rli)
26872687
&rli->log_space_lock,
26882688
&stage_waiting_for_relay_log_space,
26892689
&old_stage);
2690-
while (rli->log_space_limit < rli->log_space_total &&
2690+
while (rli->log_space_limit <
2691+
(ulonglong)my_atomic_load64_explicit((volatile int64*)
2692+
(&rli->log_space_total),
2693+
MY_MEMORY_ORDER_RELAXED) &&
26912694
!(slave_killed=io_slave_killed(mi)) &&
26922695
!rli->ignore_log_space_limit)
26932696
mysql_cond_wait(&rli->log_space_cond, &rli->log_space_lock);
@@ -3250,7 +3253,10 @@ static bool send_show_master_info_data(THD *thd, Master_info *mi, bool full,
32503253
protocol->store(mi->rli.last_error().message, &my_charset_bin);
32513254
protocol->store((uint32) mi->rli.slave_skip_counter);
32523255
protocol->store((ulonglong) mi->rli.group_master_log_pos);
3253-
protocol->store((ulonglong) mi->rli.log_space_total);
3256+
protocol->store((ulonglong)
3257+
my_atomic_load64_explicit((volatile int64*)
3258+
(&mi->rli.log_space_total),
3259+
MY_MEMORY_ORDER_RELAXED));
32543260

32553261
protocol->store(
32563262
mi->rli.until_condition==Relay_log_info::UNTIL_NONE ? "None":
@@ -4983,7 +4989,9 @@ Stopping slave I/O thread due to out-of-memory error from master");
49834989
#endif
49844990

49854991
if (rli->log_space_limit && rli->log_space_limit <
4986-
rli->log_space_total &&
4992+
(ulonglong) my_atomic_load64_explicit((volatile int64*)
4993+
(&rli->log_space_total),
4994+
MY_MEMORY_ORDER_RELAXED) &&
49874995
!rli->ignore_log_space_limit)
49884996
if (wait_for_relay_log_space(rli))
49894997
{
@@ -7678,7 +7686,10 @@ static Log_event* next_event(rpl_group_info *rgi, ulonglong *event_size)
76787686
is are able to rotate and purge sometime soon.
76797687
*/
76807688
if (rli->log_space_limit &&
7681-
rli->log_space_limit < rli->log_space_total)
7689+
rli->log_space_limit <
7690+
(ulonglong) my_atomic_load64_explicit((volatile int64*)
7691+
(&rli->log_space_total),
7692+
MY_MEMORY_ORDER_RELAXED))
76827693
{
76837694
/* force rotation if not in an unfinished group */
76847695
rli->sql_force_rotate_relay= !rli->is_in_group();

0 commit comments

Comments
 (0)