mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
bug#9892
Make BUILDINDX RF_LOCAL aware ndb/src/ndbapi/Ndbif.cpp: allow TCKEY_FAILREF w/ invalid magic number also when NDB_NODROPPED_SIGNAL ndb/test/ndbapi/testIndex.cpp: Run only 1 update thread during NFNR2_O
This commit is contained in:
parent
5a1af9ed8c
commit
135c7b5a1d
3 changed files with 34 additions and 15 deletions
|
@ -9811,11 +9811,20 @@ Dbdict::execBUILDINDXREQ(Signal* signal)
|
|||
requestType == BuildIndxReq::RT_ALTER_INDEX ||
|
||||
requestType == BuildIndxReq::RT_SYSTEMRESTART) {
|
||||
jam();
|
||||
|
||||
const bool isLocal = req->getRequestFlag() & RequestFlag::RF_LOCAL;
|
||||
NdbNodeBitmask receiverNodes = c_aliveNodes;
|
||||
if (isLocal) {
|
||||
receiverNodes.clear();
|
||||
receiverNodes.set(getOwnNodeId());
|
||||
}
|
||||
|
||||
if (signal->getLength() == BuildIndxReq::SignalLength) {
|
||||
jam();
|
||||
if (getOwnNodeId() != c_masterNodeId) {
|
||||
|
||||
if (!isLocal && getOwnNodeId() != c_masterNodeId) {
|
||||
jam();
|
||||
|
||||
|
||||
releaseSections(signal);
|
||||
OpBuildIndex opBad;
|
||||
opPtr.p = &opBad;
|
||||
|
@ -9828,9 +9837,9 @@ Dbdict::execBUILDINDXREQ(Signal* signal)
|
|||
}
|
||||
// forward initial request plus operation key to all
|
||||
req->setOpKey(++c_opRecordSequence);
|
||||
NodeReceiverGroup rg(DBDICT, c_aliveNodes);
|
||||
NodeReceiverGroup rg(DBDICT, receiverNodes);
|
||||
sendSignal(rg, GSN_BUILDINDXREQ,
|
||||
signal, BuildIndxReq::SignalLength + 1, JBB);
|
||||
signal, BuildIndxReq::SignalLength + 1, JBB);
|
||||
return;
|
||||
}
|
||||
// seize operation record
|
||||
|
@ -9853,7 +9862,7 @@ Dbdict::execBUILDINDXREQ(Signal* signal)
|
|||
}
|
||||
c_opBuildIndex.add(opPtr);
|
||||
// master expects to hear from all
|
||||
opPtr.p->m_signalCounter = c_aliveNodes;
|
||||
opPtr.p->m_signalCounter = receiverNodes;
|
||||
buildIndex_sendReply(signal, opPtr, false);
|
||||
return;
|
||||
}
|
||||
|
@ -10208,10 +10217,20 @@ Dbdict::buildIndex_sendSlaveReq(Signal* signal, OpBuildIndexPtr opPtr)
|
|||
req->setConnectionPtr(opPtr.p->key);
|
||||
req->setRequestType(opPtr.p->m_requestType);
|
||||
req->addRequestFlag(opPtr.p->m_requestFlag);
|
||||
opPtr.p->m_signalCounter = c_aliveNodes;
|
||||
NodeReceiverGroup rg(DBDICT, c_aliveNodes);
|
||||
sendSignal(rg, GSN_BUILDINDXREQ,
|
||||
signal, BuildIndxReq::SignalLength, JBB);
|
||||
if(opPtr.p->m_requestFlag & RequestFlag::RF_LOCAL)
|
||||
{
|
||||
opPtr.p->m_signalCounter.clearWaitingFor();
|
||||
opPtr.p->m_signalCounter.setWaitingFor(getOwnNodeId());
|
||||
sendSignal(reference(), GSN_BUILDINDXREQ,
|
||||
signal, BuildIndxReq::SignalLength, JBB);
|
||||
}
|
||||
else
|
||||
{
|
||||
opPtr.p->m_signalCounter = c_aliveNodes;
|
||||
NodeReceiverGroup rg(DBDICT, c_aliveNodes);
|
||||
sendSignal(rg, GSN_BUILDINDXREQ,
|
||||
signal, BuildIndxReq::SignalLength, JBB);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -453,7 +453,7 @@ Ndb::handleReceivedSignal(NdbApiSignal* aSignal, LinearSectionPtr ptr[3])
|
|||
tFirstDataPtr = int2void(tFirstData);
|
||||
if(tFirstDataPtr != 0){
|
||||
tOp = void2rec_op(tFirstDataPtr);
|
||||
if (tOp->checkMagicNumber() == 0) {
|
||||
if (tOp->checkMagicNumber(false) == 0) {
|
||||
tCon = tOp->theNdbCon;
|
||||
if (tCon != NULL) {
|
||||
if ((tCon->theSendStatus == NdbConnection::sendTC_OP) ||
|
||||
|
@ -466,11 +466,11 @@ Ndb::handleReceivedSignal(NdbApiSignal* aSignal, LinearSectionPtr ptr[3])
|
|||
}//if
|
||||
}//if
|
||||
}//if
|
||||
} else {
|
||||
#ifdef VM_TRACE
|
||||
ndbout_c("Recevied TCKEY_FAILREF wo/ operation");
|
||||
#endif
|
||||
}
|
||||
#ifdef VM_TRACE
|
||||
ndbout_c("Recevied TCKEY_FAILREF wo/ operation");
|
||||
#endif
|
||||
return;
|
||||
break;
|
||||
}
|
||||
case GSN_TCKEYREF:
|
||||
|
|
|
@ -1329,7 +1329,7 @@ TESTCASE("NFNR2_O",
|
|||
INITIALIZER(runLoadTable);
|
||||
STEP(runRestarts);
|
||||
STEP(runTransactions2);
|
||||
STEP(runTransactions2);
|
||||
//STEP(runTransactions2);
|
||||
FINALIZER(runVerifyIndex);
|
||||
FINALIZER(createRandomIndex_Drop);
|
||||
FINALIZER(createPkIndex_Drop);
|
||||
|
|
Loading…
Add table
Reference in a new issue