diff options
author | unknown <joreland@mysql.com> | 2005-06-08 16:48:57 +0200 |
---|---|---|
committer | unknown <joreland@mysql.com> | 2005-06-08 16:48:57 +0200 |
commit | a7917b1e8aa10bf57c97443273771929dbadfd1d (patch) | |
tree | 42177a1f3346e87538ba6ad54bef296929cb7d21 /ndb/src | |
parent | d4e921d639f102fa697d88529be40442e44b60c6 (diff) | |
download | mariadb-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.cpp | 25 |
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 |