Commit d7773916 authored by unknown's avatar unknown

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
parent 7fa2b4ef
...@@ -596,26 +596,32 @@ static int f_dictionary_count = 0; ...@@ -596,26 +596,32 @@ static int f_dictionary_count = 0;
NdbDictionaryImpl::~NdbDictionaryImpl() NdbDictionaryImpl::~NdbDictionaryImpl()
{ {
NdbElement_t<NdbTableImpl> * curr = m_localHash.m_tableHash.getNext(0); 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->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(); m_globalHash->unlock();
} else {
curr = m_localHash.m_tableHash.getNext(curr); assert(curr == 0);
}
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;
} }
m_globalHash->unlock();
} }
#if 0 #if 0
bool bool
NdbDictionaryImpl::setTransporter(class TransporterFacade * tf) NdbDictionaryImpl::setTransporter(class TransporterFacade * tf)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment