Commit 895d0946 authored by unknown's avatar unknown

ndb - add option ndbd --foreground for manual debugging


ndb/src/kernel/main.cpp:
  add option ndbd --foreground for manual debugging
ndb/src/kernel/vm/Configuration.cpp:
  add option ndbd --foreground for manual debugging
ndb/src/kernel/vm/Configuration.hpp:
  add option ndbd --foreground for manual debugging
parent 6321a621
......@@ -272,8 +272,8 @@ int main(int argc, char** argv)
#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 @@ int main(int argc, char** argv)
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 @@ catchsigs(bool ignore){
#ifdef SIGPOLL
SIGPOLL,
#endif
SIGSEGV,
#ifdef SIGTRAP
SIGTRAP
#endif
SIGSEGV
};
static const int signals_ignore[] = {
......@@ -588,6 +587,11 @@ catchsigs(bool ignore){
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
}
......
......@@ -48,11 +48,13 @@ extern EventLogger g_eventLogger;
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 @@ static struct my_option my_long_options[] =
"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 @@ Configuration::init(int argc, char** argv)
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 @@ Configuration::init(int argc, char** argv)
// Check daemon flag
if (_daemon)
_daemonMode = true;
if (_foreground)
_foregroundMode = true;
// Save programname
if(argc > 0 && argv[0] != 0)
......@@ -151,6 +161,7 @@ Configuration::Configuration()
_backupPath = 0;
_initialStart = false;
_daemonMode = false;
_foregroundMode = false;
m_config_retriever= 0;
m_clusterConfig= 0;
m_clusterConfigIter= 0;
......
......@@ -64,6 +64,7 @@ public:
bool getInitialStart() const;
void setInitialStart(bool val);
bool getDaemonMode() const;
bool getForegroundMode() const;
const ndb_mgm_configuration_iterator * getOwnConfigIterator() const;
......@@ -105,7 +106,8 @@ private:
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 * );
};
......@@ -140,4 +142,10 @@ Configuration::getDaemonMode() const {
return _daemonMode;
}
inline
bool
Configuration::getForegroundMode() const {
return _foregroundMode;
}
#endif
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