Below is the list of changes that have just been committed into a local
4.1 repository of tomas. When tomas 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.2342 05/07/14 14:47:39 tomas@stripped +27 -0
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/tools/restore/restore_main.cpp
1.27 05/07/14 14:47:27 tomas@stripped +2 -1
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/ndbapi/TransporterFacade.cpp
1.31 05/07/14 14:47:27 tomas@stripped +16 -9
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/ndbapi/ClusterMgr.cpp
1.16 05/07/14 14:47:27 tomas@stripped +14 -4
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmsrv/main.cpp
1.37 05/07/14 14:47:27 tomas@stripped +50 -49
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmsrv/Services.cpp
1.33 05/07/14 14:47:27 tomas@stripped +76 -17
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmsrv/MgmtSrvr.hpp
1.27 05/07/14 14:47:27 tomas@stripped +1 -10
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmsrv/MgmtSrvr.cpp
1.61 05/07/14 14:47:27 tomas@stripped +7 -18
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmclient/main.cpp
1.20 05/07/14 14:47:27 tomas@stripped +6 -2
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmclient/CommandInterpreter.cpp
1.48 05/07/14 14:47:27 tomas@stripped +29 -6
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/mgmapi/mgmapi.cpp
1.28 05/07/14 14:47:26 tomas@stripped +16 -3
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
1.13 05/07/14 14:47:26 tomas@stripped +25 -26
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/kernel/blocks/qmgr/Qmgr.hpp
1.3 05/07/14 14:47:26 tomas@stripped +2 -2
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/util/version.c
1.18 05/07/14 14:47:26 tomas@stripped +7 -5
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/util/SocketServer.cpp
1.12 05/07/14 14:47:26 tomas@stripped +4 -0
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/util/SocketClient.cpp
1.5 05/07/14 14:47:26 tomas@stripped +2 -0
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/util/Parser.cpp
1.7 05/07/14 14:47:26 tomas@stripped +12 -9
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/transporter/TransporterRegistry.cpp
1.28 05/07/14 14:47:26 tomas@stripped +10 -2
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/portlib/NdbThread.c
1.21 05/07/14 14:47:26 tomas@stripped +12 -4
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/portlib/NdbTCP.cpp
1.11 05/07/14 14:47:26 tomas@stripped +9 -0
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/portlib/NdbMutex.c
1.6 05/07/14 14:47:26 tomas@stripped +10 -6
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/mgmcommon/IPCConfig.cpp
1.13 05/07/14 14:47:26 tomas@stripped +5 -2
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/mgmcommon/ConfigRetriever.cpp
1.25 05/07/14 14:47:25 tomas@stripped +7 -2
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/src/common/logger/LogHandler.cpp
1.9 05/07/14 14:47:25 tomas@stripped +1 -0
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/include/util/version.h
1.3 05/07/14 14:47:25 tomas@stripped +2 -1
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/include/util/ndb_opts.h
1.6 05/07/14 14:47:25 tomas@stripped +2 -0
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/include/util/SocketServer.hpp
1.6 05/07/14 14:47:25 tomas@stripped +7 -1
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
ndb/include/portlib/NdbTCP.h
1.8 05/07/14 14:47:25 tomas@stripped +9 -3
BUG#11898 ndb_mgmd not releasing resources
+ stilling some memleaks
+ debug prints
# 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: tomas
# Host: poseidon.ndb.mysql.com
# Root: /home/tomas/mysql-4.1
--- 1.7/ndb/include/portlib/NdbTCP.h 2004-11-10 00:13:24 +01:00
+++ 1.8/ndb/include/portlib/NdbTCP.h 2005-07-14 14:47:25 +02:00
@@ -31,7 +31,7 @@
#define NDB_NONBLOCK FNDELAY
#define NDB_SOCKET_TYPE int
#define NDB_INVALID_SOCKET -1
-#define NDB_CLOSE_SOCKET(x) close(x)
+#define _NDB_CLOSE_SOCKET(x) close(x)
/**
* socklen_t not defined in the header files of OSE
@@ -52,7 +52,7 @@
#define EWOULDBLOCK WSAEWOULDBLOCK
#define NDB_SOCKET_TYPE SOCKET
#define NDB_INVALID_SOCKET INVALID_SOCKET
-#define NDB_CLOSE_SOCKET(x) closesocket(x)
+#define _NDB_CLOSE_SOCKET(x) closesocket(x)
#else
@@ -64,7 +64,7 @@
#define NDB_NONBLOCK O_NONBLOCK
#define NDB_SOCKET_TYPE int
#define NDB_INVALID_SOCKET -1
-#define NDB_CLOSE_SOCKET(x) ::close(x)
+#define _NDB_CLOSE_SOCKET(x) ::close(x)
#define InetErrno errno
@@ -88,6 +88,12 @@
* inet_addr
*/
int Ndb_getInAddr(struct in_addr * dst, const char *address);
+
+#ifdef DBUG_OFF
+#define NDB_CLOSE_SOCKET(fd) _NDB_CLOSE_SOCKET(fd)
+#else
+int NDB_CLOSE_SOCKET(int fd);
+#endif
#ifdef __cplusplus
}
--- 1.5/ndb/include/util/SocketServer.hpp 2004-11-11 21:38:40 +01:00
+++ 1.6/ndb/include/util/SocketServer.hpp 2005-07-14 14:47:25 +02:00
@@ -41,7 +41,13 @@
protected:
friend class SocketServer;
friend void* sessionThread_C(void*);
- Session(NDB_SOCKET_TYPE sock): m_socket(sock){ m_stop = m_stopped = false;}
+ Session(NDB_SOCKET_TYPE sock): m_socket(sock)
+ {
+ DBUG_ENTER("SocketServer::Session");
+ DBUG_PRINT("enter",("NDB_SOCKET: %d", m_socket));
+ m_stop = m_stopped = false;
+ DBUG_VOID_RETURN;
+ }
bool m_stop; // Has the session been ordered to stop?
bool m_stopped; // Has the session stopped?
--- 1.2/ndb/include/util/version.h 2004-10-12 14:03:24 +02:00
+++ 1.3/ndb/include/util/version.h 2005-07-14 14:47:25 +02:00
@@ -30,7 +30,8 @@
Uint32 makeVersion(Uint32 major, Uint32 minor, Uint32 build);
- const char* getVersionString(Uint32 version, const char * status);
+ const char* getVersionString(Uint32 version, const char * status,
+ char *buf, unsigned sz);
void ndbPrintVersion();
Uint32 ndbGetOwnVersion();
--- 1.8/ndb/src/common/logger/LogHandler.cpp 2005-02-23 10:12:20 +01:00
+++ 1.9/ndb/src/common/logger/LogHandler.cpp 2005-07-14 14:47:25 +02:00
@@ -31,6 +31,7 @@
m_last_message[0]= 0;
m_last_log_time= 0;
m_now= 0;
+ m_last_level= (Logger::LoggerLevel)-1;
}
LogHandler::~LogHandler()
--- 1.24/ndb/src/common/mgmcommon/ConfigRetriever.cpp 2005-06-15 06:58:45 +02:00
+++ 1.25/ndb/src/common/mgmcommon/ConfigRetriever.cpp 2005-07-14 14:47:25 +02:00
@@ -47,6 +47,8 @@
ConfigRetriever::ConfigRetriever(const char * _connect_string,
Uint32 version, Uint32 node_type)
{
+ DBUG_ENTER("ConfigRetriever::ConfigRetriever");
+
m_version = version;
m_node_type = node_type;
_ownNodeId= 0;
@@ -55,23 +57,26 @@
if (m_handle == 0) {
setError(CR_ERROR, "Unable to allocate mgm handle");
- return;
+ DBUG_VOID_RETURN;
}
if (ndb_mgm_set_connectstring(m_handle, _connect_string))
{
setError(CR_ERROR, ndb_mgm_get_latest_error_desc(m_handle));
- return;
+ DBUG_VOID_RETURN;
}
resetError();
+ DBUG_VOID_RETURN;
}
ConfigRetriever::~ConfigRetriever()
{
+ DBUG_ENTER("ConfigRetriever::~ConfigRetriever");
if (m_handle) {
ndb_mgm_disconnect(m_handle);
ndb_mgm_destroy_handle(&m_handle);
}
+ DBUG_VOID_RETURN;
}
Uint32
--- 1.12/ndb/src/common/mgmcommon/IPCConfig.cpp 2005-01-28 00:42:34 +01:00
+++ 1.13/ndb/src/common/mgmcommon/IPCConfig.cpp 2005-07-14 14:47:26 +02:00
@@ -114,7 +114,10 @@
* Returns no of transporters configured
*/
int
-IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
+IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry)
+{
+ DBUG_ENTER("IPCConfig::configureTransporters");
+
int noOfTransportersCreated = 0;
Uint32 noOfConnections;
@@ -276,7 +279,7 @@
continue;
}
}
- return noOfTransportersCreated;
+ DBUG_RETURN(noOfTransportersCreated);
}
/**
--- 1.5/ndb/src/common/portlib/NdbMutex.c 2004-08-21 09:16:07 +02:00
+++ 1.6/ndb/src/common/portlib/NdbMutex.c 2005-07-14 14:47:26 +02:00
@@ -23,33 +23,37 @@
NdbMutex* NdbMutex_Create(void)
{
+ DBUG_ENTER("NdbMutex_Create");
NdbMutex* pNdbMutex;
int result;
pNdbMutex = (NdbMutex*)NdbMem_Allocate(sizeof(NdbMutex));
+ DBUG_PRINT("info",("NdbMem_Allocate 0x%lx",pNdbMutex));
if (pNdbMutex == NULL)
- return NULL;
+ DBUG_RETURN(NULL);
result = pthread_mutex_init(pNdbMutex, NULL);
assert(result == 0);
- return pNdbMutex;
-
+ DBUG_RETURN(pNdbMutex);
}
int NdbMutex_Destroy(NdbMutex* p_mutex)
{
+ DBUG_ENTER("NdbMutex_Destroy");
int result;
if (p_mutex == NULL)
- return -1;
+ DBUG_RETURN(-1);
result = pthread_mutex_destroy(p_mutex);
- free(p_mutex);
+
+ DBUG_PRINT("info",("NdbMem_Free 0x%lx",p_mutex));
+ NdbMem_Free(p_mutex);
- return result;
+ DBUG_RETURN(result);
}
--- 1.10/ndb/src/common/portlib/NdbTCP.cpp 2004-12-08 15:24:55 +01:00
+++ 1.11/ndb/src/common/portlib/NdbTCP.cpp 2005-07-14 14:47:26 +02:00
@@ -54,6 +54,15 @@
return -1; //DBUG_RETURN(-1);
}
+#ifndef DBUG_OFF
+extern "C"
+int NDB_CLOSE_SOCKET(int fd)
+{
+ DBUG_PRINT("info", ("NDB_CLOSE_SOCKET(%d)", fd));
+ return _NDB_CLOSE_SOCKET(fd);
+}
+#endif
+
#if 0
int
Ndb_getInAddr(struct in_addr * dst, const char *address) {
--- 1.20/ndb/src/common/portlib/NdbThread.c 2005-02-02 10:50:31 +01:00
+++ 1.21/ndb/src/common/portlib/NdbThread.c 2005-07-14 14:47:26 +02:00
@@ -56,6 +56,7 @@
void *ret;
struct NdbThread * ss = (struct NdbThread *)_ss;
ret= (* ss->func)(ss->object);
+ DBUG_LEAVE;
NdbThread_Exit(ret);
}
/* will never be reached */
@@ -70,6 +71,7 @@
const char* p_thread_name,
NDB_THREAD_PRIO thread_prio)
{
+ DBUG_ENTER("NdbThread_Create");
struct NdbThread* tmpThread;
int result;
pthread_attr_t thread_attr;
@@ -77,11 +79,13 @@
(void)thread_prio; /* remove warning for unused parameter */
if (p_thread_func == NULL)
- return 0;
+ DBUG_RETURN(NULL);
tmpThread = (struct NdbThread*)NdbMem_Allocate(sizeof(struct NdbThread));
if (tmpThread == NULL)
- return NULL;
+ DBUG_RETURN(NULL);
+
+ DBUG_PRINT("info",("thread_name: %s", p_thread_name));
strnmov(tmpThread->thread_name,p_thread_name,sizeof(tmpThread->thread_name));
@@ -108,16 +112,20 @@
assert(result==0);
pthread_attr_destroy(&thread_attr);
- return tmpThread;
+ DBUG_PRINT("exit",("ret: %lx", tmpThread));
+ DBUG_RETURN(tmpThread);
}
void NdbThread_Destroy(struct NdbThread** p_thread)
{
- if (*p_thread != NULL){
+ DBUG_ENTER("NdbThread_Destroy");
+ if (*p_thread != NULL){
+ DBUG_PRINT("enter",("*p_thread: %lx", * p_thread));
free(* p_thread);
* p_thread = 0;
}
+ DBUG_VOID_RETURN;
}
--- 1.27/ndb/src/common/transporter/TransporterRegistry.cpp 2005-07-13 16:07:25 +02:00
+++ 1.28/ndb/src/common/transporter/TransporterRegistry.cpp 2005-07-14 14:47:26 +02:00
@@ -76,7 +76,9 @@
TransporterRegistry::TransporterRegistry(void * callback,
unsigned _maxTransporters,
- unsigned sizeOfLongSignalMemory) {
+ unsigned sizeOfLongSignalMemory)
+{
+ DBUG_ENTER("TransporterRegistry::TransporterRegistry");
nodeIdSpecified = false;
maxTransporters = _maxTransporters;
@@ -113,9 +115,13 @@
theOSEReceiver = 0;
theOSEJunkSocketSend = 0;
theOSEJunkSocketRecv = 0;
+
+ DBUG_VOID_RETURN;
}
-TransporterRegistry::~TransporterRegistry() {
+TransporterRegistry::~TransporterRegistry()
+{
+ DBUG_ENTER("TransporterRegistry::~TransporterRegistry");
removeAll();
@@ -135,6 +141,8 @@
theOSEReceiver = 0;
}
#endif
+
+ DBUG_VOID_RETURN;
}
void
--- 1.6/ndb/src/common/util/Parser.cpp 2004-07-09 12:32:12 +02:00
+++ 1.7/ndb/src/common/util/Parser.cpp 2005-07-14 14:47:26 +02:00
@@ -141,7 +141,10 @@
bool
ParserImpl::run(Context * ctx, const class Properties ** pDst,
- volatile bool * stop) const {
+ volatile bool * stop) const
+{
+ DBUG_ENTER("ParserImpl::run");
+
* pDst = 0;
bool ownStop = false;
if(stop == 0)
@@ -153,24 +156,24 @@
ctx->m_currentToken = input.gets(ctx->m_tokenBuffer, sz);
if(Eof(ctx->m_currentToken)){
ctx->m_status = Parser<Dummy>::Eof;
- return false;
+ DBUG_RETURN(false);
}
if(ctx->m_currentToken[0] == 0){
ctx->m_status = Parser<Dummy>::NoLine;
- return false;
+ DBUG_RETURN(false);
}
if(Empty(ctx->m_currentToken)){
ctx->m_status = Parser<Dummy>::EmptyLine;
- return false;
+ DBUG_RETURN(false);
}
trim(ctx->m_currentToken);
ctx->m_currentCmd = matchCommand(ctx, ctx->m_currentToken, m_rows);
if(ctx->m_currentCmd == 0){
ctx->m_status = Parser<Dummy>::UnknownCommand;
- return false;
+ DBUG_RETURN(false);
}
Properties * p = new Properties();
@@ -200,19 +203,19 @@
tmp = input.gets(buf, sz);
} while((! * stop) && !Eof(tmp) && !Empty(tmp));
}
- return false;
+ DBUG_RETURN(false);
}
if(* stop){
delete p;
ctx->m_status = Parser<Dummy>::ExternalStop;
- return false;
+ DBUG_RETURN(false);
}
if(!checkMandatory(ctx, p)){
ctx->m_status = Parser<Dummy>::MissingMandatoryArgument;
delete p;
- return false;
+ DBUG_RETURN(false);
}
/**
@@ -229,7 +232,7 @@
ctx->m_status = Parser<Dummy>::Ok;
* pDst = p;
- return true;
+ DBUG_RETURN(true);
}
const ParserImpl::DummyRow*
--- 1.11/ndb/src/common/util/SocketServer.cpp 2005-02-01 19:01:34 +01:00
+++ 1.12/ndb/src/common/util/SocketServer.cpp 2005-07-14 14:47:26 +02:00
@@ -64,6 +64,8 @@
return false;
}
+ DBUG_PRINT("info",("NDB_SOCKET: %d", sock));
+
const int on = 1;
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,
(const char*)&on, sizeof(on)) == -1) {
@@ -104,6 +106,8 @@
DBUG_RETURN(false);
}
+ DBUG_PRINT("info",("NDB_SOCKET: %d", sock));
+
const int on = 1;
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,
(const char*)&on, sizeof(on)) == -1) {
--- 1.17/ndb/src/common/util/version.c 2005-06-22 11:18:00 +02:00
+++ 1.18/ndb/src/common/util/version.c 2005-07-14 14:47:26 +02:00
@@ -38,22 +38,24 @@
}
-const char * getVersionString(Uint32 version, const char * status) {
- char buff[100];
+char ndb_version_string_buf[NDB_VERSION_STRING_BUF_SZ];
+const char * getVersionString(Uint32 version, const char * status,
+ char *buf, unsigned sz)
+{
if (status && status[0] != 0)
- basestring_snprintf(buff, sizeof(buff),
+ basestring_snprintf(buf, sz,
"Version %d.%d.%d (%s)",
getMajor(version),
getMinor(version),
getBuild(version),
status);
else
- basestring_snprintf(buff, sizeof(buff),
+ basestring_snprintf(buf, sz,
"Version %d.%d.%d",
getMajor(version),
getMinor(version),
getBuild(version));
- return strdup(buff);
+ return buf;
}
typedef enum {
--- 1.26/ndb/tools/restore/restore_main.cpp 2005-01-28 00:42:34 +01:00
+++ 1.27/ndb/tools/restore/restore_main.cpp 2005-07-14 14:47:27 +02:00
@@ -251,8 +251,9 @@
const BackupFormat::FileHeader & tmp = metaData.getFileHeader();
const Uint32 version = tmp.NdbVersion;
+ char buf[NDB_VERSION_STRING_BUF_SZ];
ndbout << "Ndb version in backup files: "
- << getVersionString(version, 0) << endl;
+ << getVersionString(version, 0, buf, sizeof(buf)) << endl;
/**
* check wheater we can restore the backup (right version).
--- 1.2/ndb/src/kernel/blocks/qmgr/Qmgr.hpp 2004-05-26 10:55:43 +02:00
+++ 1.3/ndb/src/kernel/blocks/qmgr/Qmgr.hpp 2005-07-14 14:47:26 +02:00
@@ -257,8 +257,8 @@
void hbReceivedLab(Signal* signal);
void sendCmRegrefLab(Signal* signal, BlockReference ref,
CmRegRef::ErrorCode);
- void systemErrorBecauseOtherNodeFailed(Signal* signal, NodeId);
- void systemErrorLab(Signal* signal,
+ void systemErrorBecauseOtherNodeFailed(Signal* signal, Uint32 line, NodeId);
+ void systemErrorLab(Signal* signal, Uint32 line,
const char* message = NULL);
void prepFailReqLab(Signal* signal);
void prepFailConfLab(Signal* signal);
--- 1.12/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2004-11-18 16:47:23 +01:00
+++ 1.13/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp 2005-07-14 14:47:26 +02:00
@@ -76,7 +76,7 @@
void Qmgr::execCM_NODEINFOREF(Signal* signal)
{
jamEntry();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
return;
}//Qmgr::execCM_NODEINFOREF()
@@ -121,7 +121,7 @@
default:
jam();
// ZCOULD_NOT_OCCUR_ERROR;
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
return;
break;
}//switch
@@ -593,7 +593,7 @@
jam();
char buf[128];
BaseString::snprintf(buf,sizeof(buf),"incompatible version own=0x%x other=0x%x,
shutting down", NDB_VERSION, cmRegConf->presidentVersion);
- systemErrorLab(signal, buf);
+ systemErrorLab(signal, __LINE__, buf);
return;
}
@@ -688,7 +688,7 @@
switch (TrefuseReason) {
case CmRegRef::ZINCOMPATIBLE_VERSION:
jam();
- systemErrorLab(signal, "incompatible version, connection refused by running ndb
node");
+ systemErrorLab(signal, __LINE__, "incompatible version, connection refused by running
ndb node");
break;
case CmRegRef::ZBUSY:
case CmRegRef::ZBUSY_TO_PRES:
@@ -1751,7 +1751,7 @@
if (failedNodePtr.p->rcv[0] == failedNodePtr.p->rcv[1]) {
jam();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
} else {
jam();
failedNodePtr.p->rcv[0] = 0;
@@ -1763,7 +1763,7 @@
ndbout << "failedNodePtr.p->failState = "
<< (Uint32)(failedNodePtr.p->failState) << endl;
#endif
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
}//if
return;
}//Qmgr::execAPI_FAILCONF()
@@ -1780,7 +1780,7 @@
failedNodePtr.p->failState = NORMAL;
} else {
jam();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
}//if
if (cpresident == getOwnNodeId()) {
jam();
@@ -1931,20 +1931,13 @@
#endif
bool compatability_check;
- switch(getNodeInfo(apiNodePtr.i).getType()){
+ NodeInfo::NodeType type= getNodeInfo(apiNodePtr.i).getType();
+ switch(type){
case NodeInfo::API:
compatability_check = ndbCompatible_ndb_api(NDB_VERSION, version);
- if (!compatability_check)
- infoEvent("Connection attempt from api or mysqld id=%d with %s "
- "incompatible with %s", apiNodePtr.i,
- getVersionString(version,""), NDB_VERSION_STRING);
break;
case NodeInfo::MGM:
compatability_check = ndbCompatible_ndb_mgmt(NDB_VERSION, version);
- if (!compatability_check)
- infoEvent("Connection attempt from management server id=%d with %s "
- "incompatible with %s", apiNodePtr.i,
- getVersionString(version,""), NDB_VERSION_STRING);
break;
case NodeInfo::REP:
// compatability_check = ndbCompatible_ndb_api(NDB_VERSION, version);
@@ -1953,13 +1946,19 @@
case NodeInfo::INVALID:
default:
sendApiRegRef(signal, ref, ApiRegRef::WrongType);
- infoEvent("Invalid connection attempt with type %d",
- getNodeInfo(apiNodePtr.i).getType());
+ infoEvent("Invalid connection attempt with type %d", type);
return;
}
if (!compatability_check) {
jam();
+ char buf[NDB_VERSION_STRING_BUF_SZ];
+ infoEvent("Connection attempt from %s id=%d with %s "
+ "incompatible with %s",
+ type == NodeInfo::API ? "api or mysqld" : "management server",
+ apiNodePtr.i,
+ getVersionString(version,"",buf,sizeof(buf)),
+ NDB_VERSION_STRING);
apiNodePtr.p->phase = ZAPI_INACTIVE;
sendApiRegRef(signal, ref, ApiRegRef::UnsupportedVersion);
return;
@@ -2085,7 +2084,7 @@
ptrCheckGuard(failedNodePtr, MAX_NODES, nodeRec);
if (failedNodePtr.i == getOwnNodeId()) {
jam();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
return;
}//if
@@ -2093,7 +2092,7 @@
ptrCheckGuard(myNodePtr, MAX_NDB_NODES, nodeRec);
if (myNodePtr.p->phase != ZRUNNING) {
jam();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
return;
}//if
TnoFailedNodes = cnoFailedNodes;
@@ -2172,7 +2171,7 @@
ptrCheckGuard(myNodePtr, MAX_NDB_NODES, nodeRec);
if (myNodePtr.p->phase != ZRUNNING) {
jam();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
return;
}//if
@@ -2675,7 +2674,7 @@
ReadNodesConf::SignalLength, JBB);
}//Qmgr::execREAD_NODESREQ()
-void Qmgr::systemErrorBecauseOtherNodeFailed(Signal* signal,
+void Qmgr::systemErrorBecauseOtherNodeFailed(Signal* signal, Uint32 line,
NodeId failedNodeId) {
jam();
@@ -2687,11 +2686,11 @@
"Node was shutdown during startup because node %d failed",
failedNodeId);
- progError(__LINE__, ERR_SR_OTHERNODEFAILED, buf);
+ progError(line, ERR_SR_OTHERNODEFAILED, buf);
}
-void Qmgr::systemErrorLab(Signal* signal, const char * message)
+void Qmgr::systemErrorLab(Signal* signal, Uint32 line, const char * message)
{
jam();
// Broadcast that this node is failing to other nodes
@@ -2699,7 +2698,7 @@
// If it's known why shutdown occured
// an error message has been passed to this function
- progError(__LINE__, 0, message);
+ progError(line, 0, message);
return;
}//Qmgr::systemErrorLab()
@@ -2867,7 +2866,7 @@
}//for
if (TtdiNodeId == ZNIL) {
jam();
- systemErrorLab(signal);
+ systemErrorLab(signal, __LINE__);
}//if
return TtdiNodeId;
}//Qmgr::translateDynamicIdToNodeId()
--- 1.27/ndb/src/mgmapi/mgmapi.cpp 2005-05-04 18:40:52 +02:00
+++ 1.28/ndb/src/mgmapi/mgmapi.cpp 2005-07-14 14:47:26 +02:00
@@ -143,6 +143,7 @@
NdbMgmHandle
ndb_mgm_create_handle()
{
+ DBUG_ENTER("ndb_mgm_create_handle");
NdbMgmHandle h =
(NdbMgmHandle)my_malloc(sizeof(ndb_mgm_handle),MYF(MY_WME));
h->connected = 0;
@@ -162,17 +163,20 @@
h->logfile = 0;
#endif
- return h;
+ DBUG_PRINT("exit",("ret: %lx", h));
+ DBUG_RETURN(h);
}
extern "C"
int
ndb_mgm_set_connectstring(NdbMgmHandle handle, const char * mgmsrv)
{
+ handle->cfg.~LocalConfig();
new (&(handle->cfg)) LocalConfig;
if (!handle->cfg.init(mgmsrv, 0) ||
handle->cfg.ids.size() == 0)
{
+ handle->cfg.~LocalConfig();
new (&(handle->cfg)) LocalConfig;
handle->cfg.init(0, 0); /* reset the LocalCongig */
SET_ERROR(handle, NDB_MGM_ILLEGAL_CONNECT_STRING, "");
@@ -189,8 +193,11 @@
void
ndb_mgm_destroy_handle(NdbMgmHandle * handle)
{
+ DBUG_ENTER("ndb_mgm_destroy_handle");
if(!handle)
return;
+ DBUG_PRINT("enter",("*handle: %lx", *handle));
+
if((* handle)->connected){
ndb_mgm_disconnect(* handle);
}
@@ -203,6 +210,7 @@
(*handle)->cfg.~LocalConfig();
my_free((char*)* handle,MYF(MY_ALLOW_ZERO_PTR));
* handle = 0;
+ DBUG_VOID_RETURN;
}
/*****************************************************************************
@@ -251,6 +259,9 @@
ndb_mgm_call(NdbMgmHandle handle, const ParserRow<ParserDummy> *command_reply,
const char *cmd, const Properties *cmd_args)
{
+ DBUG_ENTER("ndb_mgm_call");
+ DBUG_PRINT("enter",("handle->socket: %d, cmd: %s",
+ handle->socket, cmd));
SocketOutputStream out(handle->socket);
SocketInputStream in(handle->socket, handle->read_timeout);
@@ -310,6 +321,8 @@
/**
* Print some info about why the parser returns NULL
*/
+ DBUG_PRINT("info",("ctx.status: %d, ctx.m_currentToken: %s",
+ ctx.m_status, ctx.m_currentToken));
//ndbout << " status=" << ctx.m_status << ", curr="
//<< ctx.m_currentToken << endl;
}
@@ -321,9 +334,9 @@
p->print(handle->logfile, "IN: ");
}
#endif
- return p;
+ DBUG_RETURN(p);
#else
- return parser.parse(ctx, session);
+ DBUG_RETURN(parser.parse(ctx, session));
#endif
}
--- 1.47/ndb/src/mgmclient/CommandInterpreter.cpp 2005-06-02 21:13:56 +02:00
+++ 1.48/ndb/src/mgmclient/CommandInterpreter.cpp 2005-07-14 14:47:27 +02:00
@@ -455,11 +455,13 @@
static void*
event_thread_run(void* m)
{
+ DBUG_ENTER("event_thread_run");
+
NdbMgmHandle handle= *(NdbMgmHandle*)m;
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0 };
int fd = ndb_mgm_listen_event(handle, filter);
- if (fd > 0)
+ if (fd != 0 && fd != NDB_INVALID_SOCKET)
{
do_event_thread= 1;
char *tmp= 0;
@@ -468,20 +470,26 @@
do {
if (tmp == 0) NdbSleep_MilliSleep(10);
if((tmp = in.gets(buf, 1024)))
- ndbout << tmp;
+ {
+ const char ping_token[]= "<PING>";
+ if (memcmp(ping_token,tmp,sizeof(ping_token)-1))
+ ndbout << tmp;
+ }
} while(do_event_thread);
+ NDB_CLOSE_SOCKET(fd);
}
else
{
do_event_thread= -1;
}
- return NULL;
+ DBUG_RETURN(NULL);
}
bool
CommandInterpreter::connect()
{
+ DBUG_ENTER("CommandInterpreter::connect");
if(!m_connected)
{
if(!ndb_mgm_connect(m_mgmsrv, try_reconnect-1, 5, 1))
@@ -512,8 +520,20 @@
do_event_thread == 0 ||
do_event_thread == -1)
{
- printf("Warning, event thread startup failed, degraded printouts as result\n");
+ DBUG_PRINT("info",("Warning, event thread startup failed, "
+ "degraded printouts as result, errno=%d",
+ errno));
+ printf("Warning, event thread startup failed, "
+ "degraded printouts as result, errno=%d\n", errno);
do_event_thread= 0;
+ if (m_event_thread)
+ {
+ void *res;
+ NdbThread_WaitFor(m_event_thread, &res);
+ NdbThread_Destroy(&m_event_thread);
+ m_event_thread= 0;
+ }
+ ndb_mgm_disconnect(m_mgmsrv2);
}
}
else
@@ -521,6 +541,8 @@
printf("Warning, event connect failed, degraded printouts as result\n");
}
m_connected= true;
+ DBUG_PRINT("info",("Connected to Management Server at: %s:%d",
+ host,port));
if (m_verbose)
{
printf("Connected to Management Server at: %s:%d\n",
@@ -528,12 +550,13 @@
}
}
}
- return m_connected;
+ DBUG_RETURN(m_connected);
}
bool
CommandInterpreter::disconnect()
{
+ DBUG_ENTER("CommandInterpreter::disconnect");
if (m_event_thread) {
void *res;
do_event_thread= 0;
@@ -550,7 +573,7 @@
}
m_connected= false;
}
- return true;
+ DBUG_RETURN(true);
}
//*****************************************************************************
--- 1.19/ndb/src/mgmclient/main.cpp 2005-01-28 00:42:34 +01:00
+++ 1.20/ndb/src/mgmclient/main.cpp 2005-07-14 14:47:27 +02:00
@@ -44,7 +44,9 @@
extern "C"
void
-handler(int sig){
+handler(int sig)
+{
+ DBUG_ENTER("handler");
switch(sig){
case SIGPIPE:
/**
@@ -54,6 +56,7 @@
com->disconnect();
break;
}
+ DBUG_VOID_RETURN;
}
NDB_STD_OPTS_VARS;
@@ -166,7 +169,8 @@
com->execute(opt_execute_str,_try_reconnect, &ret);
}
delete com;
-
+
+ ndb_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
return ret;
}
--- 1.60/ndb/src/mgmsrv/MgmtSrvr.cpp 2005-07-13 16:07:25 +02:00
+++ 1.61/ndb/src/mgmsrv/MgmtSrvr.cpp 2005-07-14 14:47:27 +02:00
@@ -571,10 +571,11 @@
bool
MgmtSrvr::start(BaseString &error_string)
{
+ DBUG_ENTER("MgmtSrvr::start");
if (_props == NULL) {
if (!check_start()) {
error_string.append("MgmtSrvr.cpp: check_start() failed.");
- return false;
+ DBUG_RETURN(false);
}
}
theFacade= TransporterFacade::theFacadeInstance= new TransporterFacade();
@@ -582,12 +583,12 @@
if(theFacade == 0) {
DEBUG("MgmtSrvr.cpp: theFacade is NULL.");
error_string.append("MgmtSrvr.cpp: theFacade is NULL.");
- return false;
+ DBUG_RETURN(false);
}
if ( theFacade->start_instance
(_ownNodeId, (ndb_mgm_configuration*)_config->m_configValues) < 0) {
DEBUG("MgmtSrvr.cpp: TransporterFacade::start_instance < 0.");
- return false;
+ DBUG_RETURN(false);
}
MGM_REQUIRE(_blockNumber == 1);
@@ -603,7 +604,7 @@
error_string.append("MgmtSrvr.cpp: _blockNumber is -1.");
theFacade->stop_instance();
theFacade = 0;
- return false;
+ DBUG_RETURN(false);
}
_ownReference = numberToRef(_blockNumber, _ownNodeId);
@@ -625,7 +626,7 @@
"MgmtSrvr_Service",
NDB_THREAD_PRIO_LOW);
- return true;
+ DBUG_RETURN(true);
}
@@ -639,6 +640,7 @@
if(theFacade != 0){
theFacade->stop_instance();
+ delete theFacade;
theFacade = 0;
}
@@ -2600,19 +2602,6 @@
return 0;
}
-
-/*****************************************************************************
- * Area 51 ???
- *****************************************************************************/
-
-MgmtSrvr::Area51
-MgmtSrvr::getStuff()
-{
- Area51 ret;
- ret.theFacade = theFacade;
- ret.theRegistry = theFacade->theTransporterRegistry;
- return ret;
-}
NodeId
MgmtSrvr::getPrimaryNode() const {
--- 1.26/ndb/src/mgmsrv/MgmtSrvr.hpp 2005-07-13 16:07:25 +02:00
+++ 1.27/ndb/src/mgmsrv/MgmtSrvr.hpp 2005-07-14 14:47:27 +02:00
@@ -60,6 +60,7 @@
}
void add_listener(const Event_listener&);
+ void check_listeners();
void update_max_log_level(const LogLevel&);
void update_log_level(const LogLevel&);
@@ -764,16 +765,6 @@
int send(class NdbApiSignal* signal, Uint32 node, Uint32 node_type);
ConfigRetriever *m_config_retriever;
-
-public:
- /**
- * This method does not exist
- */
- struct Area51 {
- class TransporterFacade * theFacade;
- class TransporterRegistry * theRegistry;
- };
- Area51 getStuff();
};
inline
--- 1.32/ndb/src/mgmsrv/Services.cpp 2004-12-17 10:32:22 +01:00
+++ 1.33/ndb/src/mgmsrv/Services.cpp 2005-07-14 14:47:27 +02:00
@@ -253,15 +253,19 @@
};
MgmApiSession::MgmApiSession(class MgmtSrvr & mgm, NDB_SOCKET_TYPE sock)
- : SocketServer::Session(sock), m_mgmsrv(mgm) {
+ : SocketServer::Session(sock), m_mgmsrv(mgm)
+{
+ DBUG_ENTER("MgmApiSession::MgmApiSession");
m_input = new SocketInputStream(sock);
m_output = new SocketOutputStream(sock);
m_parser = new Parser_t(commands, *m_input, true, true, true);
m_allocated_resources= new MgmtSrvr::Allocated_resources(m_mgmsrv);
+ DBUG_VOID_RETURN;
}
MgmApiSession::~MgmApiSession()
{
+ DBUG_ENTER("MgmApiSession::~MgmApiSession");
if (m_input)
delete m_input;
if (m_output)
@@ -270,10 +274,19 @@
delete m_parser;
if (m_allocated_resources)
delete m_allocated_resources;
+ if(m_socket != 0 && m_socket != NDB_INVALID_SOCKET)
+ {
+ NDB_CLOSE_SOCKET(m_socket);
+ m_socket= 0;
+ }
+ DBUG_VOID_RETURN;
}
void
-MgmApiSession::runSession() {
+MgmApiSession::runSession()
+{
+ DBUG_ENTER("MgmApiSession::runSession");
+
Parser_t::Context ctx;
while(!m_stop) {
m_parser->run(ctx, *this);
@@ -301,8 +314,13 @@
break;
}
}
- if(m_socket >= 0)
+ if(m_socket != 0 && m_socket != NDB_INVALID_SOCKET)
+ {
NDB_CLOSE_SOCKET(m_socket);
+ m_socket= 0;
+ }
+
+ DBUG_VOID_RETURN;
}
#ifdef MGM_GET_CONFIG_BACKWARDS_COMPAT
@@ -1236,7 +1254,7 @@
Uint32 threshold;
LogLevel::EventCategory cat;
Logger::LoggerLevel severity;
- int i;
+ int i, n;
DBUG_ENTER("Ndb_mgmd_event_service::log");
DBUG_PRINT("enter",("eventType=%d, nodeid=%d", eventType, nodeId));
@@ -1248,28 +1266,30 @@
Vector<NDB_SOCKET_TYPE> copy;
m_clients.lock();
- for(i = m_clients.size() - 1; i >= 0; i--){
- if(threshold <= m_clients[i].m_logLevel.getLogLevel(cat)){
- if(m_clients[i].m_socket != NDB_INVALID_SOCKET &&
- println_socket(m_clients[i].m_socket,
- MAX_WRITE_TIMEOUT, m_text) == -1){
- copy.push_back(m_clients[i].m_socket);
+ for(i = m_clients.size() - 1; i >= 0; i--)
+ {
+ if(threshold <= m_clients[i].m_logLevel.getLogLevel(cat))
+ {
+ int fd= m_clients[i].m_socket;
+ if(fd != NDB_INVALID_SOCKET &&
+ println_socket(fd, MAX_WRITE_TIMEOUT, m_text) == -1)
+ {
+ copy.push_back(fd);
m_clients.erase(i, false);
}
}
}
m_clients.unlock();
- for(i = 0; (unsigned)i < copy.size(); i++){
- NDB_CLOSE_SOCKET(copy[i]);
- }
+ if ((n= (int)copy.size()))
+ {
+ for(i= 0; i < n; i++)
+ NDB_CLOSE_SOCKET(copy[i]);
- if(copy.size()){
LogLevel tmp; tmp.clear();
m_clients.lock();
- for(i = 0; (unsigned)i < m_clients.size(); i++){
+ for(i= m_clients.size() - 1; i >= 0; i--)
tmp.set_max(m_clients[i].m_logLevel);
- }
m_clients.unlock();
update_log_level(tmp);
}
@@ -1297,9 +1317,48 @@
}
void
-Ndb_mgmd_event_service::add_listener(const Event_listener& client){
+Ndb_mgmd_event_service::check_listeners()
+{
+ int i, n= 0;
+ DBUG_ENTER("Ndb_mgmd_event_service::check_listeners");
+ m_clients.lock();
+ for(i= m_clients.size() - 1; i >= 0; i--)
+ {
+ int fd= m_clients[i].m_socket;
+ DBUG_PRINT("info",("%d %d",i,fd));
+ char buf[1];
+ buf[0]=0;
+ if (fd != NDB_INVALID_SOCKET &&
+ println_socket(fd,MAX_WRITE_TIMEOUT,"<PING>") == -1)
+ {
+ NDB_CLOSE_SOCKET(fd);
+ m_clients.erase(i, false);
+ n=1;
+ }
+ }
+ if (n)
+ {
+ LogLevel tmp; tmp.clear();
+ for(i= m_clients.size() - 1; i >= 0; i--)
+ tmp.set_max(m_clients[i].m_logLevel);
+ update_log_level(tmp);
+ }
+ m_clients.unlock();
+ DBUG_VOID_RETURN;
+}
+
+void
+Ndb_mgmd_event_service::add_listener(const Event_listener& client)
+{
+ DBUG_ENTER("Ndb_mgmd_event_service::add_listener");
+ DBUG_PRINT("enter",("client.m_socket: %d", client.m_socket));
+
+ check_listeners();
+
m_clients.push_back(client);
update_max_log_level(client.m_logLevel);
+
+ DBUG_VOID_RETURN;
}
void
--- 1.36/ndb/src/mgmsrv/main.cpp 2005-01-28 00:42:34 +01:00
+++ 1.37/ndb/src/mgmsrv/main.cpp 2005-07-14 14:47:27 +02:00
@@ -53,16 +53,16 @@
* @struct MgmGlobals
* @brief Global Variables used in the management server
******************************************************************************/
+/** Command line arguments */
+static int opt_daemon; // NOT bool, bool need not be int
+static int opt_non_interactive;
+static int opt_interactive;
+static const char * opt_config_filename= 0;
+
struct MgmGlobals {
MgmGlobals();
~MgmGlobals();
- /** Command line arguments */
- int daemon; // NOT bool, bool need not be int
- int non_interactive;
- int interactive;
- const char * config_filename;
-
/** Stuff found in environment or in local config */
NodeId localNodeId;
bool use_specific_ip;
@@ -77,7 +77,7 @@
};
int g_no_nodeid_checks= 0;
-static MgmGlobals glob;
+static MgmGlobals *glob= 0;
/******************************************************************************
* Function prototypes
@@ -108,14 +108,14 @@
{
NDB_STD_OPTS("ndb_mgmd"),
{ "config-file", 'f', "Specify cluster configuration file",
- (gptr*) &glob.config_filename, (gptr*) &glob.config_filename, 0,
+ (gptr*) &opt_config_filename, (gptr*) &opt_config_filename, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "daemon", 'd', "Run ndb_mgmd in daemon mode (default)",
- (gptr*) &glob.daemon, (gptr*) &glob.daemon, 0,
+ (gptr*) &opt_daemon, (gptr*) &opt_daemon, 0,
GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0 },
{ "interactive", OPT_INTERACTIVE,
"Run interactive. Not supported but provided for testing purposes",
- (gptr*) &glob.interactive, (gptr*) &glob.interactive, 0,
+ (gptr*) &opt_interactive, (gptr*) &opt_interactive, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ "no-nodeid-checks", OPT_NO_NODEID_CHECKS,
"Do not provide any node id checks",
@@ -123,13 +123,13 @@
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ "nodaemon", OPT_NO_DAEMON,
"Don't run as daemon, but don't read from stdin",
- (gptr*) &glob.non_interactive, (gptr*) &glob.non_interactive, 0,
+ (gptr*) &opt_non_interactive, (gptr*) &opt_non_interactive, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
#if NDB_VERSION_MAJOR <= 4
{ "config-file", 'c',
"-c provided for backwards compatability, will be removed in 5.0."
" Use -f instead",
- (gptr*) &glob.config_filename, (gptr*) &glob.config_filename, 0,
+ (gptr*) &opt_config_filename, (gptr*) &opt_config_filename, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
@@ -167,6 +167,7 @@
int main(int argc, char** argv)
{
NDB_INIT(argv[0]);
+ glob= new MgmGlobals;
/**
* OSE specific. Enable shared ownership of file system resources.
@@ -186,40 +187,40 @@
if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
exit(ho_error);
- if (glob.interactive ||
- glob.non_interactive) {
- glob.daemon= 0;
+ if (opt_interactive ||
+ opt_non_interactive) {
+ opt_daemon= 0;
}
- glob.socketServer = new SocketServer();
+ glob->socketServer = new SocketServer();
MgmApiService * mapi = new MgmApiService();
- glob.mgmObject = new MgmtSrvr(glob.socketServer,
- glob.config_filename,
+ glob->mgmObject = new MgmtSrvr(glob->socketServer,
+ opt_config_filename,
opt_connect_str);
- if (glob.mgmObject->init())
+ if (glob->mgmObject->init())
goto error_end;
my_setwd(NdbConfig_get_path(0), MYF(0));
- glob.localNodeId= glob.mgmObject->getOwnNodeId();
- if (glob.localNodeId == 0) {
+ glob->localNodeId= glob->mgmObject->getOwnNodeId();
+ if (glob->localNodeId == 0) {
goto error_end;
}
- glob.port= glob.mgmObject->getPort();
+ glob->port= glob->mgmObject->getPort();
- if (glob.port == 0)
+ if (glob->port == 0)
goto error_end;
- glob.interface_name = 0;
- glob.use_specific_ip = false;
+ glob->interface_name = 0;
+ glob->use_specific_ip = false;
- if(!glob.use_specific_ip){
+ if(!glob->use_specific_ip){
int count= 5; // no of retries for tryBind
- while(!glob.socketServer->tryBind(glob.port, glob.interface_name)){
+ while(!glob->socketServer->tryBind(glob->port, glob->interface_name)){
if (--count > 0) {
NdbSleep_MilliSleep(1000);
continue;
@@ -228,33 +229,33 @@
"Please check if the port is already used,\n"
"(perhaps a ndb_mgmd is already running),\n"
"and if you are executing on the correct computer",
- (glob.interface_name ? glob.interface_name : "*"), glob.port);
+ (glob->interface_name ? glob->interface_name : "*"), glob->port);
goto error_end;
}
- free(glob.interface_name);
- glob.interface_name = 0;
+ free(glob->interface_name);
+ glob->interface_name = 0;
}
- if(!glob.socketServer->setup(mapi, glob.port, glob.interface_name)){
+ if(!glob->socketServer->setup(mapi, glob->port, glob->interface_name)){
ndbout_c("Unable to setup management port: %d!\n"
"Please check if the port is already used,\n"
"(perhaps a ndb_mgmd is already running),\n"
"and if you are executing on the correct computer",
- glob.port);
+ glob->port);
delete mapi;
goto error_end;
}
- if(!glob.mgmObject->check_start()){
+ if(!glob->mgmObject->check_start()){
ndbout_c("Unable to check start management server.");
ndbout_c("Probably caused by illegal initial configuration file.");
goto error_end;
}
- if (glob.daemon) {
+ if (opt_daemon) {
// Become a daemon
- char *lockfile= NdbConfig_PidFileName(glob.localNodeId);
- char *logfile= NdbConfig_StdoutFileName(glob.localNodeId);
+ char *lockfile= NdbConfig_PidFileName(glob->localNodeId);
+ char *logfile= NdbConfig_StdoutFileName(glob->localNodeId);
NdbAutoPtr<char> tmp_aptr1(lockfile), tmp_aptr2(logfile);
if (NdbDaemon_Make(lockfile, logfile, 0) == -1) {
@@ -268,7 +269,7 @@
#endif
{
BaseString error_string;
- if(!glob.mgmObject->start(error_string)){
+ if(!glob->mgmObject->start(error_string)){
ndbout_c("Unable to start management server.");
ndbout_c("Probably caused by illegal initial configuration file.");
ndbout_c(error_string.c_str());
@@ -276,8 +277,8 @@
}
}
- //glob.mgmObject->saveConfig();
- mapi->setMgm(glob.mgmObject);
+ //glob->mgmObject->saveConfig();
+ mapi->setMgm(glob->mgmObject);
char msg[256];
BaseString::snprintf(msg, sizeof(msg),
@@ -286,16 +287,16 @@
g_eventLogger.info(msg);
BaseString::snprintf(msg, 256, "Id: %d, Command port: %d",
- glob.localNodeId, glob.port);
+ glob->localNodeId, glob->port);
ndbout_c(msg);
g_eventLogger.info(msg);
g_StopServer = false;
- glob.socketServer->startServer();
+ glob->socketServer->startServer();
#if ! defined NDB_OSE && ! defined NDB_SOFTOSE
- if(glob.interactive) {
- CommandInterpreter com(* glob.mgmObject);
+ if(opt_interactive) {
+ CommandInterpreter com(* glob->mgmObject);
while(com.readAndExecute());
} else
#endif
@@ -305,22 +306,22 @@
}
g_eventLogger.info("Shutting down server...");
- glob.socketServer->stopServer();
- glob.socketServer->stopSessions();
+ glob->socketServer->stopServer();
+ glob->socketServer->stopSessions(true);
g_eventLogger.info("Shutdown complete");
+ delete glob;
+ ndb_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
return 0;
error_end:
+ delete glob;
+ ndb_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
return 1;
}
MgmGlobals::MgmGlobals(){
// Default values
port = 0;
- config_filename = NULL;
interface_name = 0;
- daemon = 1;
- non_interactive = 0;
- interactive = 0;
socketServer = 0;
mgmObject = 0;
}
--- 1.15/ndb/src/ndbapi/ClusterMgr.cpp 2005-05-04 18:40:52 +02:00
+++ 1.16/ndb/src/ndbapi/ClusterMgr.cpp 2005-07-14 14:47:27 +02:00
@@ -64,16 +64,21 @@
theStop(0),
theFacade(_facade)
{
+ DBUG_ENTER("ClusterMgr::ClusterMgr");
ndbSetOwnVersion();
clusterMgrThreadMutex = NdbMutex_Create();
noOfAliveNodes= 0;
noOfConnectedNodes= 0;
theClusterMgrThread= 0;
+ DBUG_VOID_RETURN;
}
-ClusterMgr::~ClusterMgr(){
+ClusterMgr::~ClusterMgr()
+{
+ DBUG_ENTER("ClusterMgr::~ClusterMgr");
doStop();
NdbMutex_Destroy(clusterMgrThreadMutex);
+ DBUG_VOID_RETURN;
}
void
@@ -152,7 +157,6 @@
if (theClusterMgrThread) {
NdbThread_WaitFor(theClusterMgrThread, &status);
NdbThread_Destroy(&theClusterMgrThread);
- theClusterMgrThread= 0;
}
NdbMutex_Unlock(clusterMgrThreadMutex);
DBUG_VOID_RETURN;
@@ -468,6 +472,8 @@
ArbitMgr::ArbitMgr(TransporterFacade & _fac)
: theFacade(_fac)
{
+ DBUG_ENTER("ArbitMgr::ArbitMgr");
+
theThreadMutex = NdbMutex_Create();
theInputCond = NdbCondition_Create();
theInputMutex = NdbMutex_Create();
@@ -485,13 +491,17 @@
memset(&theChooseReq1, 0, sizeof(theChooseReq1));
memset(&theChooseReq2, 0, sizeof(theChooseReq2));
memset(&theStopOrd, 0, sizeof(theStopOrd));
+
+ DBUG_VOID_RETURN;
}
ArbitMgr::~ArbitMgr()
{
+ DBUG_ENTER("ArbitMgr::~ArbitMgr");
NdbMutex_Destroy(theThreadMutex);
NdbCondition_Destroy(theInputCond);
NdbMutex_Destroy(theInputMutex);
+ DBUG_VOID_RETURN;
}
// Start arbitrator thread. This is kernel request.
@@ -508,7 +518,7 @@
sendSignalToThread(aSignal);
void* value;
NdbThread_WaitFor(theThread, &value);
- theThread = NULL;
+ NdbThread_Destroy(&theThread);
theState = StateInit;
theInputFull = false;
}
@@ -547,7 +557,7 @@
sendSignalToThread(aSignal);
void* value;
NdbThread_WaitFor(theThread, &value);
- theThread = NULL;
+ NdbThread_Destroy(&theThread);
theState = StateInit;
}
NdbMutex_Unlock(theThreadMutex);
--- 1.30/ndb/src/ndbapi/TransporterFacade.cpp 2005-04-20 15:35:20 +02:00
+++ 1.31/ndb/src/ndbapi/TransporterFacade.cpp 2005-07-14 14:47:27 +02:00
@@ -395,12 +395,10 @@
if (theReceiveThread) {
NdbThread_WaitFor(theReceiveThread, &status);
NdbThread_Destroy(&theReceiveThread);
- theReceiveThread= 0;
}
if (theSendThread) {
NdbThread_WaitFor(theSendThread, &status);
NdbThread_Destroy(&theSendThread);
- theSendThread= 0;
}
DBUG_VOID_RETURN;
}
@@ -435,7 +433,7 @@
theTransporterRegistry->stopSending();
m_socket_server.stopServer();
- m_socket_server.stopSessions();
+ m_socket_server.stopSessions(true);
theTransporterRegistry->stop_clients();
}
@@ -477,6 +475,8 @@
theReceiveThread(NULL),
m_fragmented_signal_id(0)
{
+ DBUG_ENTER("TransporterFacade::TransporterFacade");
+
theOwnId = 0;
theMutexPtr = NdbMutex_Create();
@@ -493,11 +493,15 @@
m_max_trans_id = 0;
theClusterMgr = new ClusterMgr(* this);
+
+ DBUG_VOID_RETURN;
}
bool
TransporterFacade::init(Uint32 nodeId, const ndb_mgm_configuration* props)
{
+ DBUG_ENTER("TransporterFacade::init");
+
theOwnId = nodeId;
theTransporterRegistry = new TransporterRegistry(this);
@@ -506,7 +510,7 @@
* theTransporterRegistry);
if(res <= 0){
TRP_DEBUG( "configureTransporters returned 0 or less" );
- return false;
+ DBUG_RETURN(false);
}
ndb_mgm_configuration_iterator iter(* props, CFG_SECTION_NODE);
@@ -524,7 +528,7 @@
iter.first();
if(iter.find(CFG_NODE_ID, nodeId)){
TRP_DEBUG( "Node info missing from config." );
- return false;
+ DBUG_RETURN(false);
}
Uint32 rank = 0;
@@ -553,7 +557,7 @@
if (!theTransporterRegistry->start_service(m_socket_server)){
ndbout_c("Unable to start theTransporterRegistry->start_service");
- return false;
+ DBUG_RETURN(false);
}
theReceiveThread = NdbThread_Create(runReceiveResponse_C,
@@ -573,7 +577,7 @@
signalLogger.logOn(true, 0, SignalLoggerManager::LogInOut);
#endif
- return true;
+ DBUG_RETURN(true);
}
@@ -694,8 +698,10 @@
DBUG_RETURN(r);
}
-TransporterFacade::~TransporterFacade(){
-
+TransporterFacade::~TransporterFacade()
+{
+ DBUG_ENTER("TransporterFacade::~TransporterFacade");
+
NdbMutex_Lock(theMutexPtr);
delete theClusterMgr;
delete theArbitMgr;
@@ -705,6 +711,7 @@
#ifdef API_TRACE
signalLogger.setOutputStream(0);
#endif
+ DBUG_VOID_RETURN;
}
void
--- 1.4/ndb/src/common/util/SocketClient.cpp 2004-11-15 10:43:14 +01:00
+++ 1.5/ndb/src/common/util/SocketClient.cpp 2005-07-14 14:47:26 +02:00
@@ -57,6 +57,8 @@
return false;
}
+ DBUG_PRINT("info",("NDB_SOCKET: %d", m_sockfd));
+
return true;
}
--- 1.5/ndb/include/util/ndb_opts.h 2005-01-28 00:42:34 +01:00
+++ 1.6/ndb/include/util/ndb_opts.h 2005-07-14 14:47:25 +02:00
@@ -28,6 +28,7 @@
const char *opt_connect_str= 0;\
my_bool opt_ndb_optimized_node_selection
+bool opt_endinfo= 0;
my_bool opt_ndb_shm;
#define OPT_NDB_CONNECTSTRING 'c'
@@ -93,6 +94,7 @@
{
DBUG_PUSH(argument);
}
+ opt_endinfo= 1;
break;
case 'V':
ndb_std_print_version();
| Thread |
|---|
| • bk commit into 4.1 tree (tomas:1.2342) BUG#11898 | tomas | 14 Jul |