|
@@ -604,6 +604,7 @@ protected:
|
|
|
unsigned ctxFetchPreload;
|
|
|
unsigned ctxPrefetchProjectPreload;
|
|
|
bool traceActivityTimes;
|
|
|
+ bool checkingHeap;
|
|
|
|
|
|
Owned<IConstWorkUnit> workUnit;
|
|
|
Owned<IRoxieDaliHelper> daliHelperLink;
|
|
@@ -669,7 +670,7 @@ protected:
|
|
|
|
|
|
public:
|
|
|
IMPLEMENT_IINTERFACE;
|
|
|
- CSlaveContext(const IQueryFactory *_factory, const IRoxieContextLogger &_logctx, unsigned _timeLimit, memsize_t _memoryLimit, IRoxieQueryPacket *_packet, bool _traceActivityTimes, bool _debuggerActive)
|
|
|
+ CSlaveContext(const IQueryFactory *_factory, const IRoxieContextLogger &_logctx, unsigned _timeLimit, memsize_t _memoryLimit, IRoxieQueryPacket *_packet, bool _traceActivityTimes, bool _debuggerActive, bool _checkingHeap)
|
|
|
: factory(_factory), logctx(_logctx)
|
|
|
{
|
|
|
if (_packet)
|
|
@@ -696,6 +697,7 @@ public:
|
|
|
debugContext.setown(slaveDebugContext);
|
|
|
probeManager.setown(createDebugManager(debugContext, "slaveDebugger"));
|
|
|
}
|
|
|
+ checkingHeap = _checkingHeap;
|
|
|
|
|
|
aborted = false;
|
|
|
|
|
@@ -1244,7 +1246,10 @@ public:
|
|
|
// roxiemem::IRowAllocatorMetaActIdCacheCallback
|
|
|
virtual IEngineRowAllocator *createAllocator(IOutputMetaData *meta, unsigned activityId, unsigned id, roxiemem::RoxieHeapFlags flags) const
|
|
|
{
|
|
|
- return createRoxieRowAllocator(*rowManager, meta, activityId, id, flags);
|
|
|
+ if (checkingHeap)
|
|
|
+ return createCrcRoxieRowAllocator(*rowManager, meta, activityId, id, flags);
|
|
|
+ else
|
|
|
+ return createRoxieRowAllocator(*rowManager, meta, activityId, id, flags);
|
|
|
}
|
|
|
|
|
|
virtual void getResultRowset(size32_t & tcount, byte * * & tgt, const char * stepname, unsigned sequence, IEngineRowAllocator * _rowAllocator, bool isGrouped, IXmlToRowTransformer * xmlTransformer, ICsvToRowTransformer * csvTransformer)
|
|
@@ -1663,7 +1668,7 @@ protected:
|
|
|
|
|
|
IRoxieSlaveContext *createSlaveContext(const IQueryFactory *_factory, const SlaveContextLogger &_logctx, unsigned _timeLimit, memsize_t _memoryLimit, IRoxieQueryPacket *packet)
|
|
|
{
|
|
|
- return new CSlaveContext(_factory, _logctx, _timeLimit, _memoryLimit, packet, _logctx.queryTraceActivityTimes(), _logctx.queryDebuggerActive());
|
|
|
+ return new CSlaveContext(_factory, _logctx, _timeLimit, _memoryLimit, packet, _logctx.queryTraceActivityTimes(), _logctx.queryDebuggerActive(), _logctx.queryCheckingHeap());
|
|
|
}
|
|
|
|
|
|
class CRoxieServerDebugContext : extends CBaseServerDebugContext
|
|
@@ -1943,7 +1948,7 @@ public:
|
|
|
IMPLEMENT_IINTERFACE;
|
|
|
|
|
|
CRoxieServerContext(const IQueryFactory *_factory, const IRoxieContextLogger &_logctx)
|
|
|
- : CSlaveContext(_factory, _logctx, 0, 0, NULL, false, false), serverQueryFactory(_factory)
|
|
|
+ : CSlaveContext(_factory, _logctx, 0, 0, NULL, false, false, false), serverQueryFactory(_factory)
|
|
|
{
|
|
|
init();
|
|
|
rowManager->setMemoryLimit(serverQueryFactory->getMemoryLimit());
|
|
@@ -1952,7 +1957,7 @@ public:
|
|
|
}
|
|
|
|
|
|
CRoxieServerContext(IConstWorkUnit *_workUnit, const IQueryFactory *_factory, const IRoxieContextLogger &_logctx)
|
|
|
- : CSlaveContext(_factory, _logctx, 0, 0, NULL, false, false), serverQueryFactory(_factory)
|
|
|
+ : CSlaveContext(_factory, _logctx, 0, 0, NULL, false, false, false), serverQueryFactory(_factory)
|
|
|
{
|
|
|
init();
|
|
|
workUnit.set(_workUnit);
|
|
@@ -1963,7 +1968,7 @@ public:
|
|
|
}
|
|
|
|
|
|
CRoxieServerContext(IPropertyTree *_context, const IQueryFactory *_factory, SafeSocket &_client, TextMarkupFormat _mlFmt, bool _isRaw, bool _isBlocked, HttpHelper &httpHelper, bool _trim, unsigned _priority, const IRoxieContextLogger &_logctx, PTreeReaderOptions _xmlReadFlags)
|
|
|
- : CSlaveContext(_factory, _logctx, 0, 0, NULL, false, false), serverQueryFactory(_factory)
|
|
|
+ : CSlaveContext(_factory, _logctx, 0, 0, NULL, false, false, false), serverQueryFactory(_factory)
|
|
|
{
|
|
|
init();
|
|
|
context.set(_context);
|
|
@@ -2013,6 +2018,7 @@ public:
|
|
|
ctxPrefetchProjectPreload = context->getPropInt("_PrefetchProjectPreload", defaultPrefetchProjectPreload);
|
|
|
|
|
|
traceActivityTimes = context->getPropBool("_TraceActivityTimes", false) || context->getPropBool("@timing", false);
|
|
|
+ checkingHeap = context->getPropBool("_CheckingHeap", defaultCheckingHeap) || context->getPropBool("@checkingHeap", defaultCheckingHeap);
|
|
|
}
|
|
|
|
|
|
virtual roxiemem::IRowManager &queryRowManager()
|