ndb - replication bug fix

Fix gci reply on TC_COMMITREQ
  (prefered way of mysqld)


ndb/include/kernel/signaldata/TcCommit.hpp:
  Fix gci reply on TC_COMMITREQ
    (prefered way of mysqld)
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Fix gci reply on TC_COMMITREQ
    (prefered way of mysqld)
ndb/src/ndbapi/NdbTransaction.cpp:
  Fix gci reply on TC_COMMITREQ
    (prefered way of mysqld)
This commit is contained in:
unknown 2005-04-11 14:29:30 +02:00
parent 6f7ead2c77
commit d89676d8d7
3 changed files with 9 additions and 5 deletions

View file

@ -36,7 +36,7 @@ class TcCommitConf {
friend class NdbTransaction;
public:
STATIC_CONST( SignalLength = 3 );
STATIC_CONST( SignalLength = 4 );
private:
/**
@ -49,6 +49,7 @@ private:
Uint32 transId1;
Uint32 transId2;
Uint32 gci;
};
class TcCommitRef {

View file

@ -4688,8 +4688,9 @@ void Dbtc::sendApiCommit(Signal* signal)
}
commitConf->transId1 = regApiPtr->transid[0];
commitConf->transId2 = regApiPtr->transid[1];
sendSignal(regApiPtr->ndbapiBlockref, GSN_TC_COMMITCONF, signal, 3, JBB);
commitConf->gci = regApiPtr->globalcheckpointid;
sendSignal(regApiPtr->ndbapiBlockref, GSN_TC_COMMITCONF, signal,
TcCommitConf::SignalLength, JBB);
} else if (regApiPtr->returnsignal == RS_NO_RETURN) {
jam();
} else {
@ -5382,8 +5383,9 @@ void Dbtc::execTC_COMMITREQ(Signal* signal)
commitConf->apiConnectPtr = apiConnectPtr;
commitConf->transId1 = transId1;
commitConf->transId2 = transId2;
sendSignal(apiBlockRef, GSN_TC_COMMITCONF, signal, 3, JBB);
commitConf->gci = 0;
sendSignal(apiBlockRef, GSN_TC_COMMITCONF, signal,
TcCommitConf::SignalLength, JBB);
regApiPtr->returnsignal = RS_NO_RETURN;
releaseAbortResources(signal);

View file

@ -1490,6 +1490,7 @@ NdbTransaction::receiveTC_COMMITCONF(const TcCommitConf * commitConf)
if(checkState_TransId(&commitConf->transId1)){
theCommitStatus = Committed;
theCompletionStatus = CompletedSuccess;
theGlobalCheckpointId = commitConf->gci;
return 0;
} else {
#ifdef NDB_NO_DROPPED_SIGNAL