Bugzilla defect #141186. Allow an application to exceeded our hardcoded cache limits when they are setting a hard limit.

git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@244 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
dsandersoremutah
2006-04-03 15:30:29 +00:00
parent 4f6e5dc404
commit 0edea58de2

View File

@@ -96,6 +96,7 @@ FSTATIC void flmUnlockSysData( void);
FSTATIC RCODE flmSetCacheLimits(
FLMUINT uiNewTotalCacheSize,
FLMBOOL bForceLimit,
FLMBOOL bPreallocateCache);
FSTATIC void flmFreeEvent(
@@ -1012,13 +1013,14 @@ Desc: This routine sets the limits for record cache and block cache - dividing
****************************************************************************/
FSTATIC RCODE flmSetCacheLimits(
FLMUINT uiNewTotalCacheSize,
FLMBOOL bForceLimit,
FLMBOOL bPreallocateCache)
{
RCODE rc = FERR_OK;
FLMUINT uiNewBlockCacheSize;
FLMBOOL bResizeAfterConfig = FALSE;
if( uiNewTotalCacheSize > FLM_MAX_CACHE_SIZE)
if( !bForceLimit && uiNewTotalCacheSize > FLM_MAX_CACHE_SIZE)
{
uiNewTotalCacheSize = FLM_MAX_CACHE_SIZE;
}
@@ -1124,7 +1126,7 @@ FLMEXP RCODE FLMAPI FlmSetDynamicMemoryLimit(
gv_FlmSysData.uiCacheAdjustMinToLeave, TRUE,
gv_FlmSysData.SCacheMgr.Usage.uiTotalBytesAllocated +
gv_FlmSysData.RCacheMgr.pRCacheAlloc->getTotalBytesAllocated());
rc = flmSetCacheLimits( uiCacheBytes, FALSE);
rc = flmSetCacheLimits( uiCacheBytes, FALSE, FALSE);
f_mutexUnlock( gv_FlmSysData.RCacheMgr.hMutex);
f_mutexUnlock( gv_FlmSysData.hShareMutex);
return( rc);
@@ -1162,12 +1164,12 @@ FLMEXP RCODE FLMAPI FlmSetHardMemoryLimit(
bPercentOfAvail,
gv_FlmSysData.SCacheMgr.Usage.uiTotalBytesAllocated +
gv_FlmSysData.RCacheMgr.pRCacheAlloc->getTotalBytesAllocated());
rc = flmSetCacheLimits( uiCacheBytes, bPreallocate);
rc = flmSetCacheLimits( uiCacheBytes, FALSE, bPreallocate);
#endif
}
else
{
rc = flmSetCacheLimits( uiMax, bPreallocate);
rc = flmSetCacheLimits( uiMax, TRUE, bPreallocate);
}
f_mutexUnlock( gv_FlmSysData.RCacheMgr.hMutex);
f_mutexUnlock( gv_FlmSysData.hShareMutex);
@@ -1533,7 +1535,7 @@ FLMEXP RCODE FLMAPI FlmConfig(
f_mutexLock( gv_FlmSysData.hShareMutex);
f_mutexLock( gv_FlmSysData.RCacheMgr.hMutex);
gv_FlmSysData.bDynamicCacheAdjust = FALSE;
rc = flmSetCacheLimits( (FLMUINT)Value1, (FLMBOOL)Value2);
rc = flmSetCacheLimits( (FLMUINT)Value1, TRUE, (FLMBOOL)Value2);
f_mutexUnlock( gv_FlmSysData.RCacheMgr.hMutex);
f_mutexUnlock( gv_FlmSysData.hShareMutex);
break;
@@ -1552,6 +1554,7 @@ FLMEXP RCODE FLMAPI FlmConfig(
rc = flmSetCacheLimits(
gv_FlmSysData.SCacheMgr.Usage.uiMaxBytes +
gv_FlmSysData.RCacheMgr.Usage.uiMaxBytes,
gv_FlmSysData.bDynamicCacheAdjust ? FALSE : TRUE,
gv_FlmSysData.bCachePreallocated);
f_mutexUnlock( gv_FlmSysData.RCacheMgr.hMutex);
@@ -3581,7 +3584,7 @@ RCODE flmSystemMonitor(
gv_FlmSysData.uiCacheAdjustMinToLeave, TRUE,
gv_FlmSysData.SCacheMgr.Usage.uiTotalBytesAllocated +
gv_FlmSysData.RCacheMgr.pRCacheAlloc->getTotalBytesAllocated());
(void)flmSetCacheLimits( uiCacheBytes, FALSE);
(void)flmSetCacheLimits( uiCacheBytes, FALSE, FALSE);
}
f_mutexUnlock( gv_FlmSysData.hShareMutex);
f_mutexUnlock( gv_FlmSysData.RCacheMgr.hMutex);