ndb_mgm_configuration* NdbRestarter::getConfig(){ if(m_config) return m_config; if (!isConnected()) return 0; m_config = ndb_mgm_get_configuration(handle, 0); return m_config; }
ndb_mgm_configuration* fetch_configuration() { ndb_mgm_configuration* conf = 0; NdbMgmHandle mgm = ndb_mgm_create_handle(); if(mgm == NULL) { fprintf(stderr, "Cannot create handle to management server.\n"); return 0; } ndb_mgm_set_error_stream(mgm, stderr); if (ndb_mgm_set_connectstring(mgm, opt_connect_str)) { fprintf(stderr, "* %5d: %s\n", ndb_mgm_get_latest_error(mgm), ndb_mgm_get_latest_error_msg(mgm)); fprintf(stderr, "* %s", ndb_mgm_get_latest_error_desc(mgm)); goto noconnect; } if(ndb_mgm_connect(mgm, try_reconnect-1, 5, 1)) { fprintf(stderr, "Connect failed"); fprintf(stderr, " code: %d, msg: %s\n", ndb_mgm_get_latest_error(mgm), ndb_mgm_get_latest_error_msg(mgm)); goto noconnect; } else if(g_verbose) { fprintf(stderr, "Connected to %s:%d\n", ndb_mgm_get_connected_host(mgm), ndb_mgm_get_connected_port(mgm)); } conf = ndb_mgm_get_configuration(mgm, 0); if(conf == 0) { fprintf(stderr, "Could not get configuration"); fprintf(stderr, "code: %d, msg: %s\n", ndb_mgm_get_latest_error(mgm), ndb_mgm_get_latest_error_msg(mgm)); } else if(g_verbose) { fprintf(stderr, "Fetched configuration\n"); } ndb_mgm_disconnect(mgm); noconnect: ndb_mgm_destroy_handle(&mgm); return conf; }
ndb_mgm_configuration * ConfigRetriever::getConfig(NdbMgmHandle m_handle_arg) { ndb_mgm_configuration * conf = ndb_mgm_get_configuration(m_handle_arg, m_version); if(conf == 0) { BaseString tmp(ndb_mgm_get_latest_error_msg(m_handle_arg)); tmp.append(" : "); tmp.append(ndb_mgm_get_latest_error_desc(m_handle_arg)); setError(CR_ERROR, tmp.c_str()); return 0; } return conf; }
bool get_config(Config& config){ if (!is_connected()){ error("get_config: not connected"); return false; } struct ndb_mgm_configuration* conf = ndb_mgm_get_configuration(m_handle,0); if (!conf) { error("get_config: ndb_mgm_get_configuration failed"); return false; } config.m_configValues= conf; return true; }
const char * NdbBackup::getBackupDataDirForNode(int _node_id){ /** * Fetch configuration from management server */ ndb_mgm_configuration *p; if (connect()) return NULL; if ((p = ndb_mgm_get_configuration(handle, 0)) == 0) { const char * s= ndb_mgm_get_latest_error_msg(handle); if(s == 0) s = "No error given!"; ndbout << "Could not fetch configuration" << endl; ndbout << s << endl; return NULL; } /** * Setup cluster configuration data */ ndb_mgm_configuration_iterator iter(* p, CFG_SECTION_NODE); if (iter.find(CFG_NODE_ID, _node_id)){ ndbout << "Invalid configuration fetched, DB missing" << endl; return NULL; } unsigned int type = NODE_TYPE_DB + 1; if(iter.get(CFG_TYPE_OF_SECTION, &type) || type != NODE_TYPE_DB){ ndbout <<"type = " << type << endl; ndbout <<"Invalid configuration fetched, I'm wrong type of node" << endl; return NULL; } const char * path; if (iter.get(CFG_DB_BACKUP_DATADIR, &path)){ ndbout << "BackupDataDir not found" << endl; return NULL; } return path; }
int runTestMgmApiGetConfigTimeout(NDBT_Context* ctx, NDBT_Step* step) { char *mgm= ctx->getRemoteMgm(); int result= NDBT_OK; int mgmd_nodeid= 0; NdbMgmHandle h; h= ndb_mgm_create_handle(); ndb_mgm_set_connectstring(h, mgm); int errs[] = { 0, 1, 2, 3, -1 }; for(int error_ins_no=0; errs[error_ins_no]!=-1; error_ins_no++) { int error_ins= errs[error_ins_no]; ndb_mgm_connect(h,0,0,0); if(ndb_mgm_check_connection(h) < 0) { result= NDBT_FAILED; goto done; } mgmd_nodeid= ndb_mgm_get_mgmd_nodeid(h); if(mgmd_nodeid==0) { ndbout << "Failed to get mgmd node id to insert error" << endl; result= NDBT_FAILED; goto done; } ndb_mgm_reply reply; reply.return_code= 0; if(ndb_mgm_insert_error(h, mgmd_nodeid, error_ins, &reply)< 0) { ndbout << "failed to insert error " << error_ins << endl; result= NDBT_FAILED; } ndbout << "trying error: " << error_ins << endl; ndb_mgm_set_timeout(h,2500); struct ndb_mgm_configuration *c= ndb_mgm_get_configuration(h,0); if(c!=NULL) free(c); if(error_ins!=0 && c!=NULL) { ndbout << "FAILED: got a ndb_mgm_configuration back" << endl; result= NDBT_FAILED; } if(error_ins!=0 && ndb_mgm_is_connected(h)) { ndbout << "FAILED: is still connected after error" << endl; result= NDBT_FAILED; } if(error_ins!=0 && ndb_mgm_get_latest_error(h)!=ETIMEDOUT) { ndbout << "FAILED: Incorrect error code (" << ndb_mgm_get_latest_error(h) << " != expected " << ETIMEDOUT << ") desc: " << ndb_mgm_get_latest_error_desc(h) << " line: " << ndb_mgm_get_latest_error_line(h) << " msg: " << ndb_mgm_get_latest_error_msg(h) << endl; result= NDBT_FAILED; } } done: ndb_mgm_disconnect(h); ndb_mgm_destroy_handle(&h); return result; }