diff options
author | unknown <joreland@mysql.com> | 2004-09-08 06:48:03 +0200 |
---|---|---|
committer | unknown <joreland@mysql.com> | 2004-09-08 06:48:03 +0200 |
commit | d7773916cae631ebaa7282bb8889b0bd30411780 (patch) | |
tree | 6a75a1e76677b9f9e818365b3274ca5488bb33d6 /ndb/src/ndbapi/NdbDictionaryImpl.cpp | |
parent | 7fa2b4ef4e1d00f43f339c38bd1e12fe91698b29 (diff) | |
download | mariadb-git-d7773916cae631ebaa7282bb8889b0bd30411780.tar.gz |
bug#at - testNdbApi WaitUntilReady, MaxNdb
fix delete of dictionary before connection has been established
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
fix delete of dictionary before connection has been established
Diffstat (limited to 'ndb/src/ndbapi/NdbDictionaryImpl.cpp')
-rw-r--r-- | ndb/src/ndbapi/NdbDictionaryImpl.cpp | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/ndb/src/ndbapi/NdbDictionaryImpl.cpp index b221966896e..fd90b2b9ee3 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -596,26 +596,32 @@ static int f_dictionary_count = 0; NdbDictionaryImpl::~NdbDictionaryImpl() { NdbElement_t<NdbTableImpl> * curr = m_localHash.m_tableHash.getNext(0); - while(curr != 0){ + if(m_globalHash){ + while(curr != 0){ + m_globalHash->lock(); + m_globalHash->release(curr->theData); + m_globalHash->unlock(); + + curr = m_localHash.m_tableHash.getNext(curr); + } + m_globalHash->lock(); - m_globalHash->release(curr->theData); + if(--f_dictionary_count == 0){ + delete NdbDictionary::Column::FRAGMENT; + delete NdbDictionary::Column::ROW_COUNT; + delete NdbDictionary::Column::COMMIT_COUNT; + NdbDictionary::Column::FRAGMENT= 0; + NdbDictionary::Column::ROW_COUNT= 0; + NdbDictionary::Column::COMMIT_COUNT= 0; + } m_globalHash->unlock(); - - curr = m_localHash.m_tableHash.getNext(curr); - } - - m_globalHash->lock(); - if(--f_dictionary_count == 0){ - delete NdbDictionary::Column::FRAGMENT; - delete NdbDictionary::Column::ROW_COUNT; - delete NdbDictionary::Column::COMMIT_COUNT; - NdbDictionary::Column::FRAGMENT= 0; - NdbDictionary::Column::ROW_COUNT= 0; - NdbDictionary::Column::COMMIT_COUNT= 0; + } else { + assert(curr == 0); } - m_globalHash->unlock(); } + + #if 0 bool NdbDictionaryImpl::setTransporter(class TransporterFacade * tf) |