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()) {
|
if(getOwnNodeId() != getMasterNodeId()) {
|
||||||
jam();
|
jam();
|
||||||
sendBackupRef(senderRef, signal, senderData, BackupRef::IAmNotMaster);
|
sendBackupRef(senderRef, flags, signal, senderData, BackupRef::IAmNotMaster);
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
|
|
||||||
if (m_diskless)
|
if (m_diskless)
|
||||||
{
|
{
|
||||||
sendBackupRef(senderRef, signal, senderData,
|
sendBackupRef(senderRef, flags, signal, senderData,
|
||||||
BackupRef::CannotBackupDiskless);
|
BackupRef::CannotBackupDiskless);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dataLen32 != 0) {
|
if(dataLen32 != 0) {
|
||||||
jam();
|
jam();
|
||||||
sendBackupRef(senderRef, signal, senderData,
|
sendBackupRef(senderRef, flags, signal, senderData,
|
||||||
BackupRef::BackupDefinitionNotImplemented);
|
BackupRef::BackupDefinitionNotImplemented);
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
@ -887,7 +887,7 @@ Backup::execBACKUP_REQ(Signal* signal)
|
|||||||
c_backups.seize(ptr);
|
c_backups.seize(ptr);
|
||||||
if(ptr.i == RNIL) {
|
if(ptr.i == RNIL) {
|
||||||
jam();
|
jam();
|
||||||
sendBackupRef(senderRef, signal, senderData, BackupRef::OutOfBackupRecord);
|
sendBackupRef(senderRef, flags, signal, senderData, BackupRef::OutOfBackupRecord);
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
|
|
||||||
@ -936,23 +936,23 @@ void
|
|||||||
Backup::sendBackupRef(Signal* signal, BackupRecordPtr ptr, Uint32 errorCode)
|
Backup::sendBackupRef(Signal* signal, BackupRecordPtr ptr, Uint32 errorCode)
|
||||||
{
|
{
|
||||||
jam();
|
jam();
|
||||||
if (SEND_BACKUP_STARTED_FLAG(ptr.p->flags))
|
sendBackupRef(ptr.p->clientRef, ptr.p->flags, signal, ptr.p->clientData, errorCode);
|
||||||
{
|
|
||||||
sendBackupRef(ptr.p->clientRef, signal, ptr.p->clientData, errorCode);
|
|
||||||
}
|
|
||||||
cleanup(signal, ptr);
|
cleanup(signal, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Backup::sendBackupRef(BlockReference senderRef, Signal *signal,
|
Backup::sendBackupRef(BlockReference senderRef, Uint32 flags, Signal *signal,
|
||||||
Uint32 senderData, Uint32 errorCode)
|
Uint32 senderData, Uint32 errorCode)
|
||||||
{
|
{
|
||||||
jam();
|
jam();
|
||||||
BackupRef* ref = (BackupRef*)signal->getDataPtrSend();
|
if (SEND_BACKUP_STARTED_FLAG(flags))
|
||||||
ref->senderData = senderData;
|
{
|
||||||
ref->errorCode = errorCode;
|
BackupRef* ref = (BackupRef*)signal->getDataPtrSend();
|
||||||
ref->masterRef = numberToRef(BACKUP, getMasterNodeId());
|
ref->senderData = senderData;
|
||||||
sendSignal(senderRef, GSN_BACKUP_REF, signal, BackupRef::SignalLength, JBB);
|
ref->errorCode = errorCode;
|
||||||
|
ref->masterRef = numberToRef(BACKUP, getMasterNodeId());
|
||||||
|
sendSignal(senderRef, GSN_BACKUP_REF, signal, BackupRef::SignalLength, JBB);
|
||||||
|
}
|
||||||
|
|
||||||
if(errorCode != BackupRef::IAmNotMaster){
|
if(errorCode != BackupRef::IAmNotMaster){
|
||||||
signal->theData[0] = EventReport::BackupFailedToStart;
|
signal->theData[0] = EventReport::BackupFailedToStart;
|
||||||
@ -1204,12 +1204,12 @@ Backup::defineBackupReply(Signal* signal, BackupRecordPtr ptr, Uint32 nodeId)
|
|||||||
*/
|
*/
|
||||||
CRASH_INSERTION((10034));
|
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))
|
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,
|
sendSignal(ptr.p->clientRef, GSN_BACKUP_CONF, signal,
|
||||||
BackupConf::SignalLength, JBB);
|
BackupConf::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
@ -2094,18 +2094,18 @@ Backup::stopBackupReply(Signal* signal, BackupRecordPtr ptr, Uint32 nodeId)
|
|||||||
|
|
||||||
if(!ptr.p->checkError())
|
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))
|
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,
|
sendSignal(ptr.p->clientRef, GSN_BACKUP_COMPLETE_REP, signal,
|
||||||
BackupCompleteRep::SignalLength, JBB);
|
BackupCompleteRep::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
@ -2146,12 +2146,12 @@ Backup::masterAbort(Signal* signal, BackupRecordPtr ptr)
|
|||||||
return;
|
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))
|
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,
|
sendSignal(ptr.p->clientRef, GSN_BACKUP_ABORT_REP, signal,
|
||||||
BackupAbortRep::SignalLength, JBB);
|
BackupAbortRep::SignalLength, JBB);
|
||||||
}
|
}
|
||||||
@ -2286,7 +2286,13 @@ Backup::execDEFINE_BACKUP_REQ(Signal* signal)
|
|||||||
ptr.p->errorCode = 0;
|
ptr.p->errorCode = 0;
|
||||||
ptr.p->clientRef = req->clientRef;
|
ptr.p->clientRef = req->clientRef;
|
||||||
ptr.p->clientData = req->clientData;
|
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->masterRef = senderRef;
|
||||||
ptr.p->nodes = req->nodes;
|
ptr.p->nodes = req->nodes;
|
||||||
ptr.p->backupId = backupId;
|
ptr.p->backupId = backupId;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user