summaryrefslogtreecommitdiff
path: root/ndb/tools/waiter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/tools/waiter.cpp')
-rw-r--r--ndb/tools/waiter.cpp34
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>;