Bug #16152, create event assertion in debug version, list corruption
This commit is contained in:
parent
375afff3bd
commit
77f51bf11a
@ -49,9 +49,9 @@ public:
|
|||||||
GET_SET_SENDERREF
|
GET_SET_SENDERREF
|
||||||
GET_SET_SENDERDATA
|
GET_SET_SENDERDATA
|
||||||
void setPrepareId(Uint32 pId) { prepareId = pId; }; // !! unsets release flag
|
void setPrepareId(Uint32 pId) { prepareId = pId; }; // !! unsets release flag
|
||||||
Uint32 getPrepareId() { return prepareId & 0xFF; };
|
Uint32 getPrepareId() const { return prepareId & 0xFF; };
|
||||||
void setReleaseFlag() { prepareId |= 0x100; };
|
void setReleaseFlag() { prepareId |= 0x100; };
|
||||||
bool getReleaseFlag() { return (prepareId & 0x100) != 0; };
|
bool getReleaseFlag() const { return (prepareId & 0x100) != 0; };
|
||||||
private:
|
private:
|
||||||
Uint32 senderData; // MUST be no 1!
|
Uint32 senderData; // MUST be no 1!
|
||||||
Uint32 senderRef;
|
Uint32 senderRef;
|
||||||
@ -117,7 +117,6 @@ public:
|
|||||||
IllegalKeyNumber = 1,
|
IllegalKeyNumber = 1,
|
||||||
IllegalAttrNumber = 2,
|
IllegalAttrNumber = 2,
|
||||||
TCError = 3,
|
TCError = 3,
|
||||||
IllegalPrepareId = 4,
|
|
||||||
AllocationError = 5,
|
AllocationError = 5,
|
||||||
MissingDataSection = 6,
|
MissingDataSection = 6,
|
||||||
MissingData = 7
|
MissingData = 7
|
||||||
|
@ -20,10 +20,12 @@ bool
|
|||||||
printUTIL_EXECUTE_REQ(FILE* out, const Uint32 * data, Uint32 len, Uint16 rec)
|
printUTIL_EXECUTE_REQ(FILE* out, const Uint32 * data, Uint32 len, Uint16 rec)
|
||||||
{
|
{
|
||||||
const UtilExecuteReq* const sig = (UtilExecuteReq*)data;
|
const UtilExecuteReq* const sig = (UtilExecuteReq*)data;
|
||||||
fprintf(out, " senderRef: H'%.8x, senderData: H'%.8x prepareId: %d\n",
|
fprintf(out, " senderRef: H'%.8x, senderData: H'%.8x prepareId: %d "
|
||||||
|
" releaseFlag: %d\n",
|
||||||
sig->senderRef,
|
sig->senderRef,
|
||||||
sig->senderData,
|
sig->senderData,
|
||||||
sig->prepareId);
|
sig->getPrepareId(),
|
||||||
|
sig->getReleaseFlag());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,8 +50,6 @@ printUTIL_EXECUTE_REF(FILE* out, const Uint32 * data, Uint32 len, Uint16 rec)
|
|||||||
"IllegalAttrNumber" :
|
"IllegalAttrNumber" :
|
||||||
sig->errorCode == UtilExecuteRef::TCError ?
|
sig->errorCode == UtilExecuteRef::TCError ?
|
||||||
"TCError" :
|
"TCError" :
|
||||||
sig->errorCode == UtilExecuteRef::IllegalPrepareId ?
|
|
||||||
"IllegalPrepareId" :
|
|
||||||
sig->errorCode == UtilExecuteRef::AllocationError ?
|
sig->errorCode == UtilExecuteRef::AllocationError ?
|
||||||
"AllocationError" :
|
"AllocationError" :
|
||||||
"Unknown");
|
"Unknown");
|
||||||
|
@ -52,7 +52,6 @@
|
|||||||
DbUtil::DbUtil(const Configuration & conf) :
|
DbUtil::DbUtil(const Configuration & conf) :
|
||||||
SimulatedBlock(DBUTIL, conf),
|
SimulatedBlock(DBUTIL, conf),
|
||||||
c_runningPrepares(c_preparePool),
|
c_runningPrepares(c_preparePool),
|
||||||
c_runningPreparedOperations(c_preparedOperationPool),
|
|
||||||
c_seizingTransactions(c_transactionPool),
|
c_seizingTransactions(c_transactionPool),
|
||||||
c_runningTransactions(c_transactionPool),
|
c_runningTransactions(c_transactionPool),
|
||||||
c_lockQueues(c_lockQueuePool)
|
c_lockQueues(c_lockQueuePool)
|
||||||
@ -566,12 +565,13 @@ DbUtil::execDUMP_STATE_ORD(Signal* signal){
|
|||||||
}
|
}
|
||||||
ndbout << "PreparedOperation Id: " << signal->theData[2] << endl;
|
ndbout << "PreparedOperation Id: " << signal->theData[2] << endl;
|
||||||
PreparedOperationPtr prepOpPtr;
|
PreparedOperationPtr prepOpPtr;
|
||||||
c_runningPreparedOperations.getPtr(prepOpPtr, signal->theData[2]);
|
c_preparedOperationPool.getPtr(prepOpPtr, signal->theData[2]);
|
||||||
prepOpPtr.p->print();
|
prepOpPtr.p->print();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ** Print all records **
|
// ** Print all records **
|
||||||
|
#if 0 // not implemented
|
||||||
PreparedOperationPtr prepOpPtr;
|
PreparedOperationPtr prepOpPtr;
|
||||||
if (!c_runningPreparedOperations.first(prepOpPtr)) {
|
if (!c_runningPreparedOperations.first(prepOpPtr)) {
|
||||||
ndbout << "No PreparedOperations exist" << endl;
|
ndbout << "No PreparedOperations exist" << endl;
|
||||||
@ -583,6 +583,7 @@ DbUtil::execDUMP_STATE_ORD(Signal* signal){
|
|||||||
ndbout << "]";
|
ndbout << "]";
|
||||||
c_runningPreparedOperations.next(prepOpPtr);
|
c_runningPreparedOperations.next(prepOpPtr);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
@ -988,7 +989,7 @@ DbUtil::prepareOperation(Signal* signal, PreparePtr prepPtr)
|
|||||||
* Seize and store PreparedOperation struct
|
* Seize and store PreparedOperation struct
|
||||||
*******************************************/
|
*******************************************/
|
||||||
PreparedOperationPtr prepOpPtr;
|
PreparedOperationPtr prepOpPtr;
|
||||||
if(!c_runningPreparedOperations.seize(prepOpPtr)) {
|
if(!c_preparedOperationPool.seize(prepOpPtr)) {
|
||||||
jam();
|
jam();
|
||||||
releaseSections(signal);
|
releaseSections(signal);
|
||||||
sendUtilPrepareRef(signal, UtilPrepareRef::PREPARED_OPERATION_SEIZE_ERROR,
|
sendUtilPrepareRef(signal, UtilPrepareRef::PREPARED_OPERATION_SEIZE_ERROR,
|
||||||
@ -1738,17 +1739,7 @@ DbUtil::execUTIL_EXECUTE_REQ(Signal* signal)
|
|||||||
* Get PreparedOperation struct
|
* Get PreparedOperation struct
|
||||||
*******************************/
|
*******************************/
|
||||||
PreparedOperationPtr prepOpPtr;
|
PreparedOperationPtr prepOpPtr;
|
||||||
c_runningPreparedOperations.first(prepOpPtr);
|
c_preparedOperationPool.getPtr(prepOpPtr, prepareId);
|
||||||
while (!prepOpPtr.isNull() && prepOpPtr.i != prepareId)
|
|
||||||
c_runningPreparedOperations.next(prepOpPtr);
|
|
||||||
|
|
||||||
if (prepOpPtr.i != prepareId) {
|
|
||||||
jam();
|
|
||||||
releaseSections(signal);
|
|
||||||
sendUtilExecuteRef(signal, UtilExecuteRef::IllegalPrepareId,
|
|
||||||
0, clientRef, clientData);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
prepOpPtr.p->releaseFlag = releaseFlag;
|
prepOpPtr.p->releaseFlag = releaseFlag;
|
||||||
|
|
||||||
|
@ -389,7 +389,6 @@ public:
|
|||||||
DataBuffer<1>::DataBufferPool c_attrMappingPool;
|
DataBuffer<1>::DataBufferPool c_attrMappingPool;
|
||||||
DataBuffer<11>::DataBufferPool c_dataBufPool;
|
DataBuffer<11>::DataBufferPool c_dataBufPool;
|
||||||
DLList<Prepare> c_runningPrepares;
|
DLList<Prepare> c_runningPrepares;
|
||||||
DLList<PreparedOperation> c_runningPreparedOperations;
|
|
||||||
DLList<Transaction> c_seizingTransactions; // Being seized at TC
|
DLList<Transaction> c_seizingTransactions; // Being seized at TC
|
||||||
DLList<Transaction> c_runningTransactions; // Seized and now exec.
|
DLList<Transaction> c_runningTransactions; // Seized and now exec.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user