summaryrefslogtreecommitdiff
path: root/ndb/src
diff options
context:
space:
mode:
authorunknown <joreland@mysql.com>2005-06-08 16:48:57 +0200
committerunknown <joreland@mysql.com>2005-06-08 16:48:57 +0200
commita7917b1e8aa10bf57c97443273771929dbadfd1d (patch)
tree42177a1f3346e87538ba6ad54bef296929cb7d21 /ndb/src
parentd4e921d639f102fa697d88529be40442e44b60c6 (diff)
downloadmariadb-git-a7917b1e8aa10bf57c97443273771929dbadfd1d.tar.gz
bug#11166 - ndb
Fix potential inconsistency when running ndb_restore due to faulty parsing of backup log wrt inserts ndb/src/kernel/blocks/backup/Backup.cpp: Make sure that entire stopGCP is in log ndb/tools/restore/Restore.cpp: Notice: this will not group and commit the deltas listed below into a ChangeSet, because there are no ChangeSet comments. Click [Checkin] again to check in only the commented deltas, or type Control-l to go back and provide ChangeSet comments. ndb/tools/restore/Restore.hpp: Keep track of last gci to next iteration ndb/tools/restore/consumer_restore.cpp: Handle insert in log Only allow certain errors
Diffstat (limited to 'ndb/src')
-rw-r--r--ndb/src/kernel/blocks/backup/Backup.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/ndb/src/kernel/blocks/backup/Backup.cpp b/ndb/src/kernel/blocks/backup/Backup.cpp
index 3ef73beb8d2..b0ce5c390cb 100644
--- a/ndb/src/kernel/blocks/backup/Backup.cpp
+++ b/ndb/src/kernel/blocks/backup/Backup.cpp
@@ -1676,13 +1676,30 @@ Backup::execWAIT_GCP_CONF(Signal* signal){
ptr.p->masterData.sendCounter= 0;
ptr.p->masterData.gsn = GSN_BACKUP_FRAGMENT_REQ;
nextFragment(signal, ptr);
+ return;
} else {
jam();
- CRASH_INSERTION((10009));
- ptr.p->stopGCP = gcp;
- sendDropTrig(signal, ptr); // regular dropping of triggers
- }//if
+ if(gcp >= ptr.p->startGCP + 3)
+ {
+ CRASH_INSERTION((10009));
+ ptr.p->stopGCP = gcp;
+ sendDropTrig(signal, ptr); // regular dropping of triggers
+ return;
+ }//if
+
+ /**
+ * Make sure that we got entire stopGCP
+ */
+ WaitGCPReq * req = (WaitGCPReq*)signal->getDataPtrSend();
+ req->senderRef = reference();
+ req->senderData = ptr.i;
+ req->requestType = WaitGCPReq::CompleteForceStart;
+ sendSignal(DBDIH_REF, GSN_WAIT_GCP_REQ, signal,
+ WaitGCPReq::SignalLength,JBB);
+ return;
+ }
}
+
/*****************************************************************************
*
* Master functionallity - Backup fragment