Commit 07ed8294 authored by unknown's avatar unknown
Browse files

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
parent 3eada05d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+34 −0
Original line number Diff line number Diff line
@@ -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>*>;
+4 −3
Original line number Diff line number Diff line
@@ -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);
+11 −0
Original line number Diff line number Diff line
@@ -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>;
+1 −0
Original line number Diff line number Diff line
@@ -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);
};