From a6127ad2cd81d245671176790d9ca4b14d49681b Mon Sep 17 00:00:00 2001 From: unknown <joreland@mysql.com> Date: Tue, 3 Aug 2004 22:08:17 +0200 Subject: [PATCH] Ndb mgmsrv Memleak(s) ndb/src/mgmapi/Makefile.am: remove ndb_test_mgmapi from Makefile as it's has "incorrect" dependencies ndb/src/mgmsrv/MgmtSrvr.cpp: Stop/wait for m_signalRecvThread aswell --- ndb/src/mgmapi/Makefile.am | 5 +++++ ndb/src/mgmsrv/MgmtSrvr.cpp | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ndb/src/mgmapi/Makefile.am b/ndb/src/mgmapi/Makefile.am index e4fa1d449c6..bf209ddccb5 100644 --- a/ndb/src/mgmapi/Makefile.am +++ b/ndb/src/mgmapi/Makefile.am @@ -9,5 +9,10 @@ DEFS_LOC = -DNO_DEBUG_MESSAGES include $(top_srcdir)/ndb/config/common.mk.am include $(top_srcdir)/ndb/config/type_util.mk.am +#ndbtest_PROGRAMS = ndb_test_mgmapi +ndb_test_mgmapi_SOURCES = test_mgmapi.cpp +ndb_test_mgmapi_LDFLAGS = @ndb_bin_am_ldflags@ \ + $(top_builddir)/ndb/src/libndbclient.la + # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/ndb/src/mgmsrv/MgmtSrvr.cpp b/ndb/src/mgmsrv/MgmtSrvr.cpp index 33ac4ddcf99..2fe4624ab59 100644 --- a/ndb/src/mgmsrv/MgmtSrvr.cpp +++ b/ndb/src/mgmsrv/MgmtSrvr.cpp @@ -172,7 +172,7 @@ MgmtSrvr::signalRecvThreadRun() siglist.push_back(SigMatch(GSN_MGM_UNLOCK_CONFIG_REQ, &MgmtSrvr::handle_MGM_UNLOCK_CONFIG_REQ)); - while(1) { + while(!_isStopThread) { SigMatch *handler = NULL; NdbApiSignal *signal = NULL; if(m_signalRecvQueue.waitFor(siglist, handler, signal)) { @@ -415,14 +415,18 @@ MgmtSrvr::getPort() const { ndbout << "Local node id " << getOwnNodeId() << " is not defined as management server" << endl << "Have you set correct NodeId for this node?" << endl; + ndb_mgm_destroy_iterator(iter); return 0; } Uint32 port = 0; if(ndb_mgm_get_int_parameter(iter, CFG_MGM_PORT, &port) != 0){ ndbout << "Could not find PortNumber in the configuration file." << endl; + ndb_mgm_destroy_iterator(iter); return 0; } + + ndb_mgm_destroy_iterator(iter); /***************** * Set Stat Port * @@ -517,6 +521,7 @@ MgmtSrvr::MgmtSrvr(NodeId nodeId, _isStopThread = false; _logLevelThread = NULL; _logLevelThreadSleep = 500; + m_signalRecvThread = NULL; _startedNodeId = 0; theFacade = 0; @@ -696,6 +701,11 @@ MgmtSrvr::~MgmtSrvr() NdbThread_WaitFor(_logLevelThread, &res); NdbThread_Destroy(&_logLevelThread); } + + if (m_signalRecvThread != NULL) { + NdbThread_WaitFor(m_signalRecvThread, &res); + NdbThread_Destroy(&m_signalRecvThread); + } } //**************************************************************************** -- 2.30.9