summaryrefslogtreecommitdiff
path: root/storage/ndb/src/kernel/blocks/backup/Backup.cpp
diff options
context:
space:
mode:
authorunknown <stewart@willster.(none)>2006-06-29 22:36:27 +1000
committerunknown <stewart@willster.(none)>2006-06-29 22:36:27 +1000
commitf8162708b0b5cd89c930818ed6f4cc954fc55b2d (patch)
treecce74c0bbaf7e71048413468dbd5c1407f602eb3 /storage/ndb/src/kernel/blocks/backup/Backup.cpp
parent9607b202c756bbd305515c1c422fd9e1ad73b4f6 (diff)
parentd2a491b57c792cf04d8c35cf9f2d5204b806b5ef (diff)
downloadmariadb-git-f8162708b0b5cd89c930818ed6f4cc954fc55b2d.tar.gz
Merge mysql.com:/home/stewart/Documents/MySQL/5.1/bug17928
into mysql.com:/home/stewart/Documents/MySQL/5.1/ndb storage/ndb/src/kernel/blocks/backup/Backup.cpp: Auto merged
Diffstat (limited to 'storage/ndb/src/kernel/blocks/backup/Backup.cpp')
-rw-r--r--storage/ndb/src/kernel/blocks/backup/Backup.cpp51
1 files changed, 34 insertions, 17 deletions
diff --git a/storage/ndb/src/kernel/blocks/backup/Backup.cpp b/storage/ndb/src/kernel/blocks/backup/Backup.cpp
index 41f140ab5ae..2e8d8b548ce 100644
--- a/storage/ndb/src/kernel/blocks/backup/Backup.cpp
+++ b/storage/ndb/src/kernel/blocks/backup/Backup.cpp
@@ -3932,19 +3932,37 @@ Backup::checkFile(Signal* signal, BackupFilePtr filePtr)
FsAppendReq::SignalLength, JBA);
return;
}//if
-
- filePtr.p->fileRunning = 0;
- filePtr.p->fileClosing = 1;
-
- FsCloseReq * req = (FsCloseReq *)signal->getDataPtrSend();
- req->filePointer = filePtr.p->filePointer;
- req->userPointer = filePtr.i;
- req->userReference = reference();
- req->fileFlag = 0;
+
+#ifdef DEBUG_ABORT
+ Uint32 running= filePtr.p->fileRunning;
+ Uint32 closing= filePtr.p->fileClosing;
+#endif
+
+ if(!filePtr.p->fileClosing)
+ {
+ filePtr.p->fileRunning = 0;
+ filePtr.p->fileClosing = 1;
+
+ FsCloseReq * req = (FsCloseReq *)signal->getDataPtrSend();
+ req->filePointer = filePtr.p->filePointer;
+ req->userPointer = filePtr.i;
+ req->userReference = reference();
+ req->fileFlag = 0;
+#ifdef DEBUG_ABORT
+ ndbout_c("***** a FSCLOSEREQ filePtr.i = %u run=%d cl=%d", filePtr.i,
+ running, closing);
+#endif
+ sendSignal(NDBFS_REF, GSN_FSCLOSEREQ, signal, FsCloseReq::SignalLength, JBA);
+ }
+ else
+ {
#ifdef DEBUG_ABORT
- ndbout_c("***** a FSCLOSEREQ filePtr.i = %u", filePtr.i);
+ ndbout_c("***** a NOT SENDING FSCLOSEREQ filePtr.i = %u run=%d cl=%d",
+ filePtr.i,
+ running, closing);
#endif
- sendSignal(NDBFS_REF, GSN_FSCLOSEREQ, signal, FsCloseReq::SignalLength, JBA);
+
+ }
}
@@ -4195,9 +4213,7 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr)
jam();
continue;
}//if
-
- filePtr.p->fileClosing = 1;
-
+
if(filePtr.p->fileRunning == 1){
jam();
#ifdef DEBUG_ABORT
@@ -4206,7 +4222,10 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr)
filePtr.p->operation.dataBuffer.eof();
} else {
jam();
-
+ filePtr.p->fileClosing = 1;
+ filePtr.p->operation.dataBuffer.eof();
+ checkFile(sig, filePtr); // make sure we write everything before closing
+
FsCloseReq * req = (FsCloseReq *)sig->getDataPtrSend();
req->filePointer = filePtr.p->filePointer;
req->userPointer = filePtr.i;
@@ -4668,7 +4687,6 @@ Backup::execLCP_PREPARE_REQ(Signal* signal)
jam();
BackupFilePtr filePtr;
c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr);
- filePtr.p->fileClosing = 1;
filePtr.p->operation.dataBuffer.eof();
}
@@ -4760,7 +4778,6 @@ Backup::execEND_LCPREQ(Signal* signal)
BackupFilePtr filePtr;
c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr);
- filePtr.p->fileClosing = 1;
filePtr.p->operation.dataBuffer.eof();
return;
}