Commit 40d687eb authored by unknown's avatar unknown
Browse files

Bug #20336 CLUSTERLOG commands have no effect

- always calculate max log level on node start
- send event subscribe uncond


ndb/src/mgmsrv/Services.cpp:
  Bug #20336 CLUSTERLOG commands have no effect
  - always send log level update
parent 96fe14dd
Loading
Loading
Loading
Loading
+34 −25
Original line number Diff line number Diff line
@@ -119,40 +119,49 @@ MgmtSrvr::logLevelThreadRun()
    /**
     * Handle started nodes
     */
    m_started_nodes.lock();
    if (m_started_nodes.size() > 0)
    {
      // calculate max log level
      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;

    SetLogLevelOrd ord;
    
    m_started_nodes.lock();
    while(m_started_nodes.size() > 0){
      while (m_started_nodes.size() > 0)
      {
        Uint32 node = m_started_nodes[0];
        m_started_nodes.erase(0, false);
        m_started_nodes.unlock();

        setEventReportingLevelImpl(node, req);

        SetLogLevelOrd ord;
        ord = m_nodeLogLevel[node];
        setNodeLogLevelImpl(node, ord);

        m_started_nodes.lock();
      }
    }
    m_started_nodes.unlock();
    
    m_log_level_requests.lock();
    while(m_log_level_requests.size() > 0){
      req = m_log_level_requests[0];
    while (m_log_level_requests.size() > 0)
    {
      EventSubscribeReq req = m_log_level_requests[0];
      m_log_level_requests.erase(0, false);
      m_log_level_requests.unlock();

      LogLevel tmp;
      tmp = req;
      
      if(req.blockRef == 0){
	req.blockRef = _ownReference;
	setEventReportingLevelImpl(0, req);
      } else {
        SetLogLevelOrd ord;
        ord = req;
	setNodeLogLevelImpl(req.blockRef, ord);
      }
@@ -1291,7 +1300,7 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId,
  {
    if (nodeTypes[nodeId] != NODE_TYPE_DB)
      continue;
    if (okToSendTo(nodeId, false))
    if (okToSendTo(nodeId, true))
      continue;
    if (ss.sendSignal(nodeId, &ssig) == SEND_OK)
    {
+6 −7
Original line number Diff line number Diff line
@@ -1258,14 +1258,13 @@ Ndb_mgmd_event_service::update_max_log_level(const LogLevel &log_level)
void
Ndb_mgmd_event_service::update_log_level(const LogLevel &tmp)
{
  if(!(tmp == m_logLevel)){
  m_logLevel = tmp;
  EventSubscribeReq req;
  req = tmp;
  // send update to all nodes
  req.blockRef = 0;
  m_mgmsrv->m_log_level_requests.push_back(req);
}
}

void
Ndb_mgmd_event_service::check_listeners()