summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <stewart@willster.(none)>2006-08-09 15:03:55 +0800
committerunknown <stewart@willster.(none)>2006-08-09 15:03:55 +0800
commit7fcb36e2afffeb63aa1be9a476a4c781413eeb70 (patch)
tree2d79a3c945b4b733534ffb5e1e788c5a8f2f6aa1 /ndb
parent4bf59910f7e8dc2e1ab933f6bd32103210565d3d (diff)
downloadmariadb-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.cpp1
-rw-r--r--ndb/src/mgmsrv/MgmtSrvr.cpp28
-rw-r--r--ndb/src/mgmsrv/MgmtSrvr.hpp3
-rw-r--r--ndb/src/mgmsrv/Services.cpp4
-rw-r--r--ndb/src/ndbapi/ClusterMgr.cpp29
-rw-r--r--ndb/src/ndbapi/ClusterMgr.hpp2
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();