List:Commits« Previous MessageNext Message »
From:jonas Date:July 7 2007 9:16pm
Subject:bk commit into 5.1 tree (jonas:1.2158) BUG#29621
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-07-07 23:15:58+02:00, jonas@stripped +1 -0
  ndb - bug#29621 - setEventReportImpl can timeout
  1) remove retry from setEventReportImpl
  2) set retry in logevent thread

  storage/ndb/src/mgmsrv/MgmtSrvr.cpp@stripped, 2007-07-07 23:15:56+02:00, jonas@stripped +54 -30
    bug#29621 -
    1) remove retry from setEventReportImpl
    2) set retry in logevent thread

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	jonas
# Host:	perch.ndb.mysql.com
# Root:	/home/jonas/src/drop6

--- 1.102/storage/ndb/src/mgmsrv/MgmtSrvr.cpp	2007-07-07 23:16:02 +02:00
+++ 1.103/storage/ndb/src/mgmsrv/MgmtSrvr.cpp	2007-07-07 23:16:02 +02:00
@@ -118,7 +118,11 @@
 void
 MgmtSrvr::logLevelThreadRun() 
 {
-  while (!_isStopThread) {
+  while (!_isStopThread) 
+  {
+    Vector<NodeId> failed_started_nodes;
+    Vector<EventSubscribeReq> failed_log_level_requests;
+
     /**
      * Handle started nodes
      */
@@ -143,14 +147,16 @@
         m_started_nodes.unlock();
 
         if (setEventReportingLevelImpl(node, req))
-	{
-	  ndbout_c("setEventReportingLevelImpl(%d): failed", node);
-	}
-	
-        SetLogLevelOrd ord;
-        ord = m_nodeLogLevel[node];
-        setNodeLogLevelImpl(node, ord);
-
+        {
+          failed_started_nodes.push_back(node);
+          ndbout_c("setEventReportingLevelImpl(%d): failed", node);
+        }
+        else
+        {
+          SetLogLevelOrd ord;
+          ord = m_nodeLogLevel[node];
+          setNodeLogLevelImpl(node, ord);
+        }
         m_started_nodes.lock();
       }
     }
@@ -165,17 +171,21 @@
 
       if(req.blockRef == 0)
       {
-	req.blockRef = _ownReference;
-	if (setEventReportingLevelImpl(0, req))
-	{
-	  ndbout_c("setEventReportingLevelImpl: failed 2!");
-	}
+        req.blockRef = _ownReference;
+        if (setEventReportingLevelImpl(0, req))
+        {
+          ndbout_c("setEventReportingLevelImpl: failed 2!");
+          failed_log_level_requests.push_back(req);
+        }
       } 
       else 
       {
         SetLogLevelOrd ord;
         ord = req;
-	setNodeLogLevelImpl(req.blockRef, ord);
+        if (setNodeLogLevelImpl(req.blockRef, ord))
+        {
+          failed_log_level_requests.push_back(req);
+        }
       }
       m_log_level_requests.lock();
     }      
@@ -184,7 +194,28 @@
     if(!ERROR_INSERTED(10000))
       m_event_listner.check_listeners();
 
-    NdbSleep_MilliSleep(_logLevelThreadSleep);  
+    Uint32 sleeptime = _logLevelThreadSleep;
+    if (failed_started_nodes.size())
+    {
+      m_started_nodes.lock();
+      for (Uint32 i = 0; i<failed_started_nodes.size(); i++)
+        m_started_nodes.push_back(failed_started_nodes[i], false);
+      m_started_nodes.unlock();
+      failed_started_nodes.clear();
+      sleeptime = 100;
+    }
+
+    if (failed_log_level_requests.size())
+    {
+      m_log_level_requests.lock();
+      for (Uint32 i = 0; i<failed_log_level_requests.size(); i++)
+        m_log_level_requests.push_back(failed_log_level_requests[i], false);
+      m_log_level_requests.unlock();
+      failed_log_level_requests.clear();
+      sleeptime = 100;
+    }
+
+    NdbSleep_MilliSleep(sleeptime);
   }
 }
 
@@ -1391,7 +1422,6 @@
 {
   SignalSender ss(theFacade);
   NdbNodeBitmask nodes;
-  int retries = 30;
   nodes.clear();
   while (1)
   {
@@ -1428,18 +1458,8 @@
           continue;
         }
         // api_reg_conf not recevied yet, need to retry
-        break;
-      }
-    }
-    if (nodeId <= max)
-    {
-      if (--retries)
-      {
-        ss.unlock();
-        NdbSleep_MilliSleep(100);  
-        continue;
+        return SEND_OR_RECEIVE_FAILED;
       }
-      return SEND_OR_RECEIVE_FAILED;
     }
 
     if (nodeId_arg == 0)
@@ -1463,6 +1483,10 @@
         continue; // node is not connected, skip
       if (ss.sendSignal(nodeId, &ssig) == SEND_OK)
         nodes.set(nodeId);
+      else if (max == nodeId)
+      {
+        return SEND_OR_RECEIVE_FAILED;
+      }
     }
     break;
   }
@@ -2831,8 +2855,8 @@
   return ndb_mgm_set_connectstring(m_config_retriever->get_mgmHandle(),str);
 }
 
-
-
+template class Vector<unsigned short>;
 template class MutexVector<unsigned short>;
 template class MutexVector<Ndb_mgmd_event_service::Event_listener>;
+template class Vector<EventSubscribeReq>;
 template class MutexVector<EventSubscribeReq>;
Thread
bk commit into 5.1 tree (jonas:1.2158) BUG#29621jonas7 Jul