mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged V3.2 to HEAD
16937: Merged V3.2 to V3.1 16891: Merged V2.2 to V3.1 16772: Fix unreported bugs found by new code (ArgumentHelper) 16773: AlfrescoJobExecutor thread is now a 'daemon' thread 16774: Increases sizes of 'parent assocs' and 'NodeRef-ID' caches 16775: Session L1 cache size improvements 16777: Transactional cache issues warning when it overflows 16779: Fixed ETHREEOH-2657: Performance: slow answers to directory listings 16797: Set AVM L1 Hibernate object retention to 0 16829: Read vs Write split in Session size management 16834: Build fix for SessionSizeManagementTest ___________________________________________________________________ Modified: svn:mergeinfo Merged /alfresco/BRANCHES/V2.2:r16772-16775,16777,16779,16797,16829,16834 Merged /alfresco/BRANCHES/V3.1:r16891 Merged /alfresco/BRANCHES/V3.2:r16937 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17018 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -405,6 +405,27 @@ public class TransactionalCache<K extends Serializable, V extends Object>
|
||||
" value: " + value);
|
||||
}
|
||||
}
|
||||
// we have a transaction - add the item into the updated cache for this transaction
|
||||
// are we in an overflow condition?
|
||||
if (txnData.updatedItemsCache.getMemoryStoreSize() >= maxCacheSize)
|
||||
{
|
||||
// overflow about to occur or has occured - we can only guarantee non-stale
|
||||
// data by clearing the shared cache after the transaction. Also, the
|
||||
// shared cache needs to be ignored for the rest of the transaction.
|
||||
txnData.isClearOn = true;
|
||||
if (!txnData.haveIssuedFullWarning && logger.isWarnEnabled())
|
||||
{
|
||||
logger.warn("Transactional update cache '" + name + "' is full (" + maxCacheSize + ").");
|
||||
txnData.haveIssuedFullWarning = true;
|
||||
}
|
||||
}
|
||||
CacheBucket<V> bucket = null;
|
||||
if (sharedCache.contains(key))
|
||||
{
|
||||
V existingValue = sharedCache.get(key);
|
||||
// The value needs to be kept for later checks
|
||||
bucket = new UpdateCacheBucket<V>(existingValue, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// we have an active transaction - add the item into the updated cache for this transaction
|
||||
@@ -416,7 +437,6 @@ public class TransactionalCache<K extends Serializable, V extends Object>
|
||||
// shared cache needs to be ignored for the rest of the transaction.
|
||||
txnData.isClearOn = true;
|
||||
}
|
||||
CacheBucket<V> bucket = null;
|
||||
if (sharedCache.contains(key))
|
||||
{
|
||||
V existingValue = sharedCache.get(key);
|
||||
@@ -484,7 +504,15 @@ public class TransactionalCache<K extends Serializable, V extends Object>
|
||||
// is the shared cache going to be cleared?
|
||||
if (txnData.isClearOn)
|
||||
{
|
||||
// don't store removals if we're just going to clear it all out later
|
||||
// overflow about to occur or has occured - we can only guarantee non-stale
|
||||
// data by clearing the shared cache after the transaction. Also, the
|
||||
// shared cache needs to be ignored for the rest of the transaction.
|
||||
txnData.isClearOn = true;
|
||||
if (!txnData.haveIssuedFullWarning && logger.isWarnEnabled())
|
||||
{
|
||||
logger.warn("Transactional update cache '" + name + "' is full (" + maxCacheSize + ").");
|
||||
txnData.haveIssuedFullWarning = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -806,6 +834,7 @@ public class TransactionalCache<K extends Serializable, V extends Object>
|
||||
{
|
||||
private Cache updatedItemsCache;
|
||||
private Cache removedItemsCache;
|
||||
private boolean haveIssuedFullWarning;
|
||||
private boolean isClearOn;
|
||||
private boolean isClosed;
|
||||
}
|
||||
|
Reference in New Issue
Block a user