Commit f8162708 authored by unknown's avatar unknown

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
parents 9607b202 d2a491b5
...@@ -3932,19 +3932,37 @@ Backup::checkFile(Signal* signal, BackupFilePtr filePtr) ...@@ -3932,19 +3932,37 @@ Backup::checkFile(Signal* signal, BackupFilePtr filePtr)
FsAppendReq::SignalLength, JBA); FsAppendReq::SignalLength, JBA);
return; return;
}//if }//if
filePtr.p->fileRunning = 0; #ifdef DEBUG_ABORT
filePtr.p->fileClosing = 1; Uint32 running= filePtr.p->fileRunning;
Uint32 closing= filePtr.p->fileClosing;
FsCloseReq * req = (FsCloseReq *)signal->getDataPtrSend(); #endif
req->filePointer = filePtr.p->filePointer;
req->userPointer = filePtr.i; if(!filePtr.p->fileClosing)
req->userReference = reference(); {
req->fileFlag = 0; 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 #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 #endif
sendSignal(NDBFS_REF, GSN_FSCLOSEREQ, signal, FsCloseReq::SignalLength, JBA);
}
} }
...@@ -4195,9 +4213,7 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr) ...@@ -4195,9 +4213,7 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr)
jam(); jam();
continue; continue;
}//if }//if
filePtr.p->fileClosing = 1;
if(filePtr.p->fileRunning == 1){ if(filePtr.p->fileRunning == 1){
jam(); jam();
#ifdef DEBUG_ABORT #ifdef DEBUG_ABORT
...@@ -4206,7 +4222,10 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr) ...@@ -4206,7 +4222,10 @@ Backup::closeFiles(Signal* sig, BackupRecordPtr ptr)
filePtr.p->operation.dataBuffer.eof(); filePtr.p->operation.dataBuffer.eof();
} else { } else {
jam(); 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(); FsCloseReq * req = (FsCloseReq *)sig->getDataPtrSend();
req->filePointer = filePtr.p->filePointer; req->filePointer = filePtr.p->filePointer;
req->userPointer = filePtr.i; req->userPointer = filePtr.i;
...@@ -4668,7 +4687,6 @@ Backup::execLCP_PREPARE_REQ(Signal* signal) ...@@ -4668,7 +4687,6 @@ Backup::execLCP_PREPARE_REQ(Signal* signal)
jam(); jam();
BackupFilePtr filePtr; BackupFilePtr filePtr;
c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr); c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr);
filePtr.p->fileClosing = 1;
filePtr.p->operation.dataBuffer.eof(); filePtr.p->operation.dataBuffer.eof();
} }
...@@ -4760,7 +4778,6 @@ Backup::execEND_LCPREQ(Signal* signal) ...@@ -4760,7 +4778,6 @@ Backup::execEND_LCPREQ(Signal* signal)
BackupFilePtr filePtr; BackupFilePtr filePtr;
c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr); c_backupFilePool.getPtr(filePtr, ptr.p->dataFilePtr);
filePtr.p->fileClosing = 1;
filePtr.p->operation.dataBuffer.eof(); filePtr.p->operation.dataBuffer.eof();
return; return;
} }
......
...@@ -228,6 +228,7 @@ AsyncFile::run() ...@@ -228,6 +228,7 @@ AsyncFile::run()
endReq(); endReq();
return; return;
default: default:
DEBUG(ndbout_c("Invalid Request"));
abort(); abort();
break; break;
}//switch }//switch
...@@ -676,6 +677,7 @@ AsyncFile::extendfile(Request* request) { ...@@ -676,6 +677,7 @@ AsyncFile::extendfile(Request* request) {
return 0; return 0;
#else #else
request = request; request = request;
DEBUG(ndbout_c("no pwrite"));
abort(); abort();
return -1; return -1;
#endif #endif
...@@ -792,6 +794,7 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset, ...@@ -792,6 +794,7 @@ AsyncFile::writeBuffer(const char * buf, size_t size, off_t offset,
bytes_written = return_value; bytes_written = return_value;
if(bytes_written == 0){ if(bytes_written == 0){
DEBUG(ndbout_c("no bytes written"));
abort(); abort();
} }
...@@ -830,8 +833,10 @@ AsyncFile::closeReq(Request * request) ...@@ -830,8 +833,10 @@ AsyncFile::closeReq(Request * request)
#else #else
if (-1 == ::close(theFd)) { if (-1 == ::close(theFd)) {
#ifndef DBUG_OFF #ifndef DBUG_OFF
if (theFd == -1) if (theFd == -1) {
DEBUG(ndbout_c("close on fd = -1"));
abort(); abort();
}
#endif #endif
request->error = errno; request->error = errno;
} }
...@@ -899,6 +904,7 @@ AsyncFile::appendReq(Request * request){ ...@@ -899,6 +904,7 @@ AsyncFile::appendReq(Request * request){
return; return;
} }
if(n == 0){ if(n == 0){
DEBUG(ndbout_c("append with n=0"));
abort(); abort();
} }
size -= n; size -= n;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment