Commit 00d95a8b authored by stewart@mysql.com's avatar stewart@mysql.com

BUG#15425 Small window for NF during backup failing without error

parent 12d1bf12
...@@ -786,13 +786,17 @@ Backup::checkNodeFail(Signal* signal, ...@@ -786,13 +786,17 @@ Backup::checkNodeFail(Signal* signal,
pos= &ref->nodeId - signal->getDataPtr(); pos= &ref->nodeId - signal->getDataPtr();
break; break;
} }
case GSN_WAIT_GCP_REQ:
case GSN_DROP_TRIG_REQ:
case GSN_CREATE_TRIG_REQ: case GSN_CREATE_TRIG_REQ:
case GSN_ALTER_TRIG_REQ: case GSN_ALTER_TRIG_REQ:
case GSN_WAIT_GCP_REQ: ptr.p->setErrorCode(AbortBackupOrd::BackupFailureDueToNodeFail);
return;
case GSN_UTIL_SEQUENCE_REQ: case GSN_UTIL_SEQUENCE_REQ:
case GSN_UTIL_LOCK_REQ: case GSN_UTIL_LOCK_REQ:
case GSN_DROP_TRIG_REQ:
return; return;
default:
ndbrequire(false);
} }
for(Uint32 i = 0; (i = mask.find(i+1)) != NdbNodeBitmask::NotFound; ) for(Uint32 i = 0; (i = mask.find(i+1)) != NdbNodeBitmask::NotFound; )
...@@ -1803,7 +1807,7 @@ Backup::execBACKUP_FRAGMENT_CONF(Signal* signal) ...@@ -1803,7 +1807,7 @@ Backup::execBACKUP_FRAGMENT_CONF(Signal* signal)
const Uint32 nodeId = refToNode(signal->senderBlockRef()); const Uint32 nodeId = refToNode(signal->senderBlockRef());
const Uint32 noOfBytes = conf->noOfBytes; const Uint32 noOfBytes = conf->noOfBytes;
const Uint32 noOfRecords = conf->noOfRecords; const Uint32 noOfRecords = conf->noOfRecords;
BackupRecordPtr ptr; BackupRecordPtr ptr;
c_backupPool.getPtr(ptr, ptrI); c_backupPool.getPtr(ptr, ptrI);
...@@ -1880,7 +1884,7 @@ Backup::execBACKUP_FRAGMENT_REF(Signal* signal) ...@@ -1880,7 +1884,7 @@ Backup::execBACKUP_FRAGMENT_REF(Signal* signal)
} }
} }
} }
ndbrequire(false); goto err;
done: done:
ptr.p->masterData.sendCounter--; ptr.p->masterData.sendCounter--;
...@@ -1892,7 +1896,8 @@ done: ...@@ -1892,7 +1896,8 @@ done:
masterAbort(signal, ptr); masterAbort(signal, ptr);
return; return;
}//if }//if
err:
AbortBackupOrd *ord = (AbortBackupOrd*)signal->getDataPtrSend(); AbortBackupOrd *ord = (AbortBackupOrd*)signal->getDataPtrSend();
ord->backupId = ptr.p->backupId; ord->backupId = ptr.p->backupId;
ord->backupPtr = ptr.i; ord->backupPtr = ptr.i;
......
...@@ -11694,7 +11694,6 @@ Dbdict::alterTrigger_toDropLocal(Signal* signal, OpAlterTriggerPtr opPtr) ...@@ -11694,7 +11694,6 @@ Dbdict::alterTrigger_toDropLocal(Signal* signal, OpAlterTriggerPtr opPtr)
// broken trigger allowed if force // broken trigger allowed if force
if (! (triggerPtr.p->triggerLocal & TriggerRecord::TL_CREATED_LQH)) { if (! (triggerPtr.p->triggerLocal & TriggerRecord::TL_CREATED_LQH)) {
jam(); jam();
ndbrequire(opPtr.p->m_requestFlag & RequestFlag::RF_FORCE);
alterTrigger_sendReply(signal, opPtr, false); alterTrigger_sendReply(signal, opPtr, false);
return; return;
} }
......
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