diff options
author | unknown <stewart@willster.(none)> | 2006-08-09 15:03:55 +0800 |
---|---|---|
committer | unknown <stewart@willster.(none)> | 2006-08-09 15:03:55 +0800 |
commit | 7fcb36e2afffeb63aa1be9a476a4c781413eeb70 (patch) | |
tree | 2d79a3c945b4b733534ffb5e1e788c5a8f2f6aa1 /ndb | |
parent | 4bf59910f7e8dc2e1ab933f6bd32103210565d3d (diff) | |
download | mariadb-git-7fcb36e2afffeb63aa1be9a476a4c781413eeb70.tar.gz |
BUG#13985
fixups after review by jonas
ndb/src/mgmclient/CommandInterpreter.cpp:
Guard the print mutex when running SHOW
ndb/src/mgmsrv/MgmtSrvr.cpp:
replace global_flag_send_heartbeat_now with forceHB()/updateStatus()
don't use bitmask as parameter to forceHB to reflect reality of what the
function does.
remove get_connected_ndb_nodes() as it is no longer used
ndb/src/mgmsrv/MgmtSrvr.hpp:
remove unused get_connected_ndb_nodes()
update updateStatus prototype
ndb/src/mgmsrv/Services.cpp:
use new prototype for updateStatus() - doesn't accept NodeBitmask
ndb/src/ndbapi/ClusterMgr.cpp:
remove global_flag_send_heartbeat_now, replace with forceHB.
compute bitmask of nodes to send HB to in forceHB
ndb/src/ndbapi/ClusterMgr.hpp:
update prototype for forceHB, don't give the illusion that NodeBitmask means much.
Diffstat (limited to 'ndb')
-rw-r--r-- | ndb/src/mgmclient/CommandInterpreter.cpp | 1 | ||||
-rw-r--r-- | ndb/src/mgmsrv/MgmtSrvr.cpp | 28 | ||||
-rw-r--r-- | ndb/src/mgmsrv/MgmtSrvr.hpp | 3 | ||||
-rw-r--r-- | ndb/src/mgmsrv/Services.cpp | 4 | ||||
-rw-r--r-- | ndb/src/ndbapi/ClusterMgr.cpp | 29 | ||||
-rw-r--r-- | ndb/src/ndbapi/ClusterMgr.hpp | 2 |
6 files changed, 27 insertions, 40 deletions
diff --git a/ndb/src/mgmclient/CommandInterpreter.cpp b/ndb/src/mgmclient/CommandInterpreter.cpp index 103c252ca04..d4f66a56da9 100644 --- a/ndb/src/mgmclient/CommandInterpreter.cpp +++ b/ndb/src/mgmclient/CommandInterpreter.cpp @@ -705,6 +705,7 @@ CommandInterpreter::execute_impl(const char *_line) DBUG_RETURN(true); if (strcasecmp(firstToken, "SHOW") == 0) { + Guard g(m_print_mutex); executeShow(allAfterFirstToken); DBUG_RETURN(true); } diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index d514f0da1a4..5fabb84adb7 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -77,7 +77,6 @@ }\ } -extern int global_flag_send_heartbeat_now; extern int g_no_nodeid_checks; extern my_bool opt_core; @@ -1456,9 +1455,9 @@ MgmtSrvr::exitSingleUser(int * stopCount, bool abort) #include <ClusterMgr.hpp> void -MgmtSrvr::updateStatus(NodeBitmask nodes) +MgmtSrvr::updateStatus() { - theFacade->theClusterMgr->forceHB(nodes); + theFacade->theClusterMgr->forceHB(); } int @@ -1985,25 +1984,6 @@ MgmtSrvr::get_connected_nodes(NodeBitmask &connected_nodes) const } } -void -MgmtSrvr::get_connected_ndb_nodes(NodeBitmask &connected_nodes) const -{ - NodeBitmask ndb_nodes; - if (theFacade && theFacade->theClusterMgr) - { - for(Uint32 i = 0; i < MAX_NODES; i++) - { - if (getNodeType(i) == NDB_MGM_NODE_TYPE_NDB) - { - ndb_nodes.set(i); - const ClusterMgr::Node &node= theFacade->theClusterMgr->getNodeInfo(i); - connected_nodes.bitOR(node.m_state.m_connected_nodes); - } - } - } - connected_nodes.bitAND(ndb_nodes); -} - bool MgmtSrvr::alloc_node_id(NodeId * nodeId, enum ndb_mgm_node_type type, @@ -2178,7 +2158,7 @@ MgmtSrvr::alloc_node_id(NodeId * nodeId, if (found_matching_type && !found_free_node) { // we have a temporary error which might be due to that // we have got the latest connect status from db-nodes. Force update. - global_flag_send_heartbeat_now= 1; + updateStatus(); } BaseString type_string, type_c_string; @@ -2532,7 +2512,7 @@ MgmtSrvr::Allocated_resources::~Allocated_resources() if (!m_reserved_nodes.isclear()) { m_mgmsrv.m_reserved_nodes.bitANDC(m_reserved_nodes); // node has been reserved, force update signal to ndb nodes - global_flag_send_heartbeat_now= 1; + m_mgmsrv.updateStatus(); char tmp_str[128]; m_mgmsrv.m_reserved_nodes.getText(tmp_str); diff --git a/ndb/src/mgmsrv/MgmtSrvr.hpp b/ndb/src/mgmsrv/MgmtSrvr.hpp index ab71fe6f4dc..17debb19f50 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.hpp +++ b/ndb/src/mgmsrv/MgmtSrvr.hpp @@ -488,10 +488,9 @@ public: const char *get_connect_address(Uint32 node_id); void get_connected_nodes(NodeBitmask &connected_nodes) const; - void get_connected_ndb_nodes(NodeBitmask &connected_nodes) const; SocketServer *get_socket_server() { return m_socket_server; } - void updateStatus(NodeBitmask nodes); + void updateStatus(); //************************************************************************** private: diff --git a/ndb/src/mgmsrv/Services.cpp b/ndb/src/mgmsrv/Services.cpp index 653f36ecc6d..7f5b0e29442 100644 --- a/ndb/src/mgmsrv/Services.cpp +++ b/ndb/src/mgmsrv/Services.cpp @@ -982,9 +982,7 @@ printNodeStatus(OutputStream *output, MgmtSrvr &mgmsrv, enum ndb_mgm_node_type type) { NodeId nodeId = 0; - NodeBitmask hbnodes; - mgmsrv.get_connected_ndb_nodes(hbnodes); - mgmsrv.updateStatus(hbnodes); + mgmsrv.updateStatus(); while(mgmsrv.getNextNodeId(&nodeId, type)) { enum ndb_mgm_node_status status; Uint32 startPhase = 0, diff --git a/ndb/src/ndbapi/ClusterMgr.cpp b/ndb/src/ndbapi/ClusterMgr.cpp index 28f65eebde8..4b3c409e9d4 100644 --- a/ndb/src/ndbapi/ClusterMgr.cpp +++ b/ndb/src/ndbapi/ClusterMgr.cpp @@ -37,8 +37,6 @@ #include <mgmapi_configuration.hpp> #include <mgmapi_config_parameters.h> -int global_flag_send_heartbeat_now= 0; - //#define DEBUG_REG // Just a C wrapper for threadMain @@ -169,7 +167,7 @@ ClusterMgr::doStop( ){ } void -ClusterMgr::forceHB(NodeBitmask waitFor) +ClusterMgr::forceHB() { theFacade.lock_mutex(); @@ -180,10 +178,25 @@ ClusterMgr::forceHB(NodeBitmask waitFor) return; } - global_flag_send_heartbeat_now= 1; waitingForHB= true; - waitForHBFromNodes= waitFor; + NodeBitmask ndb_nodes; + ndb_nodes.clear(); + waitForHBFromNodes.clear(); + for(Uint32 i = 0; i < MAX_NODES; i++) + { + if(!theNodes[i].defined) + continue; + if(theNodes[i].m_info.m_type == NodeInfo::DB) + { + ndb_nodes.set(i); + const ClusterMgr::Node &node= getNodeInfo(i); + waitForHBFromNodes.bitOR(node.m_state.m_connected_nodes); + } + ndbout << endl; + } + waitForHBFromNodes.bitAND(ndb_nodes); + #ifdef DEBUG_REG char buf[128]; ndbout << "Waiting for HB from " << waitForHBFromNodes.getText(buf) << endl; @@ -239,9 +252,6 @@ ClusterMgr::threadMain( ){ /** * Start of Secure area for use of Transporter */ - int send_heartbeat_now= global_flag_send_heartbeat_now; - global_flag_send_heartbeat_now= 0; - theFacade.lock_mutex(); for (int i = 1; i < MAX_NODES; i++){ /** @@ -264,8 +274,7 @@ ClusterMgr::threadMain( ){ } theNode.hbCounter += timeSlept; - if (theNode.hbCounter >= theNode.hbFrequency || - send_heartbeat_now) { + if (theNode.hbCounter >= theNode.hbFrequency) { /** * It is now time to send a new Heartbeat */ diff --git a/ndb/src/ndbapi/ClusterMgr.hpp b/ndb/src/ndbapi/ClusterMgr.hpp index b9863821b4f..d2bcc52f7e8 100644 --- a/ndb/src/ndbapi/ClusterMgr.hpp +++ b/ndb/src/ndbapi/ClusterMgr.hpp @@ -50,7 +50,7 @@ public: void doStop(); void startThread(); - void forceHB(NodeBitmask waitFor); + void forceHB(); private: void threadMain(); |