Commit d89676d8 authored by unknown's avatar unknown
Browse files

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)
parent 6f7ead2c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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 {
+6 −4
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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