diff options
author | unknown <tomas@poseidon.ndb.mysql.com> | 2004-09-25 14:10:06 +0000 |
---|---|---|
committer | unknown <tomas@poseidon.ndb.mysql.com> | 2004-09-25 14:10:06 +0000 |
commit | 1bf19b822d6248f32b7b9a02ef8cd9d404f058e6 (patch) | |
tree | fa1a430497ae15bba2ba5e55ca3d37b0361fc71e /ndb | |
parent | 8a9cb1af9ca7011aeb797b7701055bcff6406ce0 (diff) | |
download | mariadb-git-1bf19b822d6248f32b7b9a02ef8cd9d404f058e6.tar.gz |
moved LocalConfig out of config retriver
Diffstat (limited to 'ndb')
-rw-r--r-- | ndb/include/mgmcommon/ConfigRetriever.hpp | 17 | ||||
-rw-r--r-- | ndb/include/ndbapi/ndb_cluster_connection.hpp | 2 | ||||
-rw-r--r-- | ndb/src/common/mgmcommon/ConfigRetriever.cpp | 25 | ||||
-rw-r--r-- | ndb/src/kernel/main.cpp | 14 | ||||
-rw-r--r-- | ndb/src/kernel/vm/Configuration.cpp | 11 | ||||
-rw-r--r-- | ndb/src/kernel/vm/Configuration.hpp | 4 | ||||
-rw-r--r-- | ndb/src/mgmsrv/MgmtSrvr.cpp | 9 | ||||
-rw-r--r-- | ndb/src/mgmsrv/MgmtSrvr.hpp | 4 | ||||
-rw-r--r-- | ndb/src/mgmsrv/MgmtSrvrConfig.cpp | 3 | ||||
-rw-r--r-- | ndb/src/mgmsrv/main.cpp | 29 | ||||
-rw-r--r-- | ndb/src/ndbapi/TransporterFacade.hpp | 1 | ||||
-rw-r--r-- | ndb/src/ndbapi/ndb_cluster_connection.cpp | 27 |
12 files changed, 67 insertions, 79 deletions
diff --git a/ndb/include/mgmcommon/ConfigRetriever.hpp b/ndb/include/mgmcommon/ConfigRetriever.hpp index f9f8904b65c..a584c394f45 100644 --- a/ndb/include/mgmcommon/ConfigRetriever.hpp +++ b/ndb/include/mgmcommon/ConfigRetriever.hpp @@ -28,7 +28,7 @@ */ class ConfigRetriever { public: - ConfigRetriever(Uint32 version, Uint32 nodeType); + ConfigRetriever(LocalConfig &local_config, Uint32 version, Uint32 nodeType); ~ConfigRetriever(); /** @@ -55,16 +55,6 @@ public: const char * getErrorString(); /** - * Sets connectstring which can be used instead of local config file - */ - void setConnectString(const char * connectString); - - /** - * Sets name of local config file (usually not needed) - */ - void setLocalConfigFileName(const char * connectString); - - /** * @return Node id of this node (as stated in local config or connectString) */ Uint32 allocNodeId(); @@ -93,12 +83,9 @@ private: void setError(ErrorType, const char * errorMsg); - BaseString _localConfigFileName; - struct LocalConfig _localConfig; + struct LocalConfig& _localConfig; Uint32 _ownNodeId; - BaseString m_connectString; - Uint32 m_version; Uint32 m_node_type; NdbMgmHandle m_handle; diff --git a/ndb/include/ndbapi/ndb_cluster_connection.hpp b/ndb/include/ndbapi/ndb_cluster_connection.hpp index 59d5a038844..f8e6f25ce73 100644 --- a/ndb/include/ndbapi/ndb_cluster_connection.hpp +++ b/ndb/include/ndbapi/ndb_cluster_connection.hpp @@ -19,6 +19,7 @@ #define CLUSTER_CONNECTION_HPP class TransporterFacade; +class LocalConfig; class ConfigRetriever; class NdbThread; @@ -37,6 +38,7 @@ private: void connect_thread(); char *m_connect_string; TransporterFacade *m_facade; + LocalConfig *m_local_config; ConfigRetriever *m_config_retriever; NdbThread *m_connect_thread; int (*m_connect_callback)(void); diff --git a/ndb/src/common/mgmcommon/ConfigRetriever.cpp b/ndb/src/common/mgmcommon/ConfigRetriever.cpp index 40325fbae99..44b41956d33 100644 --- a/ndb/src/common/mgmcommon/ConfigRetriever.cpp +++ b/ndb/src/common/mgmcommon/ConfigRetriever.cpp @@ -45,8 +45,10 @@ //**************************************************************************** //**************************************************************************** -ConfigRetriever::ConfigRetriever(Uint32 version, Uint32 node_type) { - +ConfigRetriever::ConfigRetriever(LocalConfig &local_config, + Uint32 version, Uint32 node_type) + : _localConfig(local_config) +{ m_handle= 0; m_version = version; m_node_type = node_type; @@ -66,15 +68,6 @@ ConfigRetriever::~ConfigRetriever(){ int ConfigRetriever::init() { - if (!_localConfig.init(m_connectString.c_str(), - _localConfigFileName.c_str())){ - - setError(CR_ERROR, "error in retrieving contact info for mgmtsrvr"); - _localConfig.printError(); - _localConfig.printUsage(); - return -1; - } - return _ownNodeId = _localConfig._ownNodeId; } @@ -230,16 +223,6 @@ ConfigRetriever::getErrorString(){ return errorString.c_str(); } -void -ConfigRetriever::setLocalConfigFileName(const char * localConfigFileName) { - _localConfigFileName.assign(localConfigFileName ? localConfigFileName : ""); -} - -void -ConfigRetriever::setConnectString(const char * connectString) { - m_connectString.assign(connectString ? connectString : ""); -} - bool ConfigRetriever::verifyConfig(const struct ndb_mgm_configuration * conf, Uint32 nodeid){ diff --git a/ndb/src/kernel/main.cpp b/ndb/src/kernel/main.cpp index 20844db75b6..035dfff8d01 100644 --- a/ndb/src/kernel/main.cpp +++ b/ndb/src/kernel/main.cpp @@ -19,6 +19,7 @@ #include <ndb_version.h> #include "Configuration.hpp" +#include <LocalConfig.hpp> #include <TransporterRegistry.hpp> #include "vm/SimBlockList.hpp" @@ -67,12 +68,19 @@ NDB_MAIN(ndb_kernel){ // Parse command line options Configuration* theConfig = globalEmulatorData.theConfiguration; if(!theConfig->init(argc, argv)){ - return 0; + return NRT_Default; } + LocalConfig local_config; + if (!local_config.init(theConfig->getConnectString(),0)){ + local_config.printError(); + local_config.printUsage(); + return NRT_Default; + } + { // Do configuration signal(SIGPIPE, SIG_IGN); - theConfig->fetch_configuration(); + theConfig->fetch_configuration(local_config); } chdir(NdbConfig_get_path(0)); @@ -135,7 +143,7 @@ NDB_MAIN(ndb_kernel){ exit(0); } g_eventLogger.info("Ndb has terminated (pid %d) restarting", child); - theConfig->fetch_configuration(); + theConfig->fetch_configuration(local_config); } g_eventLogger.info("Angel pid: %d ndb pid: %d", getppid(), getpid()); diff --git a/ndb/src/kernel/vm/Configuration.cpp b/ndb/src/kernel/vm/Configuration.cpp index b7054a1bf22..0c4e24129df 100644 --- a/ndb/src/kernel/vm/Configuration.cpp +++ b/ndb/src/kernel/vm/Configuration.cpp @@ -16,6 +16,7 @@ #include <ndb_global.h> +#include <LocalConfig.hpp> #include "Configuration.hpp" #include <ErrorHandlingMacros.hpp> #include "GlobalData.hpp" @@ -184,7 +185,7 @@ Configuration::closeConfiguration(){ } void -Configuration::fetch_configuration(){ +Configuration::fetch_configuration(LocalConfig &local_config){ /** * Fetch configuration from management server */ @@ -192,8 +193,7 @@ Configuration::fetch_configuration(){ delete m_config_retriever; } - m_config_retriever= new ConfigRetriever(NDB_VERSION, NODE_TYPE_DB); - m_config_retriever->setConnectString(_connectString ? _connectString : ""); + m_config_retriever= new ConfigRetriever(local_config, NDB_VERSION, NODE_TYPE_DB); if(m_config_retriever->init() == -1 || m_config_retriever->do_connect() == -1){ @@ -416,6 +416,11 @@ Configuration::setRestartOnErrorInsert(int i){ m_restartOnErrorInsert = i; } +const char * +Configuration::getConnectString() const { + return _connectString; +} + char * Configuration::getConnectStringCopy() const { if(_connectString != 0) diff --git a/ndb/src/kernel/vm/Configuration.hpp b/ndb/src/kernel/vm/Configuration.hpp index e84ff8d9193..7ac171c4a70 100644 --- a/ndb/src/kernel/vm/Configuration.hpp +++ b/ndb/src/kernel/vm/Configuration.hpp @@ -21,6 +21,7 @@ #include <ndb_types.h> class ConfigRetriever; +class LocalConfig; class Configuration { public: @@ -32,7 +33,7 @@ public: */ bool init(int argc, const char** argv); - void fetch_configuration(); + void fetch_configuration(LocalConfig &local_config); void setupConfiguration(); void closeConfiguration(); @@ -54,6 +55,7 @@ public: const char * programName() const; const char * fileSystemPath() const; const char * backupFilePath() const; + const char * getConnectString() const; char * getConnectStringCopy() const; /** diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index d45953503ee..4c09805ba12 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -401,7 +401,7 @@ MgmtSrvr::getPort() const { /* Constructor */ MgmtSrvr::MgmtSrvr(NodeId nodeId, const BaseString &configFilename, - const BaseString &ndb_config_filename, + LocalConfig &local_config, Config * config): _blockNumber(1), // Hard coded block number since it makes it easy to send // signals to other management servers. @@ -409,7 +409,9 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, m_allocated_resources(*this), theSignalIdleList(NULL), theWaitState(WAIT_SUBSCRIBE_CONF), - m_statisticsListner(this){ + m_statisticsListner(this), + m_local_config(local_config) +{ DBUG_ENTER("MgmtSrvr::MgmtSrvr"); @@ -424,7 +426,6 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, m_newConfig = NULL; m_configFilename = configFilename; - m_localNdbConfigFilename = ndb_config_filename; m_nextConfigGenerationNumber = 0; @@ -514,7 +515,7 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, { DBUG_PRINT("info", ("verifyConfig")); - ConfigRetriever cr(NDB_VERSION, NDB_MGM_NODE_TYPE_MGM); + ConfigRetriever cr(m_local_config, NDB_VERSION, NDB_MGM_NODE_TYPE_MGM); if (!cr.verifyConfig(config->m_configValues, _ownNodeId)) { ndbout << cr.getErrorString() << endl; exit(-1); diff --git a/ndb/src/mgmsrv/MgmtSrvr.hpp b/ndb/src/mgmsrv/MgmtSrvr.hpp index 3f3e98dbcc1..c6157db489a 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.hpp +++ b/ndb/src/mgmsrv/MgmtSrvr.hpp @@ -173,7 +173,7 @@ public: MgmtSrvr(NodeId nodeId, /* Local nodeid */ const BaseString &config_filename, /* Where to save config */ - const BaseString &ndb_config_filename, /* Ndb.cfg filename */ + LocalConfig &local_config, /* Ndb.cfg filename */ Config * config); NodeId getOwnNodeId() const {return _ownNodeId;}; @@ -528,8 +528,8 @@ private: NdbMutex *m_configMutex; const Config * _config; Config * m_newConfig; + LocalConfig &m_local_config; BaseString m_configFilename; - BaseString m_localNdbConfigFilename; Uint32 m_nextConfigGenerationNumber; NodeBitmask m_reserved_nodes; diff --git a/ndb/src/mgmsrv/MgmtSrvrConfig.cpp b/ndb/src/mgmsrv/MgmtSrvrConfig.cpp index 44c2aadd1e2..1d51061e909 100644 --- a/ndb/src/mgmsrv/MgmtSrvrConfig.cpp +++ b/ndb/src/mgmsrv/MgmtSrvrConfig.cpp @@ -288,8 +288,7 @@ MgmtSrvr::readConfig() { Config * MgmtSrvr::fetchConfig() { - ConfigRetriever cr(NDB_VERSION, NODE_TYPE_MGM); - cr.setLocalConfigFileName(m_localNdbConfigFilename.c_str()); + ConfigRetriever cr(m_local_config, NDB_VERSION, NODE_TYPE_MGM); struct ndb_mgm_configuration * tmp = cr.getConfig(); if(tmp != 0){ Config * conf = new Config(); diff --git a/ndb/src/mgmsrv/main.cpp b/ndb/src/mgmsrv/main.cpp index a582d082312..1a2b95391a9 100644 --- a/ndb/src/mgmsrv/main.cpp +++ b/ndb/src/mgmsrv/main.cpp @@ -173,15 +173,19 @@ NDB_MAIN(mgmsrv){ /**************************** * Read configuration files * ****************************/ - if (!readLocalConfig()) + LocalConfig local_config; + if(!local_config.init(0,glob.local_config_filename)){ + local_config.printError(); goto error_end; + } + glob.localNodeId = local_config._ownNodeId; + if (!readGlobalConfig()) goto error_end; glob.mgmObject = new MgmtSrvr(glob.localNodeId, BaseString(glob.config_filename), - BaseString(glob.local_config_filename == 0 ? - "" : glob.local_config_filename), + local_config, glob.cluster_config); chdir(NdbConfig_get_path(0)); @@ -321,25 +325,6 @@ MgmGlobals::~MgmGlobals(){ } /** - * @fn readLocalConfig - * @param glob : Global variables - * @return true if success, false otherwise. - */ -static bool -readLocalConfig(){ - // Read local config file - LocalConfig lc; - if(!lc.init(0,glob.local_config_filename)){ - lc.printError(); - return false; - } - - glob.localNodeId = lc._ownNodeId; - return true; -} - - -/** * @fn readGlobalConfig * @param glob : Global variables * @return true if success, false otherwise. diff --git a/ndb/src/ndbapi/TransporterFacade.hpp b/ndb/src/ndbapi/TransporterFacade.hpp index 76beaa708f1..8b6e38a0611 100644 --- a/ndb/src/ndbapi/TransporterFacade.hpp +++ b/ndb/src/ndbapi/TransporterFacade.hpp @@ -236,7 +236,6 @@ public: NdbMutex* theMutexPtr; private: static TransporterFacade* theFacadeInstance; - static ConfigRetriever *s_config_retriever; public: GlobalDictCache m_globalDictCache; diff --git a/ndb/src/ndbapi/ndb_cluster_connection.cpp b/ndb/src/ndbapi/ndb_cluster_connection.cpp index 27695cec187..174d2c314af 100644 --- a/ndb/src/ndbapi/ndb_cluster_connection.cpp +++ b/ndb/src/ndbapi/ndb_cluster_connection.cpp @@ -16,6 +16,7 @@ #include <ndb_global.h> #include <my_pthread.h> +#include <my_sys.h> #include <ndb_cluster_connection.hpp> #include <TransporterFacade.hpp> @@ -30,14 +31,18 @@ static int g_run_connect_thread= 0; Ndb_cluster_connection::Ndb_cluster_connection(const char *connect_string) { + DBUG_ENTER("Ndb_cluster_connection"); + DBUG_PRINT("enter",("Ndb_cluster_connection this=0x%x", this)); m_facade= TransporterFacade::theFacadeInstance= new TransporterFacade(); if (connect_string) - m_connect_string= strdup(connect_string); + m_connect_string= my_strdup(connect_string,MYF(MY_WME)); else m_connect_string= 0; m_config_retriever= 0; + m_local_config= 0; m_connect_thread= 0; m_connect_callback= 0; + DBUG_VOID_RETURN; } extern "C" pthread_handler_decl(run_ndb_cluster_connection_connect_thread, me) @@ -99,8 +104,16 @@ int Ndb_cluster_connection::connect(int reconnect) do { if (m_config_retriever == 0) { - m_config_retriever= new ConfigRetriever(NDB_VERSION, NODE_TYPE_API); - m_config_retriever->setConnectString(m_connect_string); + if (m_local_config == 0) { + m_local_config= new LocalConfig(); + if (m_local_config->init(m_connect_string,0)) { + ndbout << "Configuration error: Unable to retrieve local config" << endl; + m_local_config->printError(); + m_local_config->printUsage(); + DBUG_RETURN(-1); + } + } + m_config_retriever= new ConfigRetriever(*m_local_config, NDB_VERSION, NODE_TYPE_API); if(m_config_retriever->init() == -1) break; } @@ -145,6 +158,8 @@ int Ndb_cluster_connection::connect(int reconnect) Ndb_cluster_connection::~Ndb_cluster_connection() { + DBUG_ENTER("~Ndb_cluster_connection"); + DBUG_PRINT("enter",("~Ndb_cluster_connection this=0x%x", this)); TransporterFacade::stop_instance(); if (m_connect_thread) { @@ -161,10 +176,12 @@ Ndb_cluster_connection::~Ndb_cluster_connection() abort(); TransporterFacade::theFacadeInstance= 0; } - if (m_connect_string) - free(m_connect_string); + my_free(m_connect_string,MYF(MY_ALLOW_ZERO_PTR)); if (m_config_retriever) delete m_config_retriever; + if (m_local_config == 0) + delete m_local_config; + DBUG_VOID_RETURN; } |