summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2004-09-25 14:10:06 +0000
committerunknown <tomas@poseidon.ndb.mysql.com>2004-09-25 14:10:06 +0000
commit1bf19b822d6248f32b7b9a02ef8cd9d404f058e6 (patch)
treefa1a430497ae15bba2ba5e55ca3d37b0361fc71e /ndb
parent8a9cb1af9ca7011aeb797b7701055bcff6406ce0 (diff)
downloadmariadb-git-1bf19b822d6248f32b7b9a02ef8cd9d404f058e6.tar.gz
moved LocalConfig out of config retriver
Diffstat (limited to 'ndb')
-rw-r--r--ndb/include/mgmcommon/ConfigRetriever.hpp17
-rw-r--r--ndb/include/ndbapi/ndb_cluster_connection.hpp2
-rw-r--r--ndb/src/common/mgmcommon/ConfigRetriever.cpp25
-rw-r--r--ndb/src/kernel/main.cpp14
-rw-r--r--ndb/src/kernel/vm/Configuration.cpp11
-rw-r--r--ndb/src/kernel/vm/Configuration.hpp4
-rw-r--r--ndb/src/mgmsrv/MgmtSrvr.cpp9
-rw-r--r--ndb/src/mgmsrv/MgmtSrvr.hpp4
-rw-r--r--ndb/src/mgmsrv/MgmtSrvrConfig.cpp3
-rw-r--r--ndb/src/mgmsrv/main.cpp29
-rw-r--r--ndb/src/ndbapi/TransporterFacade.hpp1
-rw-r--r--ndb/src/ndbapi/ndb_cluster_connection.cpp27
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;
}