make sure that the "conections are up to date" when exiting from MgmtSrvr::transporter_connect()

    Make sure that the node itself is set in the m_connected_nodes when connected
parent c9e5bacc
...@@ -154,6 +154,7 @@ Configuration::Configuration() ...@@ -154,6 +154,7 @@ Configuration::Configuration()
_daemonMode = false; _daemonMode = false;
m_config_retriever= 0; m_config_retriever= 0;
m_clusterConfig= 0; m_clusterConfig= 0;
m_clusterConfigIter= 0;
} }
Configuration::~Configuration(){ Configuration::~Configuration(){
...@@ -363,6 +364,8 @@ Configuration::setupConfiguration(){ ...@@ -363,6 +364,8 @@ Configuration::setupConfiguration(){
ConfigValues* cf = ConfigValuesFactory::extractCurrentSection(iter.m_config); ConfigValues* cf = ConfigValuesFactory::extractCurrentSection(iter.m_config);
if(m_clusterConfigIter)
ndb_mgm_destroy_iterator(m_clusterConfigIter);
m_clusterConfigIter = ndb_mgm_create_configuration_iterator m_clusterConfigIter = ndb_mgm_create_configuration_iterator
(p, CFG_SECTION_NODE); (p, CFG_SECTION_NODE);
......
...@@ -2909,7 +2909,18 @@ MgmtSrvr::getConnectionDbParameter(int node1, ...@@ -2909,7 +2909,18 @@ MgmtSrvr::getConnectionDbParameter(int node1,
void MgmtSrvr::transporter_connect(NDB_SOCKET_TYPE sockfd) void MgmtSrvr::transporter_connect(NDB_SOCKET_TYPE sockfd)
{ {
theFacade->get_registry()->connect_server(sockfd); if (theFacade->get_registry()->connect_server(sockfd))
{
/**
* Force an update_connections() so that the
* ClusterMgr and TransporterFacade is up to date
* with the new connection.
* Important for correct node id reservation handling
*/
NdbMutex_Lock(theFacade->theMutexPtr);
theFacade->get_registry()->update_connections();
NdbMutex_Unlock(theFacade->theMutexPtr);
}
} }
int MgmtSrvr::set_connect_string(const char *str) int MgmtSrvr::set_connect_string(const char *str)
......
...@@ -410,7 +410,13 @@ ClusterMgr::reportConnected(NodeId nodeId){ ...@@ -410,7 +410,13 @@ ClusterMgr::reportConnected(NodeId nodeId){
theNode.connected = true; theNode.connected = true;
theNode.hbSent = 0; theNode.hbSent = 0;
theNode.hbCounter = 0; theNode.hbCounter = 0;
/**
* make sure the node itself is marked connected even
* if first API_REGCONF has not arrived
*/
theNode.m_state.m_connected_nodes.set(nodeId);
if (theNode.m_info.m_type != NodeInfo::REP) { if (theNode.m_info.m_type != NodeInfo::REP) {
theNode.hbFrequency = 0; theNode.hbFrequency = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment