mirror of
https://github.com/MariaDB/server.git
synced 2025-05-28 13:01:41 +03:00
Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into perch.ndb.mysql.com:/home/jonas/src/mysql-5.0
This commit is contained in:
commit
ca04daab27
@ -88,12 +88,13 @@ Backup::execREAD_CONFIG_REQ(Signal* signal)
|
||||
|
||||
c_nodePool.setSize(MAX_NDB_NODES);
|
||||
|
||||
Uint32 noBackups = 0, noTables = 0, noAttribs = 0;
|
||||
Uint32 noBackups = 0, noTables = 0, noAttribs = 0, noFrags = 0;
|
||||
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_DISCLESS, &m_diskless));
|
||||
ndb_mgm_get_int_parameter(p, CFG_DB_PARALLEL_BACKUPS, &noBackups);
|
||||
// ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_TABLES, &noTables));
|
||||
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DICT_TABLE, &noTables));
|
||||
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DB_NO_ATTRIBUTES, &noAttribs));
|
||||
ndbrequire(!ndb_mgm_get_int_parameter(p, CFG_DIH_FRAG_CONNECT, &noFrags));
|
||||
|
||||
noAttribs++; //RT 527 bug fix
|
||||
|
||||
@ -102,9 +103,7 @@ Backup::execREAD_CONFIG_REQ(Signal* signal)
|
||||
c_tablePool.setSize(noBackups * noTables);
|
||||
c_attributePool.setSize(noBackups * noAttribs);
|
||||
c_triggerPool.setSize(noBackups * 3 * noTables);
|
||||
|
||||
// 2 = no of replicas
|
||||
c_fragmentPool.setSize(noBackups * 2 * NO_OF_FRAG_PER_NODE * noTables);
|
||||
c_fragmentPool.setSize(noBackups * noFrags);
|
||||
|
||||
Uint32 szMem = 0;
|
||||
ndb_mgm_get_int_parameter(p, CFG_DB_BACKUP_MEM, &szMem);
|
||||
|
@ -1407,7 +1407,7 @@ private:
|
||||
const UintR scanParallel,
|
||||
const UintR noOprecPerFrag);
|
||||
void initScanfragrec(Signal* signal);
|
||||
void releaseScanResources(ScanRecordPtr);
|
||||
void releaseScanResources(ScanRecordPtr, bool not_started = false);
|
||||
ScanRecordPtr seizeScanrec(Signal* signal);
|
||||
void sendScanFragReq(Signal*, ScanRecord*, ScanFragRec*);
|
||||
void sendScanTabConf(Signal* signal, ScanRecordPtr);
|
||||
@ -1554,7 +1554,8 @@ private:
|
||||
void signalErrorRefuseLab(Signal* signal);
|
||||
void abort080Lab(Signal* signal);
|
||||
void packKeyData000Lab(Signal* signal, BlockReference TBRef, Uint32 len);
|
||||
void abortScanLab(Signal* signal, ScanRecordPtr, Uint32 errCode);
|
||||
void abortScanLab(Signal* signal, ScanRecordPtr, Uint32 errCode,
|
||||
bool not_started = false);
|
||||
void sendAbortedAfterTimeout(Signal* signal, int Tcheck);
|
||||
void abort010Lab(Signal* signal);
|
||||
void abort015Lab(Signal* signal);
|
||||
|
@ -8839,17 +8839,17 @@ void Dbtc::scanAttrinfoLab(Signal* signal, UintR Tlen)
|
||||
|
||||
scanAttrinfo_attrbuf_error:
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR);
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR, true);
|
||||
return;
|
||||
|
||||
scanAttrinfo_attrbuf2_error:
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR);
|
||||
abortScanLab(signal, scanptr, ZGET_ATTRBUF_ERROR, true);
|
||||
return;
|
||||
|
||||
scanAttrinfo_len_error:
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZLENGTH_ERROR);
|
||||
abortScanLab(signal, scanptr, ZLENGTH_ERROR, true);
|
||||
return;
|
||||
}//Dbtc::scanAttrinfoLab()
|
||||
|
||||
@ -8865,7 +8865,8 @@ void Dbtc::diFcountReqLab(Signal* signal, ScanRecordPtr scanptr)
|
||||
;
|
||||
} else {
|
||||
abortScanLab(signal, scanptr,
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
|
||||
true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -8932,13 +8933,13 @@ void Dbtc::execDI_FCOUNTCONF(Signal* signal)
|
||||
ndbrequire(scanptr.p->scanState == ScanRecord::WAIT_FRAGMENT_COUNT);
|
||||
if (apiConnectptr.p->apiFailState == ZTRUE) {
|
||||
jam();
|
||||
releaseScanResources(scanptr);
|
||||
releaseScanResources(scanptr, true);
|
||||
handleApiFailState(signal, apiConnectptr.i);
|
||||
return;
|
||||
}//if
|
||||
if (tfragCount == 0) {
|
||||
jam();
|
||||
abortScanLab(signal, scanptr, ZNO_FRAGMENT_ERROR);
|
||||
abortScanLab(signal, scanptr, ZNO_FRAGMENT_ERROR, true);
|
||||
return;
|
||||
}//if
|
||||
|
||||
@ -8952,7 +8953,8 @@ void Dbtc::execDI_FCOUNTCONF(Signal* signal)
|
||||
;
|
||||
} else {
|
||||
abortScanLab(signal, scanptr,
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion));
|
||||
tabPtr.p->getErrorCode(scanptr.p->scanSchemaVersion),
|
||||
true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -9016,20 +9018,22 @@ void Dbtc::execDI_FCOUNTREF(Signal* signal)
|
||||
ndbrequire(scanptr.p->scanState == ScanRecord::WAIT_FRAGMENT_COUNT);
|
||||
if (apiConnectptr.p->apiFailState == ZTRUE) {
|
||||
jam();
|
||||
releaseScanResources(scanptr);
|
||||
releaseScanResources(scanptr, true);
|
||||
handleApiFailState(signal, apiConnectptr.i);
|
||||
return;
|
||||
}//if
|
||||
abortScanLab(signal, scanptr, errCode);
|
||||
abortScanLab(signal, scanptr, errCode, true);
|
||||
}//Dbtc::execDI_FCOUNTREF()
|
||||
|
||||
void Dbtc::abortScanLab(Signal* signal, ScanRecordPtr scanptr, Uint32 errCode)
|
||||
void Dbtc::abortScanLab(Signal* signal, ScanRecordPtr scanptr, Uint32 errCode,
|
||||
bool not_started)
|
||||
{
|
||||
scanTabRefLab(signal, errCode);
|
||||
releaseScanResources(scanptr);
|
||||
releaseScanResources(scanptr, not_started);
|
||||
}//Dbtc::abortScanLab()
|
||||
|
||||
void Dbtc::releaseScanResources(ScanRecordPtr scanPtr)
|
||||
void Dbtc::releaseScanResources(ScanRecordPtr scanPtr,
|
||||
bool not_started)
|
||||
{
|
||||
if (apiConnectptr.p->cachePtr != RNIL) {
|
||||
cachePtr.i = apiConnectptr.p->cachePtr;
|
||||
@ -9041,6 +9045,15 @@ void Dbtc::releaseScanResources(ScanRecordPtr scanPtr)
|
||||
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
|
||||
releaseTcCon();
|
||||
|
||||
if (not_started)
|
||||
{
|
||||
jam();
|
||||
ScanFragList run(c_scan_frag_pool, scanPtr.p->m_running_scan_frags);
|
||||
ScanFragList queue(c_scan_frag_pool, scanPtr.p->m_queued_scan_frags);
|
||||
run.release();
|
||||
queue.release();
|
||||
}
|
||||
|
||||
ndbrequire(scanPtr.p->m_running_scan_frags.isEmpty());
|
||||
ndbrequire(scanPtr.p->m_queued_scan_frags.isEmpty());
|
||||
ndbrequire(scanPtr.p->m_delivered_scan_frags.isEmpty());
|
||||
|
@ -1354,6 +1354,6 @@ NdbTransaction::sendTC_COMMIT_ACK(NdbApiSignal * aSignal,
|
||||
Uint32 * dataPtr = aSignal->getDataPtrSend();
|
||||
dataPtr[0] = transId1;
|
||||
dataPtr[1] = transId2;
|
||||
|
||||
tp->sendSignal(aSignal, refToNode(aTCRef));
|
||||
|
||||
tp->sendSignalUnCond(aSignal, refToNode(aTCRef));
|
||||
}
|
||||
|
@ -813,7 +813,7 @@ TransporterFacade::sendSignal(NdbApiSignal * aSignal, NodeId aNode){
|
||||
LinearSectionPtr ptr[3];
|
||||
signalLogger.sendSignal(* aSignal,
|
||||
1,
|
||||
aSignal->getDataPtr(),
|
||||
tDataPtr,
|
||||
aNode, ptr, 0);
|
||||
signalLogger.flushSignalLog();
|
||||
aSignal->theSendersBlockRef = tmp;
|
||||
@ -840,6 +840,7 @@ TransporterFacade::sendSignal(NdbApiSignal * aSignal, NodeId aNode){
|
||||
|
||||
int
|
||||
TransporterFacade::sendSignalUnCond(NdbApiSignal * aSignal, NodeId aNode){
|
||||
Uint32* tDataPtr = aSignal->getDataPtrSend();
|
||||
#ifdef API_TRACE
|
||||
if(setSignalLog() && TRACE_GSN(aSignal->theVerId_signalNumber)){
|
||||
Uint32 tmp = aSignal->theSendersBlockRef;
|
||||
@ -847,7 +848,7 @@ TransporterFacade::sendSignalUnCond(NdbApiSignal * aSignal, NodeId aNode){
|
||||
LinearSectionPtr ptr[3];
|
||||
signalLogger.sendSignal(* aSignal,
|
||||
0,
|
||||
aSignal->getDataPtr(),
|
||||
tDataPtr,
|
||||
aNode, ptr, 0);
|
||||
signalLogger.flushSignalLog();
|
||||
aSignal->theSendersBlockRef = tmp;
|
||||
@ -858,7 +859,7 @@ TransporterFacade::sendSignalUnCond(NdbApiSignal * aSignal, NodeId aNode){
|
||||
(aSignal->theReceiversBlockNumber != 0));
|
||||
SendStatus ss = theTransporterRegistry->prepareSend(aSignal,
|
||||
0,
|
||||
aSignal->getDataPtr(),
|
||||
tDataPtr,
|
||||
aNode,
|
||||
0);
|
||||
|
||||
|
@ -130,7 +130,8 @@ private:
|
||||
friend class GrepSS;
|
||||
friend class Ndb;
|
||||
friend class Ndb_cluster_connection_impl;
|
||||
|
||||
friend class NdbTransaction;
|
||||
|
||||
int sendSignalUnCond(NdbApiSignal *, NodeId nodeId);
|
||||
|
||||
bool isConnected(NodeId aNodeId);
|
||||
|
Loading…
x
Reference in New Issue
Block a user