summaryrefslogtreecommitdiff
path: root/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp')
-rw-r--r--ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp56
1 files changed, 47 insertions, 9 deletions
diff --git a/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp b/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
index 2735cac0c8e..cd6198eff23 100644
--- a/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
+++ b/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
@@ -46,10 +46,11 @@
#include <TimeQueue.hpp>
#include <new>
+#include <NdbSleep.h>
#include <SafeCounter.hpp>
// Used here only to print event reports on stdout/console.
-static EventLogger eventLogger;
+EventLogger g_eventLogger;
Cmvmi::Cmvmi(const Configuration & conf) :
SimulatedBlock(CMVMI, conf)
@@ -92,11 +93,6 @@ Cmvmi::Cmvmi(const Configuration & conf) :
subscriberPool.setSize(5);
- // Print to stdout/console
- eventLogger.createConsoleHandler();
- eventLogger.setCategory("NDB");
- eventLogger.enable(Logger::LL_INFO, Logger::LL_ALERT); // Log INFO to ALERT
-
const ClusterConfiguration::ClusterData & clData =
theConfig.clusterConfigurationData() ;
@@ -130,6 +126,10 @@ void Cmvmi::execNDB_TAMPER(Signal* signal)
if(ERROR_INSERTED(9999)){
CRASH_INSERTION(9999);
}
+
+ if(ERROR_INSERTED(9998)){
+ while(true) NdbSleep_SecSleep(1);
+ }
}//execNDB_TAMPER()
void Cmvmi::execSET_LOGLEVELORD(Signal* signal)
@@ -194,7 +194,7 @@ void Cmvmi::execEVENT_REP(Signal* signal)
}
// Print the event info
- eventLogger.log(eventReport->getEventType(), signal->theData);
+ g_eventLogger.log(eventReport->getEventType(), signal->theData);
}//execEVENT_REP()
@@ -395,6 +395,15 @@ void Cmvmi::execSIZEALT_ACK(Signal* signal)
sendSignal(numberToRef(blockNo, 0), GSN_SIZEALT_REP, signal,21, JBB);
} else {
jam();
+
+ if(theConfig.lockPagesInMainMemory()){
+ int res = NdbMem_MemLockAll();
+ if(res != 0){
+ g_eventLogger.warning("Failed to memlock pages");
+ warningEvent("Failed to memlock pages");
+ }
+ }
+
sendSTTORRY(signal);
}
}
@@ -404,7 +413,7 @@ void Cmvmi::execCM_INFOREQ(Signal* signal)
int id = signal->theData[1];
const BlockReference userRef = signal->theData[0];
const ClusterConfiguration::ClusterData & clusterConf =
- theConfig.clusterConfigurationData();
+ theConfig.clusterConfigurationData();
const int myNodeId = globalData.ownId;
jamEntry();
@@ -1116,6 +1125,24 @@ public:
};
#endif
+
+static int iii;
+
+static
+int
+recurse(char * buf, int loops, int arg){
+ char * tmp = (char*)alloca(arg);
+ printf("tmp = %p\n", tmp);
+ for(iii = 0; iii<arg; iii += 1024){
+ tmp[iii] = (iii % 23 + (arg & iii));
+ }
+
+ if(loops == 0)
+ return tmp[345];
+ else
+ return tmp[arg/loops] + recurse(tmp, loops - 1, arg);
+}
+
void
Cmvmi::execDUMP_STATE_ORD(Signal* signal)
{
@@ -1141,7 +1168,18 @@ Cmvmi::execDUMP_STATE_ORD(Signal* signal)
* Here I can dump CMVMI state if needed
*/
if(signal->theData[0] == 13){
- infoEvent("Cmvmi: signalCount = %d", signalCount);
+#if 0
+ int loop = 100;
+ int len = (10*1024*1024);
+ if(signal->getLength() > 1)
+ loop = signal->theData[1];
+ if(signal->getLength() > 2)
+ len = signal->theData[2];
+
+ ndbout_c("recurse(%d loop, %dkb per recurse)", loop, len/1024);
+ int a = recurse(0, loop, len);
+ ndbout_c("after...%d", a);
+#endif
}
DumpStateOrd * const & dumpState = (DumpStateOrd *)&signal->theData[0];