List:Commits« Previous MessageNext Message »
From:jonas Date:November 20 2007 2:08pm
Subject:bk commit into 5.1 tree (jonas:1.2581) BUG#32519
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-11-20 15:08:48+01:00, jonas@stripped +1 -0
  ndb - bug#32519
    Add *correct* check when a LCP is restorable
    by looking at maxGciStarted from LCP_FRAG_REP
    (for all fragments)
  
    bug observed by running testSystemRestart -n SR_DD_1_LCP T1
    (causes "incorrect" behaviour in 51-ndb, and crash when using 2 LCP)

  storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp@stripped, 2007-11-20 15:08:46+01:00, jonas@stripped +14 -4
    ndb - bug#32519
      Add *correct* check when a LCP is restorable
      by looking at maxGciStarted from LCP_FRAG_REP
      (for all fragments)

diff -Nrup a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
--- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2007-11-08 10:10:16 +01:00
+++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2007-11-20 15:08:46 +01:00
@@ -10678,6 +10678,12 @@ void Dbdih::execLCP_FRAG_REP(Signal* sig
   Uint32 started = lcpReport->maxGciStarted;
   Uint32 completed = lcpReport->maxGciCompleted;
 
+  if (started > c_lcpState.lcpStopGcp)
+  {
+    jam();
+    c_lcpState.lcpStopGcp = started;
+  }
+
   if(tableDone){
     jam();
 
@@ -11218,7 +11224,12 @@ void Dbdih::allNodesLcpCompletedLab(Sign
   signal->theData[0] = NDB_LE_LocalCheckpointCompleted; //Event type
   signal->theData[1] = SYSFILE->latestLCP_ID;
   sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);
-  c_lcpState.lcpStopGcp = c_newest_restorable_gci;
+
+  if (c_newest_restorable_gci > c_lcpState.lcpStopGcp)
+  {
+    jam();
+    c_lcpState.lcpStopGcp = c_newest_restorable_gci;
+  }
   
   /**
    * Start checking for next LCP
@@ -12088,13 +12099,12 @@ void Dbdih::findMinGci(ReplicaRecordPtr 
   lcpNo = fmgReplicaPtr.p->nextLcp;
   do {
     ndbrequire(lcpNo < MAX_LCP_STORED);
-    if (fmgReplicaPtr.p->lcpStatus[lcpNo] == ZVALID &&
-	fmgReplicaPtr.p->maxGciStarted[lcpNo] < c_newest_restorable_gci)
+    if (fmgReplicaPtr.p->lcpStatus[lcpNo] == ZVALID)
     {
       jam();
       keepGci = fmgReplicaPtr.p->maxGciCompleted[lcpNo];
       oldestRestorableGci = fmgReplicaPtr.p->maxGciStarted[lcpNo];
-      ndbrequire(((int)oldestRestorableGci) >= 0);      
+      ndbassert(fmgReplicaPtr.p->maxGciStarted[lcpNo] <c_newest_restorable_gci);
       return;
     } else {
       jam();
Thread
bk commit into 5.1 tree (jonas:1.2581) BUG#32519jonas20 Nov