diff options
author | Brave Galera Crew <devel@codership.com> | 2019-01-23 15:30:00 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2019-01-23 15:30:00 +0400 |
commit | 36a2a185fe18d31a644da46cfabd9757a379280c (patch) | |
tree | 00ca186ce2cfdc3ab7e4979336a384e2b51c5aa9 /plugin | |
parent | 382115b99297ceaa4c3067f79efb5c2515013be5 (diff) | |
download | mariadb-git-36a2a185fe18d31a644da46cfabd9757a379280c.tar.gz |
Galera4
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/wsrep_info/mysql-test/wsrep_info/my.cnf | 7 | ||||
-rw-r--r-- | plugin/wsrep_info/mysql-test/wsrep_info/r/plugin.result | 10 | ||||
-rw-r--r-- | plugin/wsrep_info/mysql-test/wsrep_info/suite.pm | 4 | ||||
-rw-r--r-- | plugin/wsrep_info/plugin.cc | 87 |
4 files changed, 42 insertions, 66 deletions
diff --git a/plugin/wsrep_info/mysql-test/wsrep_info/my.cnf b/plugin/wsrep_info/mysql-test/wsrep_info/my.cnf index 70682178ca1..1c7a8ad4122 100644 --- a/plugin/wsrep_info/mysql-test/wsrep_info/my.cnf +++ b/plugin/wsrep_info/mysql-test/wsrep_info/my.cnf @@ -2,23 +2,26 @@ !include include/default_mysqld.cnf [mysqld] -wsrep-on=1 binlog-format=row innodb-autoinc-lock-mode=2 innodb-locks-unsafe-for-binlog=1 -wsrep-cluster-address=gcomm:// wsrep_provider=@ENV.WSREP_PROVIDER [mysqld.1] #galera_port=@OPT.port +#ist_port=@OPT.port #sst_port=@OPT.port +wsrep-on=1 +wsrep-cluster-address=gcomm:// wsrep_provider_options='base_port=@mysqld.1.#galera_port' wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' wsrep_node_name=test-node-1 [mysqld.2] #galera_port=@OPT.port +#ist_port=@OPT.port #sst_port=@OPT.port +wsrep-on=1 wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' wsrep_provider_options='base_port=@mysqld.2.#galera_port' wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' diff --git a/plugin/wsrep_info/mysql-test/wsrep_info/r/plugin.result b/plugin/wsrep_info/mysql-test/wsrep_info/r/plugin.result index f33a628d428..f99f27f3539 100644 --- a/plugin/wsrep_info/mysql-test/wsrep_info/r/plugin.result +++ b/plugin/wsrep_info/mysql-test/wsrep_info/r/plugin.result @@ -1,8 +1,10 @@ +connection node_2; +connection node_1; # On node 1 connection node_1; SELECT * FROM INFORMATION_SCHEMA.WSREP_STATUS; -NODE_INDEX NODE_STATUS CLUSTER_STATUS CLUSTER_SIZE CLUSTER_STATE_UUID CLUSTER_STATE_SEQNO CLUSTER_CONF_ID GAP PROTOCOL_VERSION -<IDX> Synced Primary 2 <CLUSTER_STATE_UUID> 0 <CLUSTER_CONF_ID> NO 3 +NODE_INDEX NODE_STATUS CLUSTER_STATUS CLUSTER_SIZE CLUSTER_STATE_UUID CLUSTER_STATE_SEQNO CLUSTER_CONF_ID PROTOCOL_VERSION +<IDX> synced primary 2 <CLUSTER_STATE_UUID> 2 <CLUSTER_CONF_ID> 4 SELECT * FROM INFORMATION_SCHEMA.WSREP_MEMBERSHIP ORDER BY NAME; INDEX UUID NAME ADDRESS <IDX> <MEMBER_ID> test-node-1 <ADDRESS> @@ -10,8 +12,8 @@ INDEX UUID NAME ADDRESS # On node 2 connection node_2; SELECT * FROM INFORMATION_SCHEMA.WSREP_STATUS; -NODE_INDEX NODE_STATUS CLUSTER_STATUS CLUSTER_SIZE CLUSTER_STATE_UUID CLUSTER_STATE_SEQNO CLUSTER_CONF_ID GAP PROTOCOL_VERSION -<IDX> Synced Primary 2 <CLUSTER_STATE_UUID> 0 <CLUSTER_CONF_ID> YES 3 +NODE_INDEX NODE_STATUS CLUSTER_STATUS CLUSTER_SIZE CLUSTER_STATE_UUID CLUSTER_STATE_SEQNO CLUSTER_CONF_ID PROTOCOL_VERSION +<IDX> synced primary 2 <CLUSTER_STATE_UUID> 2 <CLUSTER_CONF_ID> 4 SELECT * FROM INFORMATION_SCHEMA.WSREP_MEMBERSHIP ORDER BY NAME; INDEX UUID NAME ADDRESS <IDX> <MEMBER_ID> test-node-1 <ADDRESS> diff --git a/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm b/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm index 9268cb3e06b..2adc6811f3f 100644 --- a/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm +++ b/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm @@ -9,9 +9,9 @@ return "Not run for embedded server" if $::opt_embedded_server; return "WSREP is not compiled in" unless defined $::mysqld_variables{'wsrep-on'}; my ($provider) = grep { -f $_ } $ENV{WSREP_PROVIDER}, - "/usr/lib64/galera-3/libgalera_smm.so", + "/usr/lib64/galera-4/libgalera_smm.so", "/usr/lib64/galera/libgalera_smm.so", - "/usr/lib/galera-3/libgalera_smm.so", + "/usr/lib/galera-4/libgalera_smm.so", "/usr/lib/galera/libgalera_smm.so"; return "No wsrep provider library" unless -f $provider; diff --git a/plugin/wsrep_info/plugin.cc b/plugin/wsrep_info/plugin.cc index 428bcc5dcfc..18e41b20c98 100644 --- a/plugin/wsrep_info/plugin.cc +++ b/plugin/wsrep_info/plugin.cc @@ -52,37 +52,9 @@ #define COLUMN_WSREP_STATUS_CLUSTER_STATE_SEQNO 5 /* Cluster membership changes */ #define COLUMN_WSREP_STATUS_CLUSTER_CONF_ID 6 -/* Gap between global and local states ? */ -#define COLUMN_WSREP_STATUS_GAP 7 /* Application protocol version */ -#define COLUMN_WSREP_STATUS_PROTO_VERSION 8 +#define COLUMN_WSREP_STATUS_PROTO_VERSION 7 -static const char* get_member_status(wsrep_member_status_t status) -{ - switch (status) - { - case WSREP_MEMBER_UNDEFINED: return "Undefined"; - case WSREP_MEMBER_JOINER: return "Joiner"; - case WSREP_MEMBER_DONOR: return "Donor"; - case WSREP_MEMBER_JOINED: return "Joined"; - case WSREP_MEMBER_SYNCED: return "Synced"; - case WSREP_MEMBER_ERROR: return "Error"; - default: break; - } - return "UNKNOWN"; -} - -static const char* get_cluster_status(wsrep_view_status_t status) -{ - switch (status) - { - case WSREP_VIEW_PRIMARY: return "Primary"; - case WSREP_VIEW_NON_PRIMARY: return "Non-primary"; - case WSREP_VIEW_DISCONNECTED: return "Disconnected"; - default: break; - } - return "UNKNOWN"; -} static ST_FIELD_INFO wsrep_memb_fields[]= { @@ -107,7 +79,6 @@ static ST_FIELD_INFO wsrep_status_fields[]= 0, 0, 0, 0}, {"CLUSTER_CONF_ID", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, 0, 0}, - {"GAP", 10, MYSQL_TYPE_STRING, 0, 0, 0, 0}, {"PROTOCOL_VERSION", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, 0, 0}, {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0} @@ -122,25 +93,26 @@ static int wsrep_memb_fill_table(THD *thd, TABLE_LIST *tables, COND *cond) wsrep_config_state->lock(); - Dynamic_array<wsrep_member_info_t> *memb_arr= - wsrep_config_state->get_member_info(); + const wsrep::view& view(wsrep_config_state->get_view_info()); + const std::vector<wsrep::view::member>& members(view.members()); + TABLE *table= tables->table; - for (unsigned int i= 0; i < memb_arr->elements(); i ++) + for (unsigned int i= 0; i < members.size(); i++) { - wsrep_member_info_t memb= memb_arr->at(i); - table->field[COLUMN_WSREP_MEMB_INDEX]->store(i, 0); - char uuid[40]; - wsrep_uuid_print(&memb.id, uuid, sizeof(uuid)); - table->field[COLUMN_WSREP_MEMB_UUID]->store(uuid, sizeof(uuid), + std::ostringstream os; + os << members[i].id(); + table->field[COLUMN_WSREP_MEMB_UUID]->store(os.str().c_str(), + os.str().length(), system_charset_info); - table->field[COLUMN_WSREP_MEMB_NAME]->store(memb.name, strlen(memb.name), + table->field[COLUMN_WSREP_MEMB_NAME]->store(members[i].name().c_str(), + members[i].name().length(), system_charset_info); - table->field[COLUMN_WSREP_MEMB_ADDRESS]->store(memb.incoming, - strlen(memb.incoming), + table->field[COLUMN_WSREP_MEMB_ADDRESS]->store(members[i].incoming().c_str(), + members[i].incoming().length(), system_charset_info); if (schema_table_store_record(thd, table)) @@ -177,35 +149,34 @@ static int wsrep_status_fill_table(THD *thd, TABLE_LIST *tables, COND *cond) wsrep_config_state->lock(); - wsrep_view_info_t view= wsrep_config_state->get_view_info(); - wsrep_member_status_t status= wsrep_config_state->get_status(); + const wsrep::view& view= wsrep_config_state->get_view_info(); + enum wsrep::server_state::state status= wsrep_config_state->get_status(); TABLE *table= tables->table; table->field[COLUMN_WSREP_STATUS_NODE_INDEX] - ->store(view.my_idx, 0); + ->store(view.own_index(), 0); table->field[COLUMN_WSREP_STATUS_NODE_STATUS] - ->store(get_member_status(status), strlen(get_member_status(status)), + ->store(to_c_string(status), + strlen(to_c_string(status)), system_charset_info); table->field[COLUMN_WSREP_STATUS_CLUSTER_STATUS] - ->store(get_cluster_status(view.status), - strlen(get_cluster_status(view.status)), + ->store(to_c_string(view.status()), + strlen(to_c_string(view.status())), system_charset_info); - table->field[COLUMN_WSREP_STATUS_CLUSTER_SIZE]->store(view.memb_num, 0); + table->field[COLUMN_WSREP_STATUS_CLUSTER_SIZE]->store(view.members().size(), 0); - char uuid[40]; - wsrep_uuid_print(&view.state_id.uuid, uuid, sizeof(uuid)); + std::ostringstream os; + os << view.state_id().id(); table->field[COLUMN_WSREP_STATUS_CLUSTER_STATE_UUID] - ->store(uuid, sizeof(uuid), system_charset_info); + ->store(os.str().c_str(), os.str().length(), system_charset_info); table->field[COLUMN_WSREP_STATUS_CLUSTER_STATE_SEQNO] - ->store(view.state_id.seqno, 0); - table->field[COLUMN_WSREP_STATUS_CLUSTER_CONF_ID]->store(view.view, 0); - - const char *gap= (view.state_gap == true) ? "YES" : "NO"; - table->field[COLUMN_WSREP_STATUS_GAP]->store(gap, strlen(gap), - system_charset_info); - table->field[COLUMN_WSREP_STATUS_PROTO_VERSION]->store(view.proto_ver, 0); + ->store(view.state_id().seqno().get(), 0); + table->field[COLUMN_WSREP_STATUS_CLUSTER_CONF_ID] + ->store(view.view_seqno().get(), 0); + table->field[COLUMN_WSREP_STATUS_PROTO_VERSION] + ->store(view.protocol_version(), 0); if (schema_table_store_record(thd, table)) rc= 1; |