Loading ndb/src/kernel/blocks/dbdict/Dbdict.cpp +28 −9 Original line number Diff line number Diff line Loading @@ -9811,9 +9811,18 @@ 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); Loading @@ -9828,7 +9837,7 @@ 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); return; Loading @@ -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; } Loading Loading @@ -10208,11 +10217,21 @@ Dbdict::buildIndex_sendSlaveReq(Signal* signal, OpBuildIndexPtr opPtr) req->setConnectionPtr(opPtr.p->key); req->setRequestType(opPtr.p->m_requestType); req->addRequestFlag(opPtr.p->m_requestFlag); 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 Dbdict::buildIndex_sendReply(Signal* signal, OpBuildIndexPtr opPtr, Loading ndb/src/ndbapi/Ndbif.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -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) || Loading @@ -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 } return; break; } case GSN_TCKEYREF: Loading ndb/test/ndbapi/testIndex.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
ndb/src/kernel/blocks/dbdict/Dbdict.cpp +28 −9 Original line number Diff line number Diff line Loading @@ -9811,9 +9811,18 @@ 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); Loading @@ -9828,7 +9837,7 @@ 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); return; Loading @@ -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; } Loading Loading @@ -10208,11 +10217,21 @@ Dbdict::buildIndex_sendSlaveReq(Signal* signal, OpBuildIndexPtr opPtr) req->setConnectionPtr(opPtr.p->key); req->setRequestType(opPtr.p->m_requestType); req->addRequestFlag(opPtr.p->m_requestFlag); 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 Dbdict::buildIndex_sendReply(Signal* signal, OpBuildIndexPtr opPtr, Loading
ndb/src/ndbapi/Ndbif.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -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) || Loading @@ -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 } return; break; } case GSN_TCKEYREF: Loading
ndb/test/ndbapi/testIndex.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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