Bug #20336 CLUSTERLOG commands have no effect

- always calculate max log level on node start
- send event subscribe uncond
parent 50bb4b6c
...@@ -119,40 +119,49 @@ MgmtSrvr::logLevelThreadRun() ...@@ -119,40 +119,49 @@ MgmtSrvr::logLevelThreadRun()
/** /**
* Handle started nodes * Handle started nodes
*/ */
m_started_nodes.lock();
if (m_started_nodes.size() > 0)
{
// calculate max log level
EventSubscribeReq req; EventSubscribeReq req;
req = m_event_listner[0].m_logLevel; {
LogLevel tmp;
m_event_listner.lock();
for(int i = m_event_listner.m_clients.size() - 1; i >= 0; i--)
tmp.set_max(m_event_listner[i].m_logLevel);
m_event_listner.unlock();
req = tmp;
}
req.blockRef = _ownReference; req.blockRef = _ownReference;
while (m_started_nodes.size() > 0)
SetLogLevelOrd ord; {
m_started_nodes.lock();
while(m_started_nodes.size() > 0){
Uint32 node = m_started_nodes[0]; Uint32 node = m_started_nodes[0];
m_started_nodes.erase(0, false); m_started_nodes.erase(0, false);
m_started_nodes.unlock(); m_started_nodes.unlock();
setEventReportingLevelImpl(node, req); setEventReportingLevelImpl(node, req);
SetLogLevelOrd ord;
ord = m_nodeLogLevel[node]; ord = m_nodeLogLevel[node];
setNodeLogLevelImpl(node, ord); setNodeLogLevelImpl(node, ord);
m_started_nodes.lock(); m_started_nodes.lock();
} }
}
m_started_nodes.unlock(); m_started_nodes.unlock();
m_log_level_requests.lock(); m_log_level_requests.lock();
while(m_log_level_requests.size() > 0){ while (m_log_level_requests.size() > 0)
req = m_log_level_requests[0]; {
EventSubscribeReq req = m_log_level_requests[0];
m_log_level_requests.erase(0, false); m_log_level_requests.erase(0, false);
m_log_level_requests.unlock(); m_log_level_requests.unlock();
LogLevel tmp;
tmp = req;
if(req.blockRef == 0){ if(req.blockRef == 0){
req.blockRef = _ownReference; req.blockRef = _ownReference;
setEventReportingLevelImpl(0, req); setEventReportingLevelImpl(0, req);
} else { } else {
SetLogLevelOrd ord;
ord = req; ord = req;
setNodeLogLevelImpl(req.blockRef, ord); setNodeLogLevelImpl(req.blockRef, ord);
} }
...@@ -1291,7 +1300,7 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId, ...@@ -1291,7 +1300,7 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId,
{ {
if (nodeTypes[nodeId] != NODE_TYPE_DB) if (nodeTypes[nodeId] != NODE_TYPE_DB)
continue; continue;
if (okToSendTo(nodeId, false)) if (okToSendTo(nodeId, true))
continue; continue;
if (ss.sendSignal(nodeId, &ssig) == SEND_OK) if (ss.sendSignal(nodeId, &ssig) == SEND_OK)
{ {
......
...@@ -1258,13 +1258,12 @@ Ndb_mgmd_event_service::update_max_log_level(const LogLevel &log_level) ...@@ -1258,13 +1258,12 @@ Ndb_mgmd_event_service::update_max_log_level(const LogLevel &log_level)
void void
Ndb_mgmd_event_service::update_log_level(const LogLevel &tmp) Ndb_mgmd_event_service::update_log_level(const LogLevel &tmp)
{ {
if(!(tmp == m_logLevel)){
m_logLevel = tmp; m_logLevel = tmp;
EventSubscribeReq req; EventSubscribeReq req;
req = tmp; req = tmp;
// send update to all nodes
req.blockRef = 0; req.blockRef = 0;
m_mgmsrv->m_log_level_requests.push_back(req); m_mgmsrv->m_log_level_requests.push_back(req);
}
} }
void void
......
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