List:Commits« Previous MessageNext Message »
From:pekka Date:February 7 2006 6:10pm
Subject:bk commit into 5.0 tree (pekka:1.2039)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of pekka. When pekka 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
  1.2039 06/02/07 18:10:42 pekka@stripped +3 -0
  ndb - add option ndbd --foreground for manual debugging

  ndb/src/kernel/vm/Configuration.hpp
    1.18 06/02/07 18:09:44 pekka@stripped +9 -1
    add option ndbd --foreground for manual debugging

  ndb/src/kernel/vm/Configuration.cpp
    1.43 06/02/07 18:09:44 pekka@stripped +14 -3
    add option ndbd --foreground for manual debugging

  ndb/src/kernel/main.cpp
    1.60 06/02/07 18:09:44 pekka@stripped +11 -7
    add option ndbd --foreground for manual debugging

# 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:	pekka
# Host:	orca.ndb.mysql.com
# Root:	/space/pekka/ndb/version/my50

--- 1.59/ndb/src/kernel/main.cpp	2006-02-07 14:02:12 +01:00
+++ 1.60/ndb/src/kernel/main.cpp	2006-02-07 18:09:44 +01:00
@@ -272,8 +272,8 @@
 #ifndef NDB_WIN32
   signal(SIGUSR1, handler_sigusr1);
 
-  pid_t child;
-  while (1)
+  pid_t child = -1;
+  while (! theConfig->getForegroundMode()) // the cond is const
   {
     // setup reporting between child and parent
     int filedes[2];
@@ -395,8 +395,10 @@
 
   if (child >= 0)
     g_eventLogger.info("Angel pid: %d ndb pid: %d", getppid(), getpid());
-  else
+  else if (child > 0)
     g_eventLogger.info("Ndb pid: %d", getpid());
+  else
+    g_eventLogger.info("Ndb started in foreground");
 #else
   g_eventLogger.info("Ndb started");
 #endif
@@ -571,10 +573,7 @@
 #ifdef SIGPOLL
     SIGPOLL,
 #endif
-    SIGSEGV,
-#ifdef SIGTRAP
-    SIGTRAP
-#endif
+    SIGSEGV
   };
 
   static const int signals_ignore[] = {
@@ -588,6 +587,11 @@
     handler_register(signals_error[i], handler_error, ignore);
   for(i = 0; i < sizeof(signals_ignore)/sizeof(signals_ignore[0]); i++)
     handler_register(signals_ignore[i], SIG_IGN, ignore);
+#ifdef SIGTRAP
+  Configuration* theConfig = globalEmulatorData.theConfiguration;
+  if (! theConfig->getForegroundMode())
+    handler_register(SIGTRAP, handler_error, ignore);
+#endif
 #endif
 }
 

--- 1.42/ndb/src/kernel/vm/Configuration.cpp	2006-01-16 14:13:13 +01:00
+++ 1.43/ndb/src/kernel/vm/Configuration.cpp	2006-02-07 18:09:44 +01:00
@@ -48,11 +48,13 @@
 
 enum ndbd_options {
   OPT_INITIAL = NDB_STD_OPTIONS_LAST,
-  OPT_NODAEMON
+  OPT_NODAEMON,
+  OPT_FOREGROUND
 };
 
 NDB_STD_OPTS_VARS;
-static int _daemon, _no_daemon, _initial, _no_start;
+// XXX should be my_bool ???
+static int _daemon, _no_daemon, _foreground,  _initial, _no_start;
 /**
  * Arguments to NDB process
  */ 
@@ -75,6 +77,11 @@
     "Do not start ndbd as daemon, provided for testing purposes",
     (gptr*) &_no_daemon, (gptr*) &_no_daemon, 0,
     GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
+  { "foreground", OPT_FOREGROUND,
+    "Run real ndbd in foreground, provided for debugging purposes"
+    " (implies --nodaemon)",
+    (gptr*) &_foreground, (gptr*) &_foreground, 0,
+    GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
   { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
 };
 static void short_usage_sub(void)
@@ -103,13 +110,14 @@
 			       ndb_std_get_one_option)))
     exit(ho_error);
 
-  if (_no_daemon) {
+  if (_no_daemon || _foreground) {
     _daemon= 0;
   }
 
   DBUG_PRINT("info", ("no_start=%d", _no_start));
   DBUG_PRINT("info", ("initial=%d", _initial));
   DBUG_PRINT("info", ("daemon=%d", _daemon));
+  DBUG_PRINT("info", ("foreground=%d", _foreground));
   DBUG_PRINT("info", ("connect_str=%s", opt_connect_str));
 
   ndbSetOwnVersion();
@@ -131,6 +139,8 @@
   // Check daemon flag
   if (_daemon)
     _daemonMode = true;
+  if (_foreground)
+    _foregroundMode = true;
 
   // Save programname
   if(argc > 0 && argv[0] != 0)
@@ -151,6 +161,7 @@
   _backupPath = 0;
   _initialStart = false;
   _daemonMode = false;
+  _foregroundMode = false;
   m_config_retriever= 0;
   m_clusterConfig= 0;
   m_clusterConfigIter= 0;

--- 1.17/ndb/src/kernel/vm/Configuration.hpp	2006-01-16 14:13:13 +01:00
+++ 1.18/ndb/src/kernel/vm/Configuration.hpp	2006-02-07 18:09:44 +01:00
@@ -64,6 +64,7 @@
   bool getInitialStart() const;
   void setInitialStart(bool val);
   bool getDaemonMode() const;
+  bool getForegroundMode() const;
 
   const ndb_mgm_configuration_iterator * getOwnConfigIterator() const;
 
@@ -105,7 +106,8 @@
   char * _connectString;
   Uint32 m_mgmd_port;
   BaseString m_mgmd_host;
-  bool _daemonMode;
+  bool _daemonMode; // if not, angel in foreground
+  bool _foregroundMode; // no angel, raw ndbd in foreground
 
   void calcSizeAlt(class ConfigValues * );
 };
@@ -138,6 +140,12 @@
 bool
 Configuration::getDaemonMode() const {
   return _daemonMode;
+}
+
+inline
+bool
+Configuration::getForegroundMode() const {
+  return _foregroundMode;
 }
 
 #endif
Thread
bk commit into 5.0 tree (pekka:1.2039)pekka7 Feb