|
|
|
@ -13,6 +13,7 @@ |
|
|
|
along with this program; if not, write to the Free Software |
|
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
|
|
|
|
|
|
|
#include <sql_plugin.h> // SHOW_MY_BOOL
|
|
|
|
#include <mysqld.h>
|
|
|
|
#include <sql_class.h>
|
|
|
|
#include <sql_parse.h>
|
|
|
|
@ -295,7 +296,7 @@ wsrep_view_handler_cb (void* app_ctx, |
|
|
|
// version change
|
|
|
|
if (view->proto_ver != wsrep_protocol_version) |
|
|
|
{ |
|
|
|
my_bool wsrep_ready_saved= wsrep_ready; |
|
|
|
my_bool wsrep_ready_saved= wsrep_ready_get(); |
|
|
|
wsrep_ready_set(FALSE); |
|
|
|
WSREP_INFO("closing client connections for " |
|
|
|
"protocol change %ld -> %d", |
|
|
|
@ -409,16 +410,34 @@ out: |
|
|
|
return WSREP_CB_SUCCESS; |
|
|
|
} |
|
|
|
|
|
|
|
void wsrep_ready_set (my_bool x) |
|
|
|
my_bool wsrep_ready_set (my_bool x) |
|
|
|
{ |
|
|
|
WSREP_DEBUG("Setting wsrep_ready to %d", x); |
|
|
|
if (mysql_mutex_lock (&LOCK_wsrep_ready)) abort(); |
|
|
|
if (wsrep_ready != x) |
|
|
|
my_bool ret= (wsrep_ready != x); |
|
|
|
if (ret) |
|
|
|
{ |
|
|
|
wsrep_ready= x; |
|
|
|
mysql_cond_signal (&COND_wsrep_ready); |
|
|
|
} |
|
|
|
mysql_mutex_unlock (&LOCK_wsrep_ready); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
my_bool wsrep_ready_get (void) |
|
|
|
{ |
|
|
|
if (mysql_mutex_lock (&LOCK_wsrep_ready)) abort(); |
|
|
|
my_bool ret= wsrep_ready; |
|
|
|
mysql_mutex_unlock (&LOCK_wsrep_ready); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
int wsrep_show_ready(THD *thd, SHOW_VAR *var, char *buff) |
|
|
|
{ |
|
|
|
var->type= SHOW_MY_BOOL; |
|
|
|
var->value= buff; |
|
|
|
*((my_bool *)buff)= wsrep_ready_get(); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
// Wait until wsrep has reached ready state
|
|
|
|
@ -437,17 +456,8 @@ void wsrep_ready_wait () |
|
|
|
static void wsrep_synced_cb(void* app_ctx) |
|
|
|
{ |
|
|
|
WSREP_INFO("Synchronized with group, ready for connections"); |
|
|
|
bool signal_main= false; |
|
|
|
if (mysql_mutex_lock (&LOCK_wsrep_ready)) abort(); |
|
|
|
if (!wsrep_ready) |
|
|
|
{ |
|
|
|
wsrep_ready= TRUE; |
|
|
|
mysql_cond_signal (&COND_wsrep_ready); |
|
|
|
signal_main= true; |
|
|
|
|
|
|
|
} |
|
|
|
my_bool signal_main= wsrep_ready_set(TRUE); |
|
|
|
local_status.set(WSREP_MEMBER_SYNCED); |
|
|
|
mysql_mutex_unlock (&LOCK_wsrep_ready); |
|
|
|
|
|
|
|
if (signal_main) |
|
|
|
{ |
|
|
|
|