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#32519 | jonas | 20 Nov |