reuse nodeid if ndbd is restarted

mysql-test/mysql-test-run.pl:
  start and exit fix for ndbcluster
This commit is contained in:
unknown 2005-02-16 20:46:34 +01:00
commit 2eb2383ed0
6 changed files with 32 additions and 1 deletions

View file

@ -376,6 +376,7 @@ extern "C" {
int ndb_mgm_set_connectstring(NdbMgmHandle handle,
const char *connect_string);
int ndb_mgm_set_configuration_nodeid(NdbMgmHandle handle, int nodeid);
int ndb_mgm_get_configuration_nodeid(NdbMgmHandle handle);
int ndb_mgm_get_connected_port(NdbMgmHandle handle);
const char *ndb_mgm_get_connected_host(NdbMgmHandle handle);

View file

@ -55,6 +55,8 @@ public:
*/
Uint32 allocNodeId(int no_retries, int retry_delay_in_seconds);
int setNodeId(Uint32 nodeid);
/**
* Get config using socket
*/

View file

@ -316,6 +316,12 @@ ConfigRetriever::verifyConfig(const struct ndb_mgm_configuration * conf, Uint32
return true;
}
int
ConfigRetriever::setNodeId(Uint32 nodeid)
{
return ndb_mgm_set_configuration_nodeid(m_handle, nodeid);
}
Uint32
ConfigRetriever::allocNodeId(int no_retries, int retry_delay_in_seconds)
{

View file

@ -141,6 +141,8 @@ Configuration::init(int argc, char** argv)
else
_programName = strdup("");
globalData.ownId= 0;
return true;
}
@ -215,6 +217,13 @@ Configuration::fetch_configuration(){
ConfigRetriever &cr= *m_config_retriever;
/**
* if we have a nodeid set (e.g in a restart situation)
* reuse it
*/
if (globalData.ownId)
cr.setNodeId(globalData.ownId);
globalData.ownId = cr.allocNodeId(2 /*retry*/,3 /*delay*/);
if(globalData.ownId == 0){

View file

@ -1720,6 +1720,15 @@ ndb_mgm_destroy_configuration(struct ndb_mgm_configuration *cfg)
}
}
extern "C"
int
ndb_mgm_set_configuration_nodeid(NdbMgmHandle handle, int nodeid)
{
CHECK_HANDLE(handle, -1);
handle->cfg._ownNodeId= nodeid;
return 0;
}
extern "C"
int
ndb_mgm_get_configuration_nodeid(NdbMgmHandle handle)