diff options
Diffstat (limited to 'ndb/tools/waiter.cpp')
-rw-r--r-- | ndb/tools/waiter.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/ndb/tools/waiter.cpp b/ndb/tools/waiter.cpp index 7ce2739a157..86d34066c55 100644 --- a/ndb/tools/waiter.cpp +++ b/ndb/tools/waiter.cpp @@ -22,21 +22,26 @@ #include <NdbSleep.h> #include <getarg.h> #include <kernel/ndb_limits.h> -#include "../src/common/mgmcommon/LocalConfig.hpp" +#include "../include/mgmcommon/LocalConfig.hpp" #include <NDBT.hpp> int -waitClusterStarted(const char* _addr, unsigned int _timeout= 120); +waitClusterStatus(const char* _addr, + ndb_mgm_node_status _status= NDB_MGM_NODE_STATUS_STARTED, + unsigned int _timeout= 120); int main(int argc, const char** argv){ const char* _hostName = NULL; + int _no_contact = 0; int _help = 0; struct getargs args[] = { + { "no-contact", 0, arg_flag, &_no_contact, "Wait for cluster no contact", "" }, { "usage", '?', arg_flag, &_help, "Print help", "" } }; + int num_args = sizeof(args) / sizeof(args[0]); int optind = 0; char desc[] = @@ -62,13 +67,13 @@ int main(int argc, const char** argv){ return NDBT_ProgramExit(NDBT_FAILED); } - for (int i = 0; i<lcfg.items; i++) + for (int i = 0; i<lcfg.ids.size();i++) { - MgmtSrvrId * m = lcfg.ids[i]; + MgmtSrvrId * m = &lcfg.ids[i]; switch(m->type){ case MgmId_TCP: - snprintf(buf, 255, "%s:%d", m->data.tcp.remoteHost, m->data.tcp.port); + snprintf(buf, 255, "%s:%d", m->name.c_str(), m->port); _hostName = buf; break; case MgmId_File: @@ -86,7 +91,10 @@ int main(int argc, const char** argv){ } } - if (waitClusterStarted(_hostName) != 0) + if (_no_contact) { + if (waitClusterStatus(_hostName, NDB_MGM_NODE_STATUS_NO_CONTACT) != 0) + return NDBT_ProgramExit(NDBT_FAILED); + } else if (waitClusterStatus(_hostName) != 0) return NDBT_ProgramExit(NDBT_FAILED); return NDBT_ProgramExit(NDBT_OK); @@ -121,7 +129,8 @@ getStatus(){ retries++; continue; } - for (int i = 0; i < status->no_of_nodes; i++){ + int count = status->no_of_nodes; + for (int i = 0; i < count; i++){ node = &status->node_states[i]; switch(node->node_type){ case NDB_MGM_NODE_TYPE_NDB: @@ -142,7 +151,7 @@ getStatus(){ apiNodes.clear(); free(status); status = NULL; - i = status->no_of_nodes; + count = 0; ndbout << "kalle"<< endl; break; @@ -164,9 +173,10 @@ getStatus(){ } int -waitClusterStarted(const char* _addr, unsigned int _timeout) +waitClusterStatus(const char* _addr, + ndb_mgm_node_status _status, + unsigned int _timeout) { - ndb_mgm_node_status _status = NDB_MGM_NODE_STATUS_STARTED; int _startphase = -1; int _nodes[MAX_NDB_NODES]; @@ -290,10 +300,12 @@ waitClusterStarted(const char* _addr, unsigned int _timeout) allInState = false; } } - g_info << "Waiting for cluster enter state" + g_info << "Waiting for cluster enter state " << ndb_mgm_get_node_status_string(_status)<< endl; NdbSleep_SecSleep(1); attempts++; } return 0; } + +template class Vector<ndb_mgm_node_state>; |