ndb - replication

Make sure that SUB_GCP_COMPLETE_ACK is sent uncond, failure to do so can lead to problems...


storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp:
  retry on O_DIRECT
storage/ndb/src/ndbapi/TransporterFacade.cpp:
  Make sure that SUB_GCP_COMPLETE_ACK is sent uncond
This commit is contained in:
unknown 2006-04-18 15:21:39 +02:00
parent 32b71c76fc
commit e9e8b0bcbb
2 changed files with 10 additions and 3 deletions

View file

@ -385,16 +385,23 @@ void AsyncFile::openReq(Request* request)
}
new_flags |= O_CREAT;
}
no_odirect:
if (-1 == (theFd = ::open(theFileName.c_str(), new_flags, mode)))
{
PRINT_ERRORANDFLAGS(new_flags);
if ((errno == ENOENT ) && (new_flags & O_CREAT))
if ((errno == ENOENT) && (new_flags & O_CREAT))
{
createDirectories();
if (-1 == (theFd = ::open(theFileName.c_str(), new_flags, mode)))
{
#ifdef O_DIRECT
if (new_flags & O_DIRECT)
{
new_flags &= ~O_DIRECT;
goto no_odirect;
}
#endif
PRINT_ERRORANDFLAGS(new_flags);
request->error = errno;
return;

View file

@ -343,7 +343,7 @@ execute(void * callbackObj, SignalHeader * const header,
Uint32 aNodeId= refToNode(ref);
tSignal.theReceiversBlockNumber= refToBlock(ref);
tSignal.theVerId_signalNumber= GSN_SUB_GCP_COMPLETE_ACK;
theFacade->sendSignal(&tSignal, aNodeId);
theFacade->sendSignalUnCond(&tSignal, aNodeId);
}
break;
}