mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Added some more options to TC timers, such as:
1) explicit start/stop timer (instead of perodical reports) 2) scan & range scan reporting
This commit is contained in:
@ -95,6 +95,9 @@ public:
|
|||||||
TcDumpAllApiConnectRec = 2506,
|
TcDumpAllApiConnectRec = 2506,
|
||||||
TcSetTransactionTimeout = 2507,
|
TcSetTransactionTimeout = 2507,
|
||||||
TcSetApplTransactionTimeout = 2508,
|
TcSetApplTransactionTimeout = 2508,
|
||||||
|
StartTcTimer = 2509,
|
||||||
|
StopTcTimer = 2510,
|
||||||
|
StartPeriodicTcTimer = 2511,
|
||||||
CmvmiDumpConnections = 2600,
|
CmvmiDumpConnections = 2600,
|
||||||
CmvmiDumpLongSignalMemory = 2601,
|
CmvmiDumpLongSignalMemory = 2601,
|
||||||
CmvmiSetRestartOnErrorInsert = 2602,
|
CmvmiSetRestartOnErrorInsert = 2602,
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include <signaldata/TrigAttrInfo.hpp>
|
#include <signaldata/TrigAttrInfo.hpp>
|
||||||
#include <signaldata/TcIndx.hpp>
|
#include <signaldata/TcIndx.hpp>
|
||||||
#include <signaldata/TransIdAI.hpp>
|
#include <signaldata/TransIdAI.hpp>
|
||||||
|
#include <signaldata/EventReport.hpp>
|
||||||
#include <trigger_definitions.h>
|
#include <trigger_definitions.h>
|
||||||
#include <SignalCounter.hpp>
|
#include <SignalCounter.hpp>
|
||||||
|
|
||||||
@ -1671,16 +1672,40 @@ private:
|
|||||||
|
|
||||||
ApiConnectRecordPtr tmpApiConnectptr;
|
ApiConnectRecordPtr tmpApiConnectptr;
|
||||||
UintR tcheckGcpId;
|
UintR tcheckGcpId;
|
||||||
UintR cconcurrentOp;
|
|
||||||
|
|
||||||
UintR cattrinfoCount;
|
struct TransCounters {
|
||||||
UintR ctransCount;
|
enum { Off, Timer, Started } c_trans_status;
|
||||||
UintR ccommitCount;
|
UintR cattrinfoCount;
|
||||||
UintR creadCount;
|
UintR ctransCount;
|
||||||
|
UintR ccommitCount;
|
||||||
UintR csimpleReadCount;
|
UintR creadCount;
|
||||||
UintR cwriteCount;
|
UintR csimpleReadCount;
|
||||||
UintR cabortCount;
|
UintR cwriteCount;
|
||||||
|
UintR cabortCount;
|
||||||
|
UintR cconcurrentOp;
|
||||||
|
Uint32 c_scan_count;
|
||||||
|
Uint32 c_range_scan_count;
|
||||||
|
void reset () {
|
||||||
|
cattrinfoCount = ctransCount = ccommitCount = creadCount =
|
||||||
|
csimpleReadCount = cwriteCount = cabortCount =
|
||||||
|
c_scan_count = c_range_scan_count = 0;
|
||||||
|
}
|
||||||
|
Uint32 report(Signal* signal){
|
||||||
|
signal->theData[0] = EventReport::TransReportCounters;
|
||||||
|
signal->theData[1] = ctransCount;
|
||||||
|
signal->theData[2] = ccommitCount;
|
||||||
|
signal->theData[3] = creadCount;
|
||||||
|
signal->theData[4] = csimpleReadCount;
|
||||||
|
signal->theData[5] = cwriteCount;
|
||||||
|
signal->theData[6] = cattrinfoCount;
|
||||||
|
signal->theData[7] = cconcurrentOp;
|
||||||
|
signal->theData[8] = cabortCount;
|
||||||
|
signal->theData[9] = c_scan_count;
|
||||||
|
signal->theData[10] = c_range_scan_count;
|
||||||
|
return 11;
|
||||||
|
}
|
||||||
|
} c_counters;
|
||||||
|
|
||||||
Uint16 cownNodeid;
|
Uint16 cownNodeid;
|
||||||
Uint16 terrorCode;
|
Uint16 terrorCode;
|
||||||
|
|
||||||
|
@ -221,28 +221,14 @@ void Dbtc::execCONTINUEB(Signal* signal)
|
|||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
// Report information about transaction activity once per second.
|
// Report information about transaction activity once per second.
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
if (signal->theData[1] == 0) {
|
if (c_counters.c_trans_status == TransCounters::Timer){
|
||||||
signal->theData[0] = EventReport::TransReportCounters;
|
Uint32 len = c_counters.report(signal);
|
||||||
signal->theData[1] = ctransCount;
|
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, len, JBB);
|
||||||
signal->theData[2] = ccommitCount;
|
|
||||||
signal->theData[3] = creadCount;
|
c_counters.reset();
|
||||||
signal->theData[4] = csimpleReadCount;
|
signal->theData[0] = TcContinueB::ZTRANS_EVENT_REP;
|
||||||
signal->theData[5] = cwriteCount;
|
sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 5000, 1);
|
||||||
signal->theData[6] = cattrinfoCount;
|
}
|
||||||
signal->theData[7] = cconcurrentOp;
|
|
||||||
signal->theData[8] = cabortCount;
|
|
||||||
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 9, JBB);
|
|
||||||
}//if
|
|
||||||
ctransCount = 0;
|
|
||||||
ccommitCount = 0;
|
|
||||||
creadCount = 0;
|
|
||||||
csimpleReadCount = 0;
|
|
||||||
cwriteCount = 0;
|
|
||||||
cattrinfoCount = 0;
|
|
||||||
cabortCount = 0;
|
|
||||||
signal->theData[0] = TcContinueB::ZTRANS_EVENT_REP;
|
|
||||||
signal->theData[1] = 0;
|
|
||||||
sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 5000, 2);
|
|
||||||
return;
|
return;
|
||||||
case TcContinueB::ZCONTINUE_TIME_OUT_FRAG_CONTROL:
|
case TcContinueB::ZCONTINUE_TIME_OUT_FRAG_CONTROL:
|
||||||
jam();
|
jam();
|
||||||
@ -693,9 +679,10 @@ void Dbtc::execNDB_STTOR(Signal* signal)
|
|||||||
jam();
|
jam();
|
||||||
intstartphase3x010Lab(signal); /* SEIZE CONNECT RECORD IN EACH LQH*/
|
intstartphase3x010Lab(signal); /* SEIZE CONNECT RECORD IN EACH LQH*/
|
||||||
// Start transaction event reporting.
|
// Start transaction event reporting.
|
||||||
|
c_counters.c_trans_status = TransCounters::Timer;
|
||||||
|
c_counters.reset();
|
||||||
signal->theData[0] = TcContinueB::ZTRANS_EVENT_REP;
|
signal->theData[0] = TcContinueB::ZTRANS_EVENT_REP;
|
||||||
signal->theData[1] = 1;
|
sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 10, 1);
|
||||||
sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 10, 2);
|
|
||||||
return;
|
return;
|
||||||
case ZINTSPH6:
|
case ZINTSPH6:
|
||||||
jam();
|
jam();
|
||||||
@ -2245,7 +2232,7 @@ void Dbtc::initApiConnectRec(Signal* signal,
|
|||||||
{
|
{
|
||||||
const TcKeyReq * const tcKeyReq = (TcKeyReq *)&signal->theData[0];
|
const TcKeyReq * const tcKeyReq = (TcKeyReq *)&signal->theData[0];
|
||||||
UintR TfailureNr = cfailure_nr;
|
UintR TfailureNr = cfailure_nr;
|
||||||
UintR TtransCount = ctransCount;
|
UintR TtransCount = c_counters.ctransCount;
|
||||||
UintR Ttransid0 = tcKeyReq->transId1;
|
UintR Ttransid0 = tcKeyReq->transId1;
|
||||||
UintR Ttransid1 = tcKeyReq->transId2;
|
UintR Ttransid1 = tcKeyReq->transId2;
|
||||||
|
|
||||||
@ -2273,7 +2260,7 @@ void Dbtc::initApiConnectRec(Signal* signal,
|
|||||||
if(releaseIndexOperations)
|
if(releaseIndexOperations)
|
||||||
releaseAllSeizedIndexOperations(regApiPtr);
|
releaseAllSeizedIndexOperations(regApiPtr);
|
||||||
|
|
||||||
ctransCount = TtransCount + 1;
|
c_counters.ctransCount = TtransCount + 1;
|
||||||
}//Dbtc::initApiConnectRec()
|
}//Dbtc::initApiConnectRec()
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -2298,7 +2285,7 @@ Dbtc::seizeTcRecord(Signal* signal)
|
|||||||
TcConnectRecord * const regTcPtr =
|
TcConnectRecord * const regTcPtr =
|
||||||
&localTcConnectRecord[TfirstfreeTcConnect];
|
&localTcConnectRecord[TfirstfreeTcConnect];
|
||||||
|
|
||||||
UintR TconcurrentOp = cconcurrentOp;
|
UintR TconcurrentOp = c_counters.cconcurrentOp;
|
||||||
UintR TlastTcConnect = regApiPtr->lastTcConnect;
|
UintR TlastTcConnect = regApiPtr->lastTcConnect;
|
||||||
UintR TtcConnectptrIndex = tcConnectptr.i;
|
UintR TtcConnectptrIndex = tcConnectptr.i;
|
||||||
TcConnectRecordPtr tmpTcConnectptr;
|
TcConnectRecordPtr tmpTcConnectptr;
|
||||||
@ -2306,7 +2293,7 @@ Dbtc::seizeTcRecord(Signal* signal)
|
|||||||
cfirstfreeTcConnect = regTcPtr->nextTcConnect;
|
cfirstfreeTcConnect = regTcPtr->nextTcConnect;
|
||||||
tcConnectptr.p = regTcPtr;
|
tcConnectptr.p = regTcPtr;
|
||||||
|
|
||||||
cconcurrentOp = TconcurrentOp + 1;
|
c_counters.cconcurrentOp = TconcurrentOp + 1;
|
||||||
regTcPtr->prevTcConnect = TlastTcConnect;
|
regTcPtr->prevTcConnect = TlastTcConnect;
|
||||||
regTcPtr->nextTcConnect = RNIL;
|
regTcPtr->nextTcConnect = RNIL;
|
||||||
regTcPtr->accumulatingTriggerData.i = RNIL;
|
regTcPtr->accumulatingTriggerData.i = RNIL;
|
||||||
@ -2576,7 +2563,7 @@ void Dbtc::execTCKEYREQ(Signal* signal)
|
|||||||
UintR TapiConnectptrIndex = apiConnectptr.i;
|
UintR TapiConnectptrIndex = apiConnectptr.i;
|
||||||
UintR TsenderData = tcKeyReq->senderData;
|
UintR TsenderData = tcKeyReq->senderData;
|
||||||
UintR TattrLen = tcKeyReq->getAttrinfoLen(tcKeyReq->attrLen);
|
UintR TattrLen = tcKeyReq->getAttrinfoLen(tcKeyReq->attrLen);
|
||||||
UintR TattrinfoCount = cattrinfoCount;
|
UintR TattrinfoCount = c_counters.cattrinfoCount;
|
||||||
|
|
||||||
regTcPtr->apiConnect = TapiConnectptrIndex;
|
regTcPtr->apiConnect = TapiConnectptrIndex;
|
||||||
regTcPtr->clientData = TsenderData;
|
regTcPtr->clientData = TsenderData;
|
||||||
@ -2597,7 +2584,7 @@ void Dbtc::execTCKEYREQ(Signal* signal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
regCachePtr->attrlength = TattrLen;
|
regCachePtr->attrlength = TattrLen;
|
||||||
cattrinfoCount = TattrinfoCount + TattrLen;
|
c_counters.cattrinfoCount = TattrinfoCount + TattrLen;
|
||||||
|
|
||||||
UintR TtabptrIndex = localTabptr.i;
|
UintR TtabptrIndex = localTabptr.i;
|
||||||
UintR TtableSchemaVersion = tcKeyReq->tableSchemaVersion;
|
UintR TtableSchemaVersion = tcKeyReq->tableSchemaVersion;
|
||||||
@ -2688,17 +2675,17 @@ void Dbtc::execTCKEYREQ(Signal* signal)
|
|||||||
regCachePtr->attrinfo15[3] = Tdata5;
|
regCachePtr->attrinfo15[3] = Tdata5;
|
||||||
|
|
||||||
if (TOperationType == ZREAD) {
|
if (TOperationType == ZREAD) {
|
||||||
Uint8 TreadCount = creadCount;
|
Uint8 TreadCount = c_counters.creadCount;
|
||||||
jam();
|
jam();
|
||||||
regCachePtr->opLock = 0;
|
regCachePtr->opLock = 0;
|
||||||
creadCount = TreadCount + 1;
|
c_counters.creadCount = TreadCount + 1;
|
||||||
} else if(TOperationType == ZREAD_EX){
|
} else if(TOperationType == ZREAD_EX){
|
||||||
Uint8 TreadCount = creadCount;
|
Uint8 TreadCount = c_counters.creadCount;
|
||||||
jam();
|
jam();
|
||||||
TOperationType = ZREAD;
|
TOperationType = ZREAD;
|
||||||
regTcPtr->operation = ZREAD;
|
regTcPtr->operation = ZREAD;
|
||||||
regCachePtr->opLock = ZUPDATE;
|
regCachePtr->opLock = ZUPDATE;
|
||||||
creadCount = TreadCount + 1;
|
c_counters.creadCount = TreadCount + 1;
|
||||||
} else {
|
} else {
|
||||||
if(regApiPtr->commitAckMarker == RNIL){
|
if(regApiPtr->commitAckMarker == RNIL){
|
||||||
jam();
|
jam();
|
||||||
@ -2719,7 +2706,7 @@ void Dbtc::execTCKEYREQ(Signal* signal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
UintR Tattrlength = regCachePtr->attrlength;
|
UintR Tattrlength = regCachePtr->attrlength;
|
||||||
UintR TwriteCount = cwriteCount;
|
UintR TwriteCount = c_counters.cwriteCount;
|
||||||
UintR Toperationsize = coperationsize;
|
UintR Toperationsize = coperationsize;
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* THIS IS A TEMPORARY TABLE, DON'T UPDATE coperationsize.
|
* THIS IS A TEMPORARY TABLE, DON'T UPDATE coperationsize.
|
||||||
@ -2729,7 +2716,7 @@ void Dbtc::execTCKEYREQ(Signal* signal)
|
|||||||
if (localTabptr.p->storedTable) {
|
if (localTabptr.p->storedTable) {
|
||||||
coperationsize = ((Toperationsize + Tattrlength) + TkeyLength) + 17;
|
coperationsize = ((Toperationsize + Tattrlength) + TkeyLength) + 17;
|
||||||
}
|
}
|
||||||
cwriteCount = TwriteCount + 1;
|
c_counters.cwriteCount = TwriteCount + 1;
|
||||||
switch (TOperationType) {
|
switch (TOperationType) {
|
||||||
case ZUPDATE:
|
case ZUPDATE:
|
||||||
jam();
|
jam();
|
||||||
@ -3311,10 +3298,10 @@ void Dbtc::releaseSimpleRead(Signal* signal)
|
|||||||
* Therefore decrese no LQHKEYCONF(REF) we are waiting for
|
* Therefore decrese no LQHKEYCONF(REF) we are waiting for
|
||||||
*/
|
*/
|
||||||
ApiConnectRecord * const regApiPtr = apiConnectptr.p;
|
ApiConnectRecord * const regApiPtr = apiConnectptr.p;
|
||||||
UintR TsimpleReadCount = csimpleReadCount;
|
UintR TsimpleReadCount = c_counters.csimpleReadCount;
|
||||||
UintR Tlqhkeyreqrec = regApiPtr->lqhkeyreqrec;
|
UintR Tlqhkeyreqrec = regApiPtr->lqhkeyreqrec;
|
||||||
|
|
||||||
csimpleReadCount = TsimpleReadCount + 1;
|
c_counters.csimpleReadCount = TsimpleReadCount + 1;
|
||||||
regApiPtr->lqhkeyreqrec = Tlqhkeyreqrec - 1;
|
regApiPtr->lqhkeyreqrec = Tlqhkeyreqrec - 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3372,7 +3359,7 @@ void Dbtc::releaseTcCon()
|
|||||||
{
|
{
|
||||||
TcConnectRecord * const regTcPtr = tcConnectptr.p;
|
TcConnectRecord * const regTcPtr = tcConnectptr.p;
|
||||||
UintR TfirstfreeTcConnect = cfirstfreeTcConnect;
|
UintR TfirstfreeTcConnect = cfirstfreeTcConnect;
|
||||||
UintR TconcurrentOp = cconcurrentOp;
|
UintR TconcurrentOp = c_counters.cconcurrentOp;
|
||||||
UintR TtcConnectptrIndex = tcConnectptr.i;
|
UintR TtcConnectptrIndex = tcConnectptr.i;
|
||||||
|
|
||||||
regTcPtr->tcConnectstate = OS_CONNECTED;
|
regTcPtr->tcConnectstate = OS_CONNECTED;
|
||||||
@ -3381,7 +3368,7 @@ void Dbtc::releaseTcCon()
|
|||||||
regTcPtr->isIndexOp = false;
|
regTcPtr->isIndexOp = false;
|
||||||
regTcPtr->indexOp = RNIL;
|
regTcPtr->indexOp = RNIL;
|
||||||
cfirstfreeTcConnect = TtcConnectptrIndex;
|
cfirstfreeTcConnect = TtcConnectptrIndex;
|
||||||
cconcurrentOp = TconcurrentOp - 1;
|
c_counters.cconcurrentOp = TconcurrentOp - 1;
|
||||||
}//Dbtc::releaseTcCon()
|
}//Dbtc::releaseTcCon()
|
||||||
|
|
||||||
void Dbtc::execPACKED_SIGNAL(Signal* signal)
|
void Dbtc::execPACKED_SIGNAL(Signal* signal)
|
||||||
@ -4465,7 +4452,7 @@ void Dbtc::sendApiCommit(Signal* signal)
|
|||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
UintR TapiConnectFilesize = capiConnectFilesize;
|
UintR TapiConnectFilesize = capiConnectFilesize;
|
||||||
UintR TcommitCount = ccommitCount;
|
UintR TcommitCount = c_counters.ccommitCount;
|
||||||
UintR TapiIndex = apiConnectptr.i;
|
UintR TapiIndex = apiConnectptr.i;
|
||||||
UintR TnewApiIndex = regApiPtr->apiCopyRecord;
|
UintR TnewApiIndex = regApiPtr->apiCopyRecord;
|
||||||
UintR TapiFailState = regApiPtr->apiFailState;
|
UintR TapiFailState = regApiPtr->apiFailState;
|
||||||
@ -4473,7 +4460,7 @@ void Dbtc::sendApiCommit(Signal* signal)
|
|||||||
|
|
||||||
tmpApiConnectptr.p = apiConnectptr.p;
|
tmpApiConnectptr.p = apiConnectptr.p;
|
||||||
tmpApiConnectptr.i = TapiIndex;
|
tmpApiConnectptr.i = TapiIndex;
|
||||||
ccommitCount = TcommitCount + 1;
|
c_counters.ccommitCount = TcommitCount + 1;
|
||||||
apiConnectptr.i = TnewApiIndex;
|
apiConnectptr.i = TnewApiIndex;
|
||||||
ptrCheckGuard(apiConnectptr, TapiConnectFilesize, localApiConnectRecord);
|
ptrCheckGuard(apiConnectptr, TapiConnectFilesize, localApiConnectRecord);
|
||||||
copyApi(signal);
|
copyApi(signal);
|
||||||
@ -8619,6 +8606,10 @@ void Dbtc::initScanrec(ScanRecordPtr scanptr,
|
|||||||
ptr.p->scanFragConcurrency = noOprecPerFrag;
|
ptr.p->scanFragConcurrency = noOprecPerFrag;
|
||||||
ptr.p->m_apiPtr = cdata[i];
|
ptr.p->m_apiPtr = cdata[i];
|
||||||
}//for
|
}//for
|
||||||
|
|
||||||
|
(* (scanptr.p->rangeScan ?
|
||||||
|
&c_counters.c_range_scan_count :
|
||||||
|
&c_counters.c_scan_count))++;
|
||||||
}//Dbtc::initScanrec()
|
}//Dbtc::initScanrec()
|
||||||
|
|
||||||
void Dbtc::scanTabRefLab(Signal* signal, Uint32 errCode)
|
void Dbtc::scanTabRefLab(Signal* signal, Uint32 errCode)
|
||||||
@ -9236,6 +9227,7 @@ void Dbtc::execSCAN_NEXTREQ(Signal* signal)
|
|||||||
* We will send a SCAN_TABREF to indicate a time-out occurred.
|
* We will send a SCAN_TABREF to indicate a time-out occurred.
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
DEBUG("scanTabRefLab: ZSCANTIME_OUT_ERROR2");
|
DEBUG("scanTabRefLab: ZSCANTIME_OUT_ERROR2");
|
||||||
|
ndbout_c("apiConnectptr(%d) -> abort", apiConnectptr.i);
|
||||||
ndbrequire(false); //B2 indication of strange things going on
|
ndbrequire(false); //B2 indication of strange things going on
|
||||||
scanTabRefLab(signal, ZSCANTIME_OUT_ERROR2);
|
scanTabRefLab(signal, ZSCANTIME_OUT_ERROR2);
|
||||||
return;
|
return;
|
||||||
@ -9902,7 +9894,7 @@ void Dbtc::initialiseTcConnect(Signal* signal)
|
|||||||
ptrAss(tcConnectptr, tcConnectRecord);
|
ptrAss(tcConnectptr, tcConnectRecord);
|
||||||
tcConnectptr.p->nextTcConnect = RNIL;
|
tcConnectptr.p->nextTcConnect = RNIL;
|
||||||
cfirstfreeTcConnect = titcTmp;
|
cfirstfreeTcConnect = titcTmp;
|
||||||
cconcurrentOp = 0;
|
c_counters.cconcurrentOp = 0;
|
||||||
}//Dbtc::initialiseTcConnect()
|
}//Dbtc::initialiseTcConnect()
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
@ -9973,7 +9965,7 @@ void Dbtc::releaseAbortResources(Signal* signal)
|
|||||||
{
|
{
|
||||||
TcConnectRecordPtr rarTcConnectptr;
|
TcConnectRecordPtr rarTcConnectptr;
|
||||||
|
|
||||||
cabortCount++;
|
c_counters.cabortCount++;
|
||||||
if (apiConnectptr.p->cachePtr != RNIL) {
|
if (apiConnectptr.p->cachePtr != RNIL) {
|
||||||
cachePtr.i = apiConnectptr.p->cachePtr;
|
cachePtr.i = apiConnectptr.p->cachePtr;
|
||||||
ptrCheckGuard(cachePtr, ccacheFilesize, cacheRecord);
|
ptrCheckGuard(cachePtr, ccacheFilesize, cacheRecord);
|
||||||
@ -10147,7 +10139,7 @@ void Dbtc::seizeTcConnect(Signal* signal)
|
|||||||
tcConnectptr.i = cfirstfreeTcConnect;
|
tcConnectptr.i = cfirstfreeTcConnect;
|
||||||
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
|
ptrCheckGuard(tcConnectptr, ctcConnectFilesize, tcConnectRecord);
|
||||||
cfirstfreeTcConnect = tcConnectptr.p->nextTcConnect;
|
cfirstfreeTcConnect = tcConnectptr.p->nextTcConnect;
|
||||||
cconcurrentOp++;
|
c_counters.cconcurrentOp++;
|
||||||
tcConnectptr.p->isIndexOp = false;
|
tcConnectptr.p->isIndexOp = false;
|
||||||
}//Dbtc::seizeTcConnect()
|
}//Dbtc::seizeTcConnect()
|
||||||
|
|
||||||
@ -10559,6 +10551,25 @@ Dbtc::execDUMP_STATE_ORD(Signal* signal)
|
|||||||
set_appl_timeout_value(signal->theData[1]);
|
set_appl_timeout_value(signal->theData[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dumpState->args[0] == DumpStateOrd::StartTcTimer){
|
||||||
|
c_counters.c_trans_status = TransCounters::Started;
|
||||||
|
c_counters.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dumpState->args[0] == DumpStateOrd::StopTcTimer){
|
||||||
|
c_counters.c_trans_status = TransCounters::Off;
|
||||||
|
Uint32 len = c_counters.report(signal);
|
||||||
|
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, len, JBB);
|
||||||
|
c_counters.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dumpState->args[0] == DumpStateOrd::StartPeriodicTcTimer){
|
||||||
|
c_counters.c_trans_status = TransCounters::Timer;
|
||||||
|
c_counters.reset();
|
||||||
|
signal->theData[0] = TcContinueB::ZTRANS_EVENT_REP;
|
||||||
|
sendSignalWithDelay(cownref, GSN_CONTINUEB, signal, 5000, 1);
|
||||||
|
}
|
||||||
}//Dbtc::execDUMP_STATE_ORD()
|
}//Dbtc::execDUMP_STATE_ORD()
|
||||||
|
|
||||||
void Dbtc::execSET_VAR_REQ(Signal* signal)
|
void Dbtc::execSET_VAR_REQ(Signal* signal)
|
||||||
|
Reference in New Issue
Block a user