You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by se...@apache.org on 2018/01/12 00:36:54 UTC
[1/2] trafodion git commit: [TRAFOFION-2731] CodeCleanup: Removed the
obsolete code in NAMemory and CliGlobals classes
Repository: trafodion
Updated Branches:
refs/heads/master 279ef7bc6 -> 8b6a6bbeb
[TRAFOFION-2731] CodeCleanup: Removed the obsolete code in NAMemory and CliGlobals
classes
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/806e93b2
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/806e93b2
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/806e93b2
Branch: refs/heads/master
Commit: 806e93b2ca81e6172f0a210ab852c3d4c2af59c2
Parents: 3dbfa89
Author: selvaganesang <se...@esgyn.com>
Authored: Wed Jan 10 23:13:31 2018 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Thu Jan 11 04:39:21 2018 +0000
----------------------------------------------------------------------
core/sql/arkcmp/CmpContext.cpp | 2 +-
core/sql/arkcmp/CmpStatement.cpp | 2 +-
core/sql/cli/Globals.cpp | 68 +-------
core/sql/cli/Globals.h | 71 --------
core/sql/common/NAAssert.h | 7 -
core/sql/common/NAMemory.cpp | 291 ++++++++------------------------
core/sql/common/NAMemory.h | 135 +++------------
core/sql/runtimestats/SqlStats.cpp | 5 +-
core/sql/runtimestats/SqlStats.h | 1 -
9 files changed, 97 insertions(+), 485 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/arkcmp/CmpContext.cpp
----------------------------------------------------------------------
diff --git a/core/sql/arkcmp/CmpContext.cpp b/core/sql/arkcmp/CmpContext.cpp
index 1b30b3d..6df3ddc 100644
--- a/core/sql/arkcmp/CmpContext.cpp
+++ b/core/sql/arkcmp/CmpContext.cpp
@@ -211,7 +211,7 @@ CmpContext::CmpContext(UInt32 f, CollHeap * h)
memLimit = (size_t) 1024 * CmpCommon::getDefaultLong(MEMORY_LIMIT_HISTCACHE_UPPER_KB);
const Lng32 initHeapSize = 16 * 1024; // ## 16K
NAHeap *histogramCacheHeap = new (heap_)
- NAHeap("HistogramCache Heap",
+ NAHeap((const char *)"HistogramCache Heap",
heap_,
initHeapSize,
memLimit);
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/arkcmp/CmpStatement.cpp
----------------------------------------------------------------------
diff --git a/core/sql/arkcmp/CmpStatement.cpp b/core/sql/arkcmp/CmpStatement.cpp
index f352876..d1b8e22 100644
--- a/core/sql/arkcmp/CmpStatement.cpp
+++ b/core/sql/arkcmp/CmpStatement.cpp
@@ -165,7 +165,7 @@ CmpStatement::CmpStatement(CmpContext* context,
{
// set up statement heap with 32 KB allocation units
size_t memLimit = (size_t) 1024 * CmpCommon::getDefaultLong(MEMORY_LIMIT_CMPSTMT_UPPER_KB);
- heap_ = new (context_->heap()) NAHeap("Cmp Statement Heap",
+ heap_ = new (context_->heap()) NAHeap((const char *)"Cmp Statement Heap",
context_->heap(),
(Lng32)32768,
memLimit);
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/cli/Globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.cpp b/core/sql/cli/Globals.cpp
index b9dd6e5..e6f64eb 100644
--- a/core/sql/cli/Globals.cpp
+++ b/core/sql/cli/Globals.cpp
@@ -74,14 +74,8 @@ CLISemaphore globalSemaphore ;
CliGlobals::CliGlobals(NABoolean espProcess)
: inConstructor_(TRUE),
- executorMemory_("Global Executor Memory",0,0,
- 0,0,0, &segGlobals_),
+ executorMemory_((const char *)"Global Executor Memory"),
contextList_(NULL),
- defaultVolSeed_(0),
- listOfVolNames_(NULL),
- listOfAuditedVols_(NULL),
- listOfVolNamesCacheTime_(-1),
- sysVolNameInitialized_(FALSE),
envvars_(NULL),
envvarsContext_(0),
sharedArkcmp_(NULL),
@@ -90,16 +84,10 @@ CliGlobals::CliGlobals(NABoolean espProcess)
totalCliCalls_(0),
savedCompilerVersion_ (COM_VERS_COMPILER_VERSION),
globalSbbCount_(0),
- // sessionDefaults_(NULL),
priorityChanged_(FALSE),
currRootTcb_(NULL),
processStats_(NULL),
savedPriority_(148), // Set it to some valid priority to start with
- qualifyingVolsPerNode_(NULL),
- cpuNumbers_(NULL),
- capacities_(NULL),
- freespaces_(NULL),
- largestFragments_(NULL),
tidList_(NULL),
cliSemaphore_(NULL),
defaultContext_(NULL),
@@ -134,7 +122,6 @@ void CliGlobals::init( NABoolean espProcess,
_sqptr = new (&executorMemory_) char[10];
numCliCalls_ = 0;
- logEmsEvents_ = TRUE;
nodeName_[0] = '\0';
breakEnabled_ = FALSE;
@@ -181,10 +168,6 @@ void CliGlobals::init( NABoolean espProcess,
// Create the process global ARKCMP server.
sharedArkcmp_ = NULL;
nextUniqueContextHandle = DEFAULT_CONTEXT_HANDLE;
-
- arlibHeap_ = new (&executorMemory_) NAHeap("MXARLIB Cache Heap",
- &executorMemory_,
- (Lng32) 32768);
lastUniqueNumber_ = 0;
sessionUniqueNumber_ = 0;
// It is not thread safe to set the globals cli_globals
@@ -243,11 +226,6 @@ void CliGlobals::init( NABoolean espProcess,
tidList_ = new(&executorMemory_) HashQueue(&executorMemory_);
SQLCTX_HANDLE ch = defaultContext_->getContextHandle();
contextList_->insert((char*)&ch, sizeof(SQLCTX_HANDLE), (void*)defaultContext_);
- qualifyingVolsPerNode_.setHeap(defaultContext_->exCollHeap());
- cpuNumbers_.setHeap(defaultContext_->exCollHeap());
- capacities_.setHeap(defaultContext_->exCollHeap());
- freespaces_.setHeap(defaultContext_->exCollHeap());
- largestFragments_.setHeap(defaultContext_->exCollHeap());
if (statsGlobals_ != NULL)
memMonitor_ = statsGlobals_->getMemoryMonitor();
else
@@ -307,11 +285,6 @@ CliGlobals::~CliGlobals()
delete sharedArkcmp_;
sharedArkcmp_ = NULL;
}
- if (arlibHeap_)
- {
- delete arlibHeap_;
- arlibHeap_ = NULL;
- }
if (statsGlobals_ != NULL)
{
error = statsGlobals_->getStatsSemaphore(semId_, myPin_);
@@ -894,45 +867,6 @@ Lng32 CliGlobals::resetContext(ContextCli *theContext, void *contextMsg)
return SUCCESS;
}
-void CliGlobals::clearQualifiedDiskInfo()
-{
- CollHeap *heap = defaultContext_->exCollHeap();
-
- nodeName_[0] = '\0';
-
- while (!qualifyingVolsPerNode_.isEmpty())
- {
- char *volume;
- // getFirst() removes and returns the first element in
- // the container.
- qualifyingVolsPerNode_.getFirst(volume);
- NADELETEBASIC(volume, heap); // Allocated in addQualifiedDiskInfo()
- }
-
- cpuNumbers_.clear();
- capacities_.clear();
- freespaces_.clear();
- largestFragments_.clear();
-}
-
-void CliGlobals::addQualifiedDiskInfo(
- const char *volumeName,
- Lng32 primaryCpu,
- Lng32 capacity,
- Lng32 freeSpace,
- Lng32 largestFragment)
-{
- CollHeap *heap = defaultContext_->exCollHeap();
- char *volName = new(heap) char[9]; // deleted in clearQualifiedDiskInfo()
- strcpy(volName, volumeName);
-
- qualifyingVolsPerNode_.insert(volName);
- cpuNumbers_.insert(primaryCpu);
- capacities_.insert(capacity);
- freespaces_.insert(freeSpace);
- largestFragments_.insert(largestFragment);
-}
-
NAHeap *CliGlobals::getCurrContextHeap()
{
return currContext()->exHeap();
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/cli/Globals.h
----------------------------------------------------------------------
diff --git a/core/sql/cli/Globals.h b/core/sql/cli/Globals.h
index ce9ecb0..284d992 100644
--- a/core/sql/cli/Globals.h
+++ b/core/sql/cli/Globals.h
@@ -159,46 +159,10 @@ public:
inline void setMemoryMonitor(MemoryMonitor *memMon) { memMonitor_ = memMon; }
inline NAHeap * getExecutorMemory() { return &executorMemory_; }
- inline NAHeap * getNoWaitHeap() { return noWaitSQLHeap_; }
-
- inline short getSegId(Lng32 &index)
- { return segGlobals_.getSegId(index); }
- inline const NASegGlobals * getSegGlobals() const
-
- { return &segGlobals_; }
- inline UInt32 getDefaultVolSeed() { return defaultVolSeed_; }
- inline void setDefaultVolSeed( UInt32 seed)
- { defaultVolSeed_ = seed; }
- inline char ** getListOfVolNames() { return listOfVolNames_; }
- inline void setListOfVolNames( char ** pVols)
- { listOfVolNames_ = pVols; }
- inline void * getListOfAuditedVols() { return listOfAuditedVols_; }
- inline void setListOfAuditedVols( void *p)
- { listOfAuditedVols_ = p; }
- inline Int64 getListOfVolNamesCacheTime() // 64-bit
- { return listOfVolNamesCacheTime_; }
- inline void setListOfVolNamesCacheTime(Int64 cacheTime)
- { listOfVolNamesCacheTime_ = cacheTime; }
- inline NABoolean isSysVolNameInitialized()
- { return sysVolNameInitialized_; }
- inline void setSysVolNameIsInitialized()
- { sysVolNameInitialized_ = TRUE; }
- inline char * getSysVolName() { return sysVolName_; }
-
- void clearQualifiedDiskInfo();
- void addQualifiedDiskInfo(const char *volumeName, Lng32 primaryCpu,
- Lng32 capacity, Lng32 freeSpace, Lng32 largestFragment);
inline void setNodeName(const char *nodeName)
{ strncpy(nodeName_, nodeName, sizeof(nodeName_)); }
inline char *getNodeName() { return nodeName_; }
- inline Lng32 getNumOfQualifyingVols() { return qualifyingVolsPerNode_.entries(); }
- inline char *getQualifyingVolume(Lng32 i) { return qualifyingVolsPerNode_[i]; }
- inline Lng32 getCpuNumberForVol(Lng32 i) { return cpuNumbers_[i]; }
- inline Lng32 getCapacityForVol(Lng32 i) { return capacities_[i]; }
- inline Lng32 getFreespaceForVol(Lng32 i) { return freespaces_[i]; }
- inline Lng32 getLargestFragmentForVol(Lng32 i) { return largestFragments_[i]; }
-
inline Lng32 incrNumOfCliCalls() { return ++numCliCalls_; }
inline Lng32 decrNumOfCliCalls()
{
@@ -439,39 +403,12 @@ private:
// executor memory that maintains all heap memory for this executor
NAHeap executorMemory_;
- // Object that contains: 1) attributes of the first flat segment
- // 2) array of secondary segment ids
- NASegGlobals segGlobals_;
-
// heap used by the IPC procedures
NAHeap * ipcHeap_;
// memory monitor for this process
MemoryMonitor *memMonitor_;
- // heap used by no-wait SQL procedures
- NAHeap * noWaitSQLHeap_;
-
- // Cache of descriptive table information from resource forks. Used
- // in the audit reading CLI procedures called by utilities and by
- // TMFARLB2. Code for these audit reading procedures is in
- // CliMxArLib.cpp.
- NAHeap *arlibHeap_;
- //
- // used by the catalog manager get-default-volume algorithm
- //
- UInt32 defaultVolSeed_;
- char ** listOfVolNames_;
- void * listOfAuditedVols_;
- Int64 listOfVolNamesCacheTime_; // 64-bit
-
- //
- // cache the Tandem System Volume name
- //
- NABoolean sysVolNameInitialized_;
- char sysVolName_[ 18 ]; // '$' + VOLNAME + '.' +
- // SUBVOL + null-terminator
-
// copy of the oss envvars
char ** envvars_;
@@ -515,8 +452,6 @@ private:
// location of the application program which is calling SQL.
// Fully qualified oss pathname for OSS processes.
- // \sys.$vol.subvol for guardian processes. Currently, programDir_
- // is not set or used for guardian processes.
char * programDir_;
short processType_; // 0, oss process. 1, guardian process.
NABoolean logReclaimEventDone_;
@@ -550,13 +485,7 @@ private:
// EMS event descriptor
SQLMXLoggingArea::ExperienceLevel emsEventExperienceLevel_;
- // these vars are used by GetListOfQualifyingVolumes.. methods.
char nodeName_[9];
- LIST(char *) qualifyingVolsPerNode_;
- LIST(Lng32) cpuNumbers_;
- LIST(Lng32) capacities_;
- LIST(Lng32) freespaces_;
- LIST(Lng32) largestFragments_;
StatsGlobals *statsGlobals_;
// heap used for the Stats collection
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/common/NAAssert.h
----------------------------------------------------------------------
diff --git a/core/sql/common/NAAssert.h b/core/sql/common/NAAssert.h
index 4c37de7..7121060 100644
--- a/core/sql/common/NAAssert.h
+++ b/core/sql/common/NAAssert.h
@@ -97,18 +97,11 @@ public:
inline jmp_buf *getJmpBuf() { return &longJmpTgt_; }
inline jmp_buf *getJmpBufPtr() { return longJmpTgtPtr_; }
inline void setJmpBufPtr(jmp_buf *longJmpTgtPtr) { longJmpTgtPtr_ = longJmpTgtPtr; }
- inline NABoolean getLogEmsEvents() const { return logEmsEvents_; }
- inline void setLogEmsEvents(NABoolean logEmsEvents) { logEmsEvents_ = logEmsEvents; }
- inline void setQfoProcessing() { qfoProcessing_ = TRUE; }
- inline void clearQfoProcessing() { qfoProcessing_ = FALSE; }
- inline NABoolean isQfoProcessing() { return qfoProcessing_; }
protected:
NABoolean globalsAreInitialized_;
jmp_buf *longJmpTgtPtr_;
jmp_buf longJmpTgt_;
long numCliCalls_;
- NABoolean logEmsEvents_;
- NABoolean qfoProcessing_;
};
NAAssertGlobals * GetNAAssertGlobals(NABoolean *logEmsEvents = NULL);
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/common/NAMemory.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/NAMemory.cpp b/core/sql/common/NAMemory.cpp
index d96351a..0c13caa 100644
--- a/core/sql/common/NAMemory.cpp
+++ b/core/sql/common/NAMemory.cpp
@@ -852,7 +852,7 @@ NAMemory::sysFreeBlock(NABlock *blk)
#ifndef MUSE
NAMemory::NAMemory(const char * name)
:
- type_(NO_MEMORY_TYPE),
+ type_(EXECUTOR_MEMORY),
maximumSize_((size_t)-1), // no maximum
parent_(NULL),
firstBlk_(NULL),
@@ -864,7 +864,6 @@ NAMemory::NAMemory(const char * name)
totalSize_(0),
blockCnt_(0),
thBlockCnt_(DEFAULT_THRESHOLD_BLOCK_COUNT),
- segGlobals_(0),
memoryList_(NULL),
lastListEntry_(NULL),
nextEntry_(NULL),
@@ -879,6 +878,7 @@ NAMemory::NAMemory(const char * name)
, maxVmSize_(0l)
, sharedMemory_(FALSE)
{
+ setType(type_, 0);
#if ( defined(_DEBUG) || defined(NSK_MEMDEBUG) )
char * debugLevel = getenv("MEMDEBUG");
if (debugLevel)
@@ -915,7 +915,6 @@ NAMemory::NAMemory(const char * name, NAHeap * parent, size_t blockSize,
totalSize_(0),
blockCnt_(0),
thBlockCnt_(DEFAULT_THRESHOLD_BLOCK_COUNT),
- segGlobals_(0),
memoryList_(NULL),
lastListEntry_(NULL),
nextEntry_(NULL),
@@ -972,7 +971,6 @@ NAMemory::NAMemory(const char * name, NAMemoryType type, size_t blockSize,
totalSize_(0),
blockCnt_(0),
thBlockCnt_(DEFAULT_THRESHOLD_BLOCK_COUNT),
- segGlobals_(0),
memoryList_(NULL),
lastListEntry_(NULL),
nextEntry_(NULL),
@@ -1008,13 +1006,10 @@ NAMemory::NAMemory(const char * name, NAMemoryType type, size_t blockSize,
}
NAMemory::NAMemory(const char * name,
- SEG_ID extFirstSegId,
- void * extFirstSegStart,
- off_t extFirstSegOffset,
- size_t extFirstSegLen,
- size_t extFirstSegMaxLen,
- NASegGlobals *segGlobals,
- Lng32 extMaxSecSegCount)
+ SEG_ID segmentId,
+ void * baseAddr,
+ off_t heapStartOffset,
+ size_t maxSize)
:
type_(EXECUTOR_MEMORY),
parent_(NULL),
@@ -1027,7 +1022,6 @@ NAMemory::NAMemory(const char * name,
totalSize_(0),
blockCnt_(0),
thBlockCnt_(DEFAULT_THRESHOLD_BLOCK_COUNT),
- segGlobals_(segGlobals),
memoryList_(NULL),
lastListEntry_(NULL),
nextEntry_(NULL),
@@ -1042,13 +1036,6 @@ NAMemory::NAMemory(const char * name,
, maxVmSize_(0l)
, sharedMemory_(FALSE)
{
- segGlobals_->setFirstSegInfo(extFirstSegId,
- extFirstSegStart,
- extFirstSegOffset,
- extFirstSegLen,
- extFirstSegMaxLen);
- segGlobals_->setMaxSecSegCount(extMaxSecSegCount);
-
// call setType to initialize the values of all the sizes
setType(type_, 0);
@@ -1068,18 +1055,19 @@ NAMemory::NAMemory(const char * name,
// space in the segment, then initialize the firstBlk_ within
// the passed in memory. The NAHeap constructor will initialize
// the top NAHeapFragment.
- if (extFirstSegStart != NULL) {
+ if (baseAddr != NULL) {
blockCnt_ = 1;
- size_t tsize = extFirstSegLen - extFirstSegOffset - BLOCK_OVERHEAD;
+ size_t tsize = maxSize - heapStartOffset - BLOCK_OVERHEAD;
if (tsize > (8 * sizeof(size_t))) {
- firstBlk_ = (NABlock*)((char*)extFirstSegStart + extFirstSegOffset);
- firstBlk_->size_ = extFirstSegLen - extFirstSegOffset;
+ firstBlk_ = (NABlock*)((char*)baseAddr + heapStartOffset);
+ firstBlk_->size_ = maxSize - heapStartOffset;
firstBlk_->sflags_ = NABlock::EXTERN_BIT;
firstBlk_->next_ = NULL;
- firstBlk_->segmentId_ = extFirstSegId;
+ firstBlk_->segmentId_ = segmentId;
+ totalSize_ = initialSize_ = maximumSize_ = firstBlk_->size_;
}
}
-
+ upperLimit_ = maxSize;
// need to initialize an NAStringRef object "on top" of the array
// (don't touch this unless you know what you're doing!)
NAStringRef * tmp =
@@ -1087,6 +1075,7 @@ NAMemory::NAMemory(const char * name,
NAStringRef (NAStringRef::NULL_CTOR, this) ;
}
+
void NAMemory::reInitialize()
{
// delete all blocks allocated for this heap and re-set the heap
@@ -1131,9 +1120,7 @@ void NAMemory::reInitialize()
// This code provides mutual exclusion for the runtime stats shared
// memory segment.
short semRetcode = 0;
- if (parent_->getType() == EXECUTOR_MEMORY &&
- parent_->getSegGlobals() != NULL &&
- parent_->getSegGlobals()->getFirstSegId() == getStatsSegmentId()) {
+ if (parent_->getType() == EXECUTOR_MEMORY && getSharedMemory()) {
semRetcode = getRTSSemaphore();
}
while (p) {
@@ -1174,7 +1161,7 @@ void NAMemory::reInitialize()
firstBlk_ = externSegment;
firstBlk_->next_ = NULL;
blockCnt_ = 1;
- totalSize_ = firstBlk_->size_ - segGlobals_->getFirstSegOffset();
+ totalSize_ = firstBlk_->size_ ;
}
// If this is an NAHeap, then call reInitializeHeap() to reinitialize
@@ -1207,24 +1194,9 @@ void NAMemory::setType(NAMemoryType type, Lng32 blockSize)
switch(type_) {
case EXECUTOR_MEMORY:
- // input parameter blockSize is ignored
- // this is an NAMemory using flat segments on NSK
- if (segGlobals_ && segGlobals_->getFirstSegStart())
- {
- // take the segment size and max. size from the externally
- // provided // segment
- totalSize_ = initialSize_ = segGlobals_->getFirstSegLen()
- - segGlobals_->getFirstSegOffset();
- maximumSize_ = segGlobals_->getFirstSegMaxLen()
- - segGlobals_->getFirstSegOffset();
- }
- else
- {
- initialSize_ = DEFAULT_NT_HEAP_INIT_SIZE ;
- maximumSize_ = DEFAULT_NT_HEAP_MAX_SIZE ; // no maximum
- incrementSize_ = DEFAULT_NT_HEAP_INCR_SIZE ;
- }
-
+ initialSize_ = DEFAULT_NT_HEAP_INIT_SIZE ;
+ maximumSize_ = DEFAULT_NT_HEAP_MAX_SIZE ; // no maximum
+ incrementSize_ = DEFAULT_NT_HEAP_INCR_SIZE ;
break;
case SYSTEM_MEMORY:
@@ -1972,9 +1944,7 @@ NAHeap::deallocateFreeBlock(NAHeapFragment *p)
HEAPLOG_OFF() // no recursive logging.
// This code provides mutual exclusion for the runtime stats shared
// memory segment.
- if (parent_->getType() == EXECUTOR_MEMORY &&
- parent_->getSegGlobals() != NULL &&
- parent_->getSegGlobals()->getFirstSegId() == getStatsSegmentId()) {
+ if (parent_->getType() == EXECUTOR_MEMORY && getSharedMemory()) {
short retcode = getRTSSemaphore();
parent_->deallocateHeapMemory((void*)curr);
if (retcode == 1)
@@ -2218,7 +2188,7 @@ NAHeap::allocateBlock(size_t size, NABoolean failureIsFatal)
// This could be either Global Executor Memory or Stats Globals
// Don't add a block if Stats Globals!
- if (getSegGlobals()->getFirstSegId() == getStatsSegmentId())
+ if (getSharedMemory())
return NULL;
// Try to allocate the NABlock using mmap(). If it succeeds return the
@@ -2276,9 +2246,7 @@ NAHeap::allocateBlock(size_t size, NABoolean failureIsFatal)
// semaphore is obtained in allocateHeapMemory or deallocateHeapMemory
// for both global and process stats heap. But leaving it now
// since it won't hurt other than extra cpu cycles
- if (getSharedMemory() || (parent_->getType() == EXECUTOR_MEMORY &&
- parent_->getSegGlobals() != NULL &&
- parent_->getSegGlobals()->getFirstSegId() == getStatsSegmentId())) {
+ if (getSharedMemory()) {
short retcode = getRTSSemaphore();
p = (NABlock*)parent_->allocateHeapMemory(blockSize, FALSE);
@@ -2455,146 +2423,6 @@ NABoolean NAMemory::checkSize(size_t size, NABoolean failureIsFatal)
}
// ---------------------------------------------------------------------------
-// NASegGlobals methods
-// ---------------------------------------------------------------------------
-void NASegGlobals::setFirstSegInfo(SEG_ID firstSegId,
- void * firstSegStart,
- off_t firstSegOffset,
- size_t firstSegLen,
- size_t firstSegMaxLen)
-{
- firstSegId_ = firstSegId;
- firstSegStart_ = firstSegStart;
- firstSegOffset_ = firstSegOffset;
- firstSegLen_ = firstSegLen;
- firstSegMaxLen_ = firstSegMaxLen;
- addedSegCount_ = 0;
- lowWaterMark_ = firstSegStart;
- highWaterMark_ = (void *) ((char *)firstSegStart + firstSegLen);
- for (Int32 i = 0; i < NA_MAX_SECONDARY_SEGS; i++)
- {
- addedSegId_[i] = 0;
- startAddresses_[i] = 0;
- lengths_[i] = 0;
- }
-}
-
-Int32 NASegGlobals::addSegId(short segId, void *start, size_t len)
-{
- if (addedSegCount_ == NA_MAX_SECONDARY_SEGS)
- {
- return 0;
- }
- else
- {
- Int32 segOffset = (Int32)(segId - firstSegId_ - 1);
- addedSegId_[segOffset] = segId;
- startAddresses_[segOffset] = start;
- lengths_[segOffset] = len;
- addedSegCount_++;
- }
-
- void *end = (void *) ((char *)start + len);
- if (lowWaterMark_ > start)
- lowWaterMark_ = start;
- if (highWaterMark_ < end)
- highWaterMark_ = end;
- return 1;
-}
-
-void NASegGlobals::deleteSegId(short segId)
-{
- Lng32 addedSegCount, i;
- void *start, *end;
- Int32 segOffset = (Int32)(segId - firstSegId_ -1);
- assert (--addedSegCount_ >= 0);
- addedSegId_[segOffset] = 0;
- startAddresses_[segOffset] = 0;
- lengths_[segOffset] = 0;
- lowWaterMark_ = firstSegStart_;
- highWaterMark_ = (void *) ((char *)firstSegStart_ + firstSegLen_);
- for (addedSegCount = 0, i = 0; addedSegCount < addedSegCount_; i++) {
- if (addedSegId_[i] != 0)
- {
- addedSegCount += 1;
- start = startAddresses_[i];
- end = (void *) ((char *)start + lengths_[i]);
- if (lowWaterMark_ > start)
- lowWaterMark_ = start;
- if (highWaterMark_ < end)
- highWaterMark_ = end;
- }
- }
-}
-
-void NASegGlobals::resizeSeg(short segId, void *start, size_t newLen)
-{
- Lng32 addedSegCount, i;
- void *end = (void *) ((char *)start + newLen);
- if (lowWaterMark_ > start)
- lowWaterMark_ = start;
- if (highWaterMark_ < end)
- highWaterMark_ = end;
-
- if (segId == firstSegId_)
- {
- firstSegLen_ = newLen;
- }
- else
- {
- for (addedSegCount = 0, i = 0; addedSegCount < addedSegCount_; i++)
- {
- if (addedSegId_[i] != 0)
- {
- addedSegCount += 1;
- if (segId == addedSegId_[i])
- {
- lengths_[i] = newLen;
- return;
- }
- }
- }
- }
-}
-
-NABoolean NASegGlobals::overlaps(void *start, size_t len) const
-{
- // check the easy things first, performance of this method is critical
- // because it is used in boundscheck routines that are frequently called
- Lng32 addedSegCount, i;
- void *end = (void *) ((char *)start + len);
-
- // sanity check, does the provided memory range wrap around the end
- // of the 32 bit addressing range (refuse to deal with such ranges
- // and just return an overlap)
- if (start > end)
- return TRUE;
-
- // quick check, using low and high water marks
- if (end <= lowWaterMark_ || start >= highWaterMark_)
- return FALSE;
-
- // quick check won't work, loop over each executor segment separately
- // in case the memory range lies between two executor segments.
- for (addedSegCount = 0, i = 0; addedSegCount < addedSegCount_; i++)
- {
- if (addedSegId_[i] != 0)
- {
- addedSegCount += 1;
- void *startSeg = startAddresses_[i];
- void *endSeg = (void *) ((char *)startSeg + lengths_[i]);
-
- // if the start address of the segment or its last byte lie
- // in the range then there is an overlap
- if (start <= startSeg && end > startSeg ||
- start < endSeg && end >= endSeg)
- return TRUE;
- }
- }
- return FALSE;
-}
-
-// ---------------------------------------------------------------------------
// NAHeap methods
// ---------------------------------------------------------------------------
#ifndef MUSE
@@ -2623,7 +2451,7 @@ NAHeap::NAHeap()
NAHeap::NAHeap(const char * name,
NAHeap * parent,
Lng32 blockSize,
- Lng32 upperLimit)
+ size_t upperLimit)
: NAMemory(name, parent, blockSize, upperLimit),
smallmap_(0),
treemap_(0),
@@ -2653,7 +2481,7 @@ NAHeap::NAHeap(const char * name,
NAHeap::NAHeap(const char * name,
NAMemoryType type,
Lng32 blockSize,
- Lng32 upperLimit)
+ size_t upperLimit)
: NAMemory(name, type, blockSize, upperLimit),
smallmap_(0),
treemap_(0),
@@ -2675,17 +2503,51 @@ NAHeap::NAHeap(const char * name,
#endif // _DEBUG
}
-NAHeap::NAHeap(const char * name,
- SEG_ID extFirstSegId,
- void * extFirstSegStart,
- Lng32 extFirstSegOffset,
- Lng32 extFirstSegLen,
- Lng32 extFirstSegMaxLen,
- NASegGlobals *segGlobals,
- Lng32 extMaxSecSegCount)
- : NAMemory(name, extFirstSegId, extFirstSegStart, extFirstSegOffset,
- extFirstSegLen, extFirstSegMaxLen, segGlobals,
- extMaxSecSegCount),
+NAHeap::NAHeap(const char * name)
+ : NAMemory(name),
+ smallmap_(0),
+ treemap_(0),
+ dvsize_(0),
+ topsize_(0),
+ least_addr_(0),
+ dv_(NULL),
+ top_(NULL),
+ errCallback_(NULL)
+{
+ initBins();
+ derivedClass_ = NAHEAP_CLASS;
+
+ if (firstBlk_) {
+ initTop(firstBlk_);
+ least_addr_ = (char*)firstBlk_;
+ }
+
+ if (deallocTraceArray == 0)
+ {
+ char *deallocTraceEnvvar = getenv("EXE_DEALLOC_MEM_TRACE");
+ if (deallocTraceEnvvar != NULL)
+ {
+ deallocTraceArray =
+ (DeallocTraceEntry (*) [deallocTraceEntries])malloc(sizeof(DeallocTraceEntry) * deallocTraceEntries);
+ memset((void *)deallocTraceArray, '\0', sizeof(DeallocTraceEntry) * deallocTraceEntries);
+ }
+ }
+
+ threadSafe_ = false;
+ memset(&mutex_, '\0', sizeof(mutex_));
+
+#ifdef _DEBUG
+ setAllocTrace();
+#endif // _DEBUG
+}
+
+// Constructor that imposes the NAHeap struture on already allocated memory
+NAHeap::NAHeap(const char * name,
+ SEG_ID segmentId,
+ void * baseAddr,
+ off_t heapStartOffset,
+ size_t maxSize)
+ : NAMemory(name, segmentId, baseAddr, heapStartOffset, maxSize),
smallmap_(0),
treemap_(0),
dvsize_(0),
@@ -2806,8 +2668,6 @@ void NAHeap::reInitializeHeap()
// That code frees the NABlocks and will reinitialize the firstBlk_
// if it was allocated externally.
if (firstBlk_ != NULL) {
- assert((char*)firstBlk_ == (char*)segGlobals_->getFirstSegStart()
- + segGlobals_->getFirstSegOffset());
least_addr_ = (char*)firstBlk_;
initTop(firstBlk_);
}
@@ -2902,9 +2762,7 @@ void * NAHeap::allocateHeapMemory(size_t userSize, NABoolean failureIsFatal)
// getSharedMemory() check alone is enough since it will return for both
// global and process stats heap. Leaving the rest of the condition here
//
- if (getSharedMemory() || (parent_ && parent_->getType() == EXECUTOR_MEMORY &&
- parent_->getSegGlobals() != NULL &&
- parent_->getSegGlobals()->getFirstSegId() == getStatsSegmentId()))
+ if (getSharedMemory())
{
// Check if you are within semaphore
if (! checkIfRTSSemaphoreLocked())
@@ -2949,10 +2807,7 @@ void * NAHeap::allocateHeapMemory(size_t userSize, NABoolean failureIsFatal)
// then allocate a NABlock using mmap(). This prevents any changes
// to the "top_" fragment and allows the memory used by the request to
// be returned to the operating system when the user frees it.
- if (additionalUserSize >= MIN_MMAP_ALLOC_SIZE && parent_ == NULL
- && (getSegGlobals() == NULL ||
- getSegGlobals()->getFirstSegId() != getStatsSegmentId())
- )
+ if (additionalUserSize >= MIN_MMAP_ALLOC_SIZE && parent_ == NULL && (! getSharedMemory()))
{
nb = PAD_REQUEST(additionalUserSize);
@@ -3231,9 +3086,7 @@ void NAHeap::deallocateHeapMemory(void* addr)
NAMutex mutex(threadSafe_, &mutex_);
- if (getSharedMemory() || (parent_ && parent_->getType() == EXECUTOR_MEMORY &&
- parent_->getSegGlobals() != NULL &&
- parent_->getSegGlobals()->getFirstSegId() == getStatsSegmentId()))
+ if (getSharedMemory())
{
// Check if you are within semaphore
if (! checkIfRTSSemaphoreLocked())
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/common/NAMemory.h
----------------------------------------------------------------------
diff --git a/core/sql/common/NAMemory.h b/core/sql/common/NAMemory.h
index 78ad279..009ec1a 100644
--- a/core/sql/common/NAMemory.h
+++ b/core/sql/common/NAMemory.h
@@ -73,7 +73,6 @@ typedef uid_t SEG_ID;
// contents of this file:
class NAMemory;
-class NASegGlobals;
class NABlock;
class NAHeap;
class NAHeapFragment;
@@ -107,84 +106,6 @@ private:
// 17 - all objects > 2 MB
};
-////////////////////////////////////////////////////////////////////////////
-// One NASegGlobals object exists in the executor as a member variable
-// of CliGlobals. Information about the first executor flat segment, as well
-// as the address of the NASegGlobals object in which the information is
-// stored, is passed as arguments to the setFirstSegInfo function, and used
-// by NAMEMORY::allocateBlock. addSegId is called by NAMemory::allocateBlock
-// to maintain an array of secondary (allocated after the first) flat segment
-// ids. getSegId is called on MIPS by switchToPriv and switchToNonPriv to
-// obtain the flat segment ids to hide and reveal. On Yosemite, the
-// segments are not hidden and revealed.
-////////////////////////////////////////////////////////////////////////////
-class NASegGlobals {
-public:
- inline short getSegId(Lng32 &index) const
- {
- Lng32 i, addedSegCount;
- for (i = 0, addedSegCount = 0; addedSegCount < addedSegCount_; i++)
- {
- if (addedSegId_[i] != 0)
- {
- addedSegCount += 1;
- if (i >= index)
- {
- index = i;
- return addedSegId_[i];
- }
- }
- }
- return 0;
- }
-
- short getSegInfo(Lng32 index, void **startAddr) const
- {
- *startAddr = startAddresses_[index];
- return addedSegId_[index];
- }
- void setFirstSegInfo(
- SEG_ID firstSegId,
- void *firstSegStart,
- off_t firstSegOffset,
- size_t firstSegLen,
- size_t firstSegMaxLen);
- void setMaxSecSegCount(Lng32 maxSecSegCount)
- { maxSecSegCount_ = maxSecSegCount; }
- NABoolean reachedMaxSegCnt() const
- { return addedSegCount_ >= maxSecSegCount_; }
- Lng32 addSegId(short segId, void *start, size_t len);
- void deleteSegId(short segId);
- SEG_ID getFirstSegId() const { return firstSegId_; }
- void * getFirstSegStart() const { return firstSegStart_; }
- off_t getFirstSegOffset() const { return firstSegOffset_; }
- size_t getFirstSegLen() const { return firstSegLen_; }
- size_t getFirstSegMaxLen() const { return firstSegMaxLen_; }
- void resizeSeg(short segId, void *start, size_t newLen);
-
- // check whether a specified range of memory overlaps any of the segments
- NABoolean overlaps(void *start, size_t len) const;
-
- enum { NA_MAX_SECONDARY_SEGS=28 }; // Seg IDs 2111 - 2138
-private:
- SEG_ID firstSegId_;
- void *firstSegStart_; // starting addr of segment
- off_t firstSegOffset_; // offset of free space in the segment
- size_t firstSegLen_; // length of external segment
- size_t firstSegMaxLen_; // max. len the segment can be resized to
- Lng32 addedSegCount_; // number of additional segments
- Lng32 maxSecSegCount_; // Maximum number of secondary segments
- short addedSegId_ [NA_MAX_SECONDARY_SEGS]; // array of secondary seg ids
- void *startAddresses_ [NA_MAX_SECONDARY_SEGS]; // start addresses of segs
- size_t lengths_[NA_MAX_SECONDARY_SEGS]; // lengths of segments
-
- // total range of memory spanned by the segments (may have other
- // things or holes between those water marks)
- void *lowWaterMark_;
- void *highWaterMark_;
-};
-
-
////////////////////////////////////////////////////////////////////////////
// A NABlock is the basic allocation unit, i.e., we always request Blocks
@@ -263,15 +184,6 @@ public:
// time. Before a memory can be used, the type_ has to be set via
// setType() or setParent()
//
- // The number of NAMemory objects of NAMemoryType SYSTEM_MEMORY or IPC_MEMORY
- // is currently restricted to one because the assignment of flat segment ids
- // (NSK) for SYSTEM/IPC_MEMORY is not managed globally. If one such object
- // already exists, an assertion failure will occur following an attempt to
- // to allocate a segment with an id that was previously used. This is not
- // a problem because only the compiler's main statement heap resides in
- // SYSTEM_MEMORY, and only ESPs use IPC_Memory. If needed in the future,
- // multiple SYSTEM/IPC _MEMORY heaps could be supported by keeping track of
- // SYSTEM_MEMORY/IPC segment ids in the NASegGlobals object.
enum NAMemoryType {
NO_MEMORY_TYPE = 0,
EXECUTOR_MEMORY = 2,
@@ -304,22 +216,18 @@ public:
NAMemory(const char * name, NAMemoryType type, size_t blockSize,
size_t upperLimit);
- // an NAMemory of type EXECUTOR_MEMORY that uses a first flat segment
- // that is allocated by the caller (on NSK, uses malloc on NT and ignores
- // the parameters after the first one)
- NAMemory(const char * name,
- SEG_ID extFirstSegId,
- void * extFirstSegStart,
- off_t extFirstSegOffset,
- size_t extFirstSegLen,
- size_t extFirstSegMaxLen,
- NASegGlobals * segGlobals,
- Lng32 extMaxSecSegCount = NASegGlobals::NA_MAX_SECONDARY_SEGS);
-
// DERIVED_MEMORY
NAMemory(const char * name, NAHeap * parent, size_t blockSize,
size_t upperLimit);
+ // an NAMemory of type EXECUTOR_MEMORY that imposes the NAMemory struture
+ // on already allocated memory
+ NAMemory(const char * name,
+ SEG_ID segmentId,
+ void * baseAddr,
+ off_t heapStartOffset,
+ size_t maxSize);
+
~NAMemory();
void reInitialize();
@@ -374,7 +282,6 @@ public:
inline void resetIntervalWaterMark() { intervalWaterMark_ = allocSize_;};
- inline NASegGlobals * getSegGlobals() { return segGlobals_; }
char *getName() { return name_; }
NAMemoryType getType() { return type_; }
@@ -451,8 +358,6 @@ private:
// that was allocated before this memory
// was created (allows to put the memory
// itself and other info into the segment)
- NASegGlobals *segGlobals_; // Executor flat segment globals object
-
NAMemory *memoryList_; // list of memory directly derived from this
NAMemory *lastListEntry_; // last entry of this list
NAMemory *nextEntry_; // pointer if this memory is on a memoryList_
@@ -531,17 +436,19 @@ public:
NAHeap(const char * name,
NAHeap * parent,
Lng32 blockSize = 0,
- Lng32 upperLimit =0);
- NAHeap(const char * name, NAMemoryType type = DERIVED_FROM_SYS_HEAP,
- Lng32 blockSize = 0, Lng32 upperLimit = 0);
- NAHeap(const char * name,
- SEG_ID extFirstSegId,
- void * extFirstSegStart,
- Lng32 extFirstSegOffset,
- Lng32 extFirstSegLen,
- Lng32 extFirstSegMaxLen,
- NASegGlobals *segGlobals,
- Lng32 extMaxSecSegCount = NASegGlobals::NA_MAX_SECONDARY_SEGS);
+ size_t upperLimit =0);
+ NAHeap(const char * name, NAMemoryType type,
+ Lng32 blockSize = 0, size_t upperLimit = 0);
+
+ // Constructor that imposes the NAHeap struture on already allocated memory
+ NAHeap(const char * name,
+ SEG_ID segmentId,
+ void * baseAddr,
+ off_t heapStartOffset,
+ size_t maxSize);
+
+ NAHeap(const char * name);
+
~NAHeap();
void destroy();
void reInitializeHeap();
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/runtimestats/SqlStats.cpp
----------------------------------------------------------------------
diff --git a/core/sql/runtimestats/SqlStats.cpp b/core/sql/runtimestats/SqlStats.cpp
index 4e5a4a7..0b64e02 100644
--- a/core/sql/runtimestats/SqlStats.cpp
+++ b/core/sql/runtimestats/SqlStats.cpp
@@ -64,10 +64,7 @@ StatsGlobals::StatsGlobals(void *baseAddr, short envType, Lng32 maxSegSize)
getStatsSegmentId(),
baseAddr,
((sizeof(StatsGlobals)+16-1)/16)*16,
- maxSegSize,
- maxSegSize,
- &segGlobals_,
- 0), // Zero secondary segments
+ maxSegSize),
recentSikeys_(NULL),
newestRevokeTimestamp_(0), // all new compilers are current.
statsArray_(NULL)
http://git-wip-us.apache.org/repos/asf/trafodion/blob/806e93b2/core/sql/runtimestats/SqlStats.h
----------------------------------------------------------------------
diff --git a/core/sql/runtimestats/SqlStats.h b/core/sql/runtimestats/SqlStats.h
index acb75fc..0377c3d 100644
--- a/core/sql/runtimestats/SqlStats.h
+++ b/core/sql/runtimestats/SqlStats.h
@@ -507,7 +507,6 @@ private:
short cpu_;
pid_t semPid_; // Pid of the process that holds semaphore lock - This element is used for debugging purpose only
Int64 semPidCreateTime_; // Creation timestamp - pid recycle workaround.
- NASegGlobals segGlobals_;
NAHeap statsHeap_;
NABoolean isSscpInitialized_;
short rtsEnvType_; // 1 - Global Environment
[2/2] trafodion git commit: Merge PR 1389 [TRAFOFION-2731]
CodeCleanup: Removed the obsolete code in NAMemory and CliGlobals classes
Posted by se...@apache.org.
Merge PR 1389 [TRAFOFION-2731] CodeCleanup: Removed the obsolete code in NAMemory and CliGlobals classes
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/8b6a6bbe
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/8b6a6bbe
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/8b6a6bbe
Branch: refs/heads/master
Commit: 8b6a6bbeb0e7ea77fee09cfc0ac8fd74ca1913a0
Parents: 279ef7b 806e93b
Author: selvaganesang <se...@apache.org>
Authored: Fri Jan 12 00:35:37 2018 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Fri Jan 12 00:35:57 2018 +0000
----------------------------------------------------------------------
core/sql/arkcmp/CmpContext.cpp | 2 +-
core/sql/arkcmp/CmpStatement.cpp | 2 +-
core/sql/cli/Globals.cpp | 68 +-------
core/sql/cli/Globals.h | 71 --------
core/sql/common/NAAssert.h | 7 -
core/sql/common/NAMemory.cpp | 291 ++++++++------------------------
core/sql/common/NAMemory.h | 135 +++------------
core/sql/runtimestats/SqlStats.cpp | 5 +-
core/sql/runtimestats/SqlStats.h | 1 -
9 files changed, 97 insertions(+), 485 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8b6a6bbe/core/sql/arkcmp/CmpContext.cpp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8b6a6bbe/core/sql/arkcmp/CmpStatement.cpp
----------------------------------------------------------------------