MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config

The memory alloc-ed initially for wsrep_sst_auth to store the
value specified in config was lost as the global variable was
reset while in process of masking it and thus, could never be
reclaimed on shutdown.
This commit is contained in:
Nirbhay Choubey 2016-08-03 13:36:12 -04:00
parent 08683a7267
commit ba4ed3ee84
7 changed files with 29 additions and 6 deletions

View File

@ -0,0 +1,12 @@
#
# MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config
#
SELECT @@global.wsrep_sst_auth;
@@global.wsrep_sst_auth
********
SET @@global.wsrep_sst_auth='foo:bar';
SELECT @@global.wsrep_sst_auth;
@@global.wsrep_sst_auth
********
disconnect node_2;
disconnect node_1;

View File

@ -0,0 +1 @@
--wsrep_sst_auth=root:

View File

@ -0,0 +1,12 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
--echo #
--echo # MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config
--echo #
SELECT @@global.wsrep_sst_auth;
SET @@global.wsrep_sst_auth='foo:bar';
SELECT @@global.wsrep_sst_auth;
--source include/galera_end.inc

View File

@ -577,7 +577,7 @@ int wsrep_init()
return 1;
}
wsrep_sst_auth_init(wsrep_sst_auth);
wsrep_sst_auth_init();
wsrep_ready_set(FALSE);
assert(wsrep_provider);

View File

@ -169,10 +169,9 @@ bool wsrep_sst_auth_update (sys_var *self, THD* thd, enum_var_type type)
return sst_auth_real_set (wsrep_sst_auth);
}
void wsrep_sst_auth_init (const char* value)
void wsrep_sst_auth_init ()
{
if (wsrep_sst_auth == value) wsrep_sst_auth = NULL;
if (value) sst_auth_real_set (value);
sst_auth_real_set(wsrep_sst_auth);
}
bool wsrep_sst_donor_check (sys_var *self, THD* thd, set_var* var)

View File

@ -64,6 +64,7 @@ extern void wsrep_sst_grab();
extern bool wsrep_sst_wait();
/*! Signals wsrep that initialization is complete, writesets can be applied */
extern bool wsrep_sst_continue();
extern void wsrep_sst_auth_init();
extern void wsrep_sst_auth_free();
extern void wsrep_SE_init_grab(); /*! grab init critical section */

View File

@ -81,7 +81,6 @@ extern bool wsrep_sst_receive_address_update UPDATE_ARGS;
extern bool wsrep_sst_auth_check CHECK_ARGS;
extern bool wsrep_sst_auth_update UPDATE_ARGS;
extern void wsrep_sst_auth_init INIT_ARGS;
extern bool wsrep_sst_donor_check CHECK_ARGS;
extern bool wsrep_sst_donor_update UPDATE_ARGS;
@ -98,7 +97,6 @@ extern bool wsrep_desync_update UPDATE_ARGS;
#define wsrep_provider_init(X)
#define wsrep_init_vars() (0)
#define wsrep_start_position_init(X)
#define wsrep_sst_auth_init(X)
#endif /* WITH_WSREP */
#endif /* WSREP_VAR_H */