summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2004-11-30 12:02:53 +0000
committerunknown <tomas@poseidon.ndb.mysql.com>2004-11-30 12:02:53 +0000
commit07ed8294fa83e1c5acd3ecc4691667690e578581 (patch)
tree9e994ebd29b93f915f209718d9835e481c09d3c8 /ndb
parent3eada05db21329d7a295994c075241927e58fc83 (diff)
downloadmariadb-git-07ed8294fa83e1c5acd3ecc4691667690e578581.tar.gz
added check connection mgmapi method
added ndb_mgm_check_connection when error is printed ndb/include/mgmapi/mgmapi.h: added check connection mgmapi method ndb/src/mgmapi/mgmapi.cpp: added check connection mgmapi method ndb/src/mgmclient/CommandInterpreter.cpp: added mgm_check_check_connection when error is printed ndb/src/mgmsrv/Services.cpp: added check connection mgmapi method ndb/src/mgmsrv/Services.hpp: added check connection mgmapi method
Diffstat (limited to 'ndb')
-rw-r--r--ndb/include/mgmapi/mgmapi.h1
-rw-r--r--ndb/src/mgmapi/mgmapi.cpp34
-rw-r--r--ndb/src/mgmclient/CommandInterpreter.cpp7
-rw-r--r--ndb/src/mgmsrv/Services.cpp11
-rw-r--r--ndb/src/mgmsrv/Services.hpp1
5 files changed, 51 insertions, 3 deletions
diff --git a/ndb/include/mgmapi/mgmapi.h b/ndb/include/mgmapi/mgmapi.h
index a23417f153a..26add86a468 100644
--- a/ndb/include/mgmapi/mgmapi.h
+++ b/ndb/include/mgmapi/mgmapi.h
@@ -746,6 +746,7 @@ extern "C" {
int ndb_mgm_get_string_parameter(const ndb_mgm_configuration_iterator*,
int param, const char ** value);
int ndb_mgm_purge_stale_sessions(NdbMgmHandle handle, char **);
+ int ndb_mgm_check_connection(NdbMgmHandle handle);
#ifdef __cplusplus
}
#endif
diff --git a/ndb/src/mgmapi/mgmapi.cpp b/ndb/src/mgmapi/mgmapi.cpp
index 831d14eac52..e6328604c1b 100644
--- a/ndb/src/mgmapi/mgmapi.cpp
+++ b/ndb/src/mgmapi/mgmapi.cpp
@@ -1934,4 +1934,38 @@ ndb_mgm_purge_stale_sessions(NdbMgmHandle handle, char **purged){
return res;
}
+extern "C"
+int
+ndb_mgm_check_connection(NdbMgmHandle handle){
+ CHECK_HANDLE(handle, 0);
+ CHECK_CONNECTED(handle, 0);
+ SocketOutputStream out(handle->socket);
+ SocketInputStream in(handle->socket, handle->read_timeout);
+ char buf[32];
+
+ if (out.println("check connection"))
+ goto ndb_mgm_check_connection_error;
+
+ if (out.println(""))
+ goto ndb_mgm_check_connection_error;
+
+ in.gets(buf, sizeof(buf));
+ if(strcmp("check connection reply\n", buf))
+ goto ndb_mgm_check_connection_error;
+
+ in.gets(buf, sizeof(buf));
+ if(strcmp("result: Ok\n", buf))
+ goto ndb_mgm_check_connection_error;
+
+ in.gets(buf, sizeof(buf));
+ if(strcmp("\n", buf))
+ goto ndb_mgm_check_connection_error;
+
+ return 0;
+
+ndb_mgm_check_connection_error:
+ ndb_mgm_disconnect(handle);
+ return -1;
+}
+
template class Vector<const ParserRow<ParserDummy>*>;
diff --git a/ndb/src/mgmclient/CommandInterpreter.cpp b/ndb/src/mgmclient/CommandInterpreter.cpp
index ce8bafc36c5..f36dddf815d 100644
--- a/ndb/src/mgmclient/CommandInterpreter.cpp
+++ b/ndb/src/mgmclient/CommandInterpreter.cpp
@@ -429,6 +429,8 @@ emptyString(const char* s)
void
CommandInterpreter::printError()
{
+ if (ndb_mgm_check_connection(m_mgmsrv))
+ connected= false;
ndbout_c("* %5d: %s",
ndb_mgm_get_latest_error(m_mgmsrv),
ndb_mgm_get_latest_error_msg(m_mgmsrv));
@@ -1030,9 +1032,6 @@ CommandInterpreter::executeShow(char* parameters)
{
int i;
if (emptyString(parameters)) {
- ndbout << "Cluster Configuration" << endl
- << "---------------------" << endl;
-
ndb_mgm_cluster_state *state = ndb_mgm_get_status(m_mgmsrv);
if(state == NULL) {
ndbout_c("Could not get status");
@@ -1092,6 +1091,8 @@ CommandInterpreter::executeShow(char* parameters)
}
}
+ ndbout << "Cluster Configuration" << endl
+ << "---------------------" << endl;
print_nodes(state, it, "ndbd", ndb_nodes, NDB_MGM_NODE_TYPE_NDB, master_id);
print_nodes(state, it, "ndb_mgmd", mgm_nodes, NDB_MGM_NODE_TYPE_MGM, 0);
print_nodes(state, it, "mysqld", api_nodes, NDB_MGM_NODE_TYPE_API, 0);
diff --git a/ndb/src/mgmsrv/Services.cpp b/ndb/src/mgmsrv/Services.cpp
index 0208805b2d3..5834d40cc78 100644
--- a/ndb/src/mgmsrv/Services.cpp
+++ b/ndb/src/mgmsrv/Services.cpp
@@ -244,6 +244,8 @@ ParserRow<MgmApiSession> commands[] = {
MGM_CMD("purge stale sessions", &MgmApiSession::purge_stale_sessions, ""),
+ MGM_CMD("check connection", &MgmApiSession::check_connection, ""),
+
MGM_END()
};
@@ -1454,6 +1456,15 @@ MgmApiSession::purge_stale_sessions(Parser_t::Context &ctx,
m_output->println("");
}
+void
+MgmApiSession::check_connection(Parser_t::Context &ctx,
+ const class Properties &args)
+{
+ m_output->println("check connection reply");
+ m_output->println("result: Ok");
+ m_output->println("");
+}
+
template class MutexVector<int>;
template class Vector<ParserRow<MgmApiSession> const*>;
template class Vector<unsigned short>;
diff --git a/ndb/src/mgmsrv/Services.hpp b/ndb/src/mgmsrv/Services.hpp
index 7d614d6241c..6a5f06a659e 100644
--- a/ndb/src/mgmsrv/Services.hpp
+++ b/ndb/src/mgmsrv/Services.hpp
@@ -91,6 +91,7 @@ public:
void listen_event(Parser_t::Context &ctx, const class Properties &args);
void purge_stale_sessions(Parser_t::Context &ctx, const class Properties &args);
+ void check_connection(Parser_t::Context &ctx, const class Properties &args);
void repCommand(Parser_t::Context &ctx, const class Properties &args);
};