corrected prev fix for bug #13054
so that _only_ backup master replies to API
This commit is contained in:
parent
0634542458
commit
3979938c51
@ -859,20 +859,20 @@ Backup::execBACKUP_REQ(Signal* signal)
|
||||
|
||||
if(getOwnNodeId() != getMasterNodeId()) {
|
||||
jam();
|
||||
sendBackupRef(senderRef, signal, senderData, BackupRef::IAmNotMaster);
|
||||
sendBackupRef(senderRef, flags, signal, senderData, BackupRef::IAmNotMaster);
|
||||
return;
|
||||
}//if
|
||||
|
||||
if (m_diskless)
|
||||
{
|
||||
sendBackupRef(senderRef, signal, senderData,
|
||||
sendBackupRef(senderRef, flags, signal, senderData,
|
||||
BackupRef::CannotBackupDiskless);
|
||||
return;
|
||||
}
|
||||
|
||||
if(dataLen32 != 0) {
|
||||
jam();
|
||||
sendBackupRef(senderRef, signal, senderData,
|
||||
sendBackupRef(senderRef, flags, signal, senderData,
|
||||
BackupRef::BackupDefinitionNotImplemented);
|
||||
return;
|
||||
}//if
|
||||
@ -887,7 +887,7 @@ Backup::execBACKUP_REQ(Signal* signal)
|
||||
c_backups.seize(ptr);
|
||||
if(ptr.i == RNIL) {
|
||||
jam();
|
||||
sendBackupRef(senderRef, signal, senderData, BackupRef::OutOfBackupRecord);
|
||||
sendBackupRef(senderRef, flags, signal, senderData, BackupRef::OutOfBackupRecord);
|
||||
return;
|
||||
}//if
|
||||
|
||||
@ -936,23 +936,23 @@ void
|
||||
Backup::sendBackupRef(Signal* signal, BackupRecordPtr ptr, Uint32 errorCode)
|
||||
{
|
||||
jam();
|
||||
if (SEND_BACKUP_STARTED_FLAG(ptr.p->flags))
|
||||
{
|
||||
sendBackupRef(ptr.p->clientRef, signal, ptr.p->clientData, errorCode);
|
||||
}
|
||||
sendBackupRef(ptr.p->clientRef, ptr.p->flags, signal, ptr.p->clientData, errorCode);
|
||||
cleanup(signal, ptr);
|
||||
}
|
||||
|
||||
void
|
||||
Backup::sendBackupRef(BlockReference senderRef, Signal *signal,
|
||||
Backup::sendBackupRef(BlockReference senderRef, Uint32 flags, Signal *signal,
|
||||
Uint32 senderData, Uint32 errorCode)
|
||||
{
|
||||
jam();
|
||||
BackupRef* ref = (BackupRef*)signal->getDataPtrSend();
|
||||
ref->senderData = senderData;
|
||||
ref->errorCode = errorCode;
|
||||
ref->masterRef = numberToRef(BACKUP, getMasterNodeId());
|
||||
sendSignal(senderRef, GSN_BACKUP_REF, signal, BackupRef::SignalLength, JBB);
|
||||
if (SEND_BACKUP_STARTED_FLAG(flags))
|
||||
{
|
||||
BackupRef* ref = (BackupRef*)signal->getDataPtrSend();
|
||||
ref->senderData = senderData;
|
||||
ref->errorCode = errorCode;
|
||||
ref->masterRef = numberToRef(BACKUP, getMasterNodeId());
|
||||
sendSignal(senderRef, GSN_BACKUP_REF, signal, BackupRef::SignalLength, JBB);
|
||||
}
|
||||
|
||||
if(errorCode != BackupRef::IAmNotMaster){
|
||||
signal->theData[0] = EventReport::BackupFailedToStart;
|
||||
@ -1204,12 +1204,12 @@ Backup::defineBackupReply(Signal* signal, BackupRecordPtr ptr, Uint32 nodeId)
|
||||
*/
|
||||
CRASH_INSERTION((10034));
|
||||
|
||||
BackupConf * conf = (BackupConf*)signal->getDataPtrSend();
|
||||
conf->backupId = ptr.p->backupId;
|
||||
conf->senderData = ptr.p->clientData;
|
||||
conf->nodes = ptr.p->nodes;
|
||||
if (SEND_BACKUP_STARTED_FLAG(ptr.p->flags))
|
||||
{
|
||||
BackupConf * conf = (BackupConf*)signal->getDataPtrSend();
|
||||
conf->backupId = ptr.p->backupId;
|
||||
conf->senderData = ptr.p->clientData;
|
||||
conf->nodes = ptr.p->nodes;
|
||||
sendSignal(ptr.p->clientRef, GSN_BACKUP_CONF, signal,
|
||||
BackupConf::SignalLength, JBB);
|
||||
}
|
||||
@ -2094,18 +2094,18 @@ Backup::stopBackupReply(Signal* signal, BackupRecordPtr ptr, Uint32 nodeId)
|
||||
|
||||
if(!ptr.p->checkError())
|
||||
{
|
||||
BackupCompleteRep * rep = (BackupCompleteRep*)signal->getDataPtrSend();
|
||||
rep->backupId = ptr.p->backupId;
|
||||
rep->senderData = ptr.p->clientData;
|
||||
rep->startGCP = ptr.p->startGCP;
|
||||
rep->stopGCP = ptr.p->stopGCP;
|
||||
rep->noOfBytes = ptr.p->noOfBytes;
|
||||
rep->noOfRecords = ptr.p->noOfRecords;
|
||||
rep->noOfLogBytes = ptr.p->noOfLogBytes;
|
||||
rep->noOfLogRecords = ptr.p->noOfLogRecords;
|
||||
rep->nodes = ptr.p->nodes;
|
||||
if (SEND_BACKUP_COMPLETED_FLAG(ptr.p->flags))
|
||||
{
|
||||
BackupCompleteRep * rep = (BackupCompleteRep*)signal->getDataPtrSend();
|
||||
rep->backupId = ptr.p->backupId;
|
||||
rep->senderData = ptr.p->clientData;
|
||||
rep->startGCP = ptr.p->startGCP;
|
||||
rep->stopGCP = ptr.p->stopGCP;
|
||||
rep->noOfBytes = ptr.p->noOfBytes;
|
||||
rep->noOfRecords = ptr.p->noOfRecords;
|
||||
rep->noOfLogBytes = ptr.p->noOfLogBytes;
|
||||
rep->noOfLogRecords = ptr.p->noOfLogRecords;
|
||||
rep->nodes = ptr.p->nodes;
|
||||
sendSignal(ptr.p->clientRef, GSN_BACKUP_COMPLETE_REP, signal,
|
||||
BackupCompleteRep::SignalLength, JBB);
|
||||
}
|
||||
@ -2146,12 +2146,12 @@ Backup::masterAbort(Signal* signal, BackupRecordPtr ptr)
|
||||
return;
|
||||
}
|
||||
|
||||
BackupAbortRep* rep = (BackupAbortRep*)signal->getDataPtrSend();
|
||||
rep->backupId = ptr.p->backupId;
|
||||
rep->senderData = ptr.p->clientData;
|
||||
rep->reason = ptr.p->errorCode;
|
||||
if (SEND_BACKUP_COMPLETED_FLAG(ptr.p->flags))
|
||||
{
|
||||
BackupAbortRep* rep = (BackupAbortRep*)signal->getDataPtrSend();
|
||||
rep->backupId = ptr.p->backupId;
|
||||
rep->senderData = ptr.p->clientData;
|
||||
rep->reason = ptr.p->errorCode;
|
||||
sendSignal(ptr.p->clientRef, GSN_BACKUP_ABORT_REP, signal,
|
||||
BackupAbortRep::SignalLength, JBB);
|
||||
}
|
||||
@ -2286,7 +2286,13 @@ Backup::execDEFINE_BACKUP_REQ(Signal* signal)
|
||||
ptr.p->errorCode = 0;
|
||||
ptr.p->clientRef = req->clientRef;
|
||||
ptr.p->clientData = req->clientData;
|
||||
ptr.p->flags = req->flags;
|
||||
if(senderRef == reference())
|
||||
ptr.p->flags = req->flags;
|
||||
else
|
||||
ptr.p->flags = req->flags & ~((Uint32)0x3); /* remove waitCompleted flags
|
||||
* as non master should never
|
||||
* reply
|
||||
*/
|
||||
ptr.p->masterRef = senderRef;
|
||||
ptr.p->nodes = req->nodes;
|
||||
ptr.p->backupId = backupId;
|
||||
|
Loading…
x
Reference in New Issue
Block a user