Commit 4a311ce7 authored by unknown's avatar unknown

Fix memory leak at certain failed create tables

parent 5803d603
......@@ -943,6 +943,7 @@ private:
void ndbStartReqLab(Signal *, BlockReference ref);
void nodeRestartStartRecConfLab(Signal *);
void dihCopyCompletedLab(Signal *);
void release_connect(ConnectRecordPtr ptr);
void copyTableNode(Signal *,
CopyTableNode* ctn,
NodeRecordPtr regNodePtr);
......
......@@ -6075,13 +6075,9 @@ void Dbdih::execDIRELEASEREQ(Signal* signal)
ptrCheckGuard(connectPtr, cconnectFileSize, connectRecord);
ndbrequire(connectPtr.p->connectState != ConnectRecord::FREE);
ndbrequire(connectPtr.p->userblockref == userRef);
connectPtr.p->connectState = ConnectRecord::FREE;
signal->theData[0] = connectPtr.p->userpointer;
sendSignal(connectPtr.p->userblockref, GSN_DIRELEASECONF, signal, 1, JBB);
connectPtr.p->nfConnect = cfirstconnect;
cfirstconnect = connectPtr.i;
connectPtr.p->userblockref = ZNIL;
connectPtr.p->userpointer = RNIL;
release_connect(connectPtr);
}//Dbdih::execDIRELEASEREQ()
/*
......@@ -6518,11 +6514,16 @@ Dbdih::sendAddFragreq(Signal* signal, ConnectRecordPtr connectPtr,
DiAddTabConf::SignalLength, JBB);
// Release
connectPtr.p->userblockref = ZNIL;
connectPtr.p->userpointer = RNIL;
connectPtr.p->connectState = ConnectRecord::FREE;
connectPtr.p->nfConnect = cfirstconnect;
cfirstconnect = connectPtr.i;
release_connect(connectPtr);
}
void
Dbdih::release_connect(ConnectRecordPtr ptr)
{
ptr.p->userblockref = ZNIL;
ptr.p->userpointer = RNIL;
ptr.p->connectState = ConnectRecord::FREE;
ptr.p->nfConnect = cfirstconnect;
cfirstconnect = ptr.i;
}
void
......@@ -6559,11 +6560,7 @@ Dbdih::execADD_FRAGREF(Signal* signal){
}
// Release
connectPtr.p->userblockref = ZNIL;
connectPtr.p->userpointer = RNIL;
connectPtr.p->connectState = ConnectRecord::FREE;
connectPtr.p->nfConnect = cfirstconnect;
cfirstconnect = connectPtr.i;
release_connect(connectPtr);
}
/*
......@@ -6572,10 +6569,10 @@ Dbdih::execADD_FRAGREF(Signal* signal){
*/
void Dbdih::addtabrefuseLab(Signal* signal, ConnectRecordPtr connectPtr, Uint32 errorCode)
{
connectPtr.p->connectState = ConnectRecord::INUSE;
signal->theData[0] = connectPtr.p->userpointer;
signal->theData[1] = errorCode;
sendSignal(connectPtr.p->userblockref, GSN_DIADDTABREF, signal, 2, JBB);
release_connect(connectPtr);
return;
}//Dbdih::addtabrefuseLab()
......
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