mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Merged 1.4 to HEAD
svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4421 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4462 . svn resolved root\projects\repository\source\java\org\alfresco\repo\model\filefolder\FileFolderPerformanceTester.java svn revert root\projects\repository\config\alfresco\version.properties svn resolved root\projects\3rd-party\.classpath git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4661 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -39,11 +39,14 @@
|
|||||||
<ref bean="internalEHCacheManager" />
|
<ref bean="internalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="cacheName">
|
<property name="cacheName">
|
||||||
<value>userToAuthorityCache</value>
|
<value>org.alfresco.userToAuthorityCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxElementsInMemory">
|
<property name="maxElementsInMemory">
|
||||||
<value>10000</value> <!-- approx 2MB memory required -->
|
<value>10000</value> <!-- approx 2MB memory required -->
|
||||||
</property>
|
</property>
|
||||||
|
<property name="eternal">
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
<property name="overflowToDisk">
|
<property name="overflowToDisk">
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
@@ -61,10 +64,10 @@
|
|||||||
<ref bean="transactionalEHCacheManager" />
|
<ref bean="transactionalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="name">
|
<property name="name">
|
||||||
<value>userToAuthorityTransactionalCache</value>
|
<value>org.alfresco.userToAuthorityTransactionalCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxCacheSize">
|
<property name="maxCacheSize">
|
||||||
<value>5000</value>
|
<value>100</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
@@ -81,11 +84,14 @@
|
|||||||
<ref bean="internalEHCacheManager" />
|
<ref bean="internalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="cacheName">
|
<property name="cacheName">
|
||||||
<value>permissionsAccessCache</value>
|
<value>org.alfresco.permissionsAccessCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxElementsInMemory">
|
<property name="maxElementsInMemory">
|
||||||
<value>50000</value> <!-- approx 20MB memory required -->
|
<value>50000</value> <!-- approx 20MB memory required -->
|
||||||
</property>
|
</property>
|
||||||
|
<property name="eternal">
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
<property name="overflowToDisk">
|
<property name="overflowToDisk">
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
@@ -104,10 +110,10 @@
|
|||||||
</property>
|
</property>
|
||||||
<!-- Eh cache area -->
|
<!-- Eh cache area -->
|
||||||
<property name="name">
|
<property name="name">
|
||||||
<value>permissionsAccessTransactionalCache</value>
|
<value>org.alfresco.permissionsAccessTransactionalCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxCacheSize">
|
<property name="maxCacheSize">
|
||||||
<value>5000</value>
|
<value>10000</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
@@ -124,11 +130,14 @@
|
|||||||
<ref bean="internalEHCacheManager" />
|
<ref bean="internalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="cacheName">
|
<property name="cacheName">
|
||||||
<value>nodeOwnerCache</value>
|
<value>org.alfresco.nodeOwnerCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxElementsInMemory">
|
<property name="maxElementsInMemory">
|
||||||
<value>20000</value> <!-- approx 20MB memory required -->
|
<value>20000</value> <!-- approx 20MB memory required -->
|
||||||
</property>
|
</property>
|
||||||
|
<property name="eternal">
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
<property name="overflowToDisk">
|
<property name="overflowToDisk">
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
@@ -146,10 +155,10 @@
|
|||||||
<ref bean="transactionalEHCacheManager" />
|
<ref bean="transactionalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="name">
|
<property name="name">
|
||||||
<value>nodeOwnerTransactionalCache</value>
|
<value>org.alfresco.nodeOwnerTransactionalCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxCacheSize">
|
<property name="maxCacheSize">
|
||||||
<value>5000</value>
|
<value>10000</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
@@ -166,11 +175,14 @@
|
|||||||
<ref bean="internalEHCacheManager" />
|
<ref bean="internalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="cacheName">
|
<property name="cacheName">
|
||||||
<value>ticketsCache</value>
|
<value>org.alfresco.ticketsCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxElementsInMemory">
|
<property name="maxElementsInMemory">
|
||||||
<value>1000</value>
|
<value>1000</value>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="eternal">
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
<property name="overflowToDisk">
|
<property name="overflowToDisk">
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
</property>
|
</property>
|
||||||
@@ -188,7 +200,7 @@
|
|||||||
<ref bean="transactionalEHCacheManager" />
|
<ref bean="transactionalEHCacheManager" />
|
||||||
</property>
|
</property>
|
||||||
<property name="name">
|
<property name="name">
|
||||||
<value>ticketsTransactionalCache</value>
|
<value>org.alfresco.ticketsTransactionalCache</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxCacheSize">
|
<property name="maxCacheSize">
|
||||||
<value>10</value>
|
<value>10</value>
|
||||||
|
@@ -212,10 +212,10 @@
|
|||||||
<ref bean="authenticationServiceImpl" />
|
<ref bean="authenticationServiceImpl" />
|
||||||
</property>
|
</property>
|
||||||
<property name="maxPermissionCheckTimeMillis">
|
<property name="maxPermissionCheckTimeMillis">
|
||||||
<value>${lucene.query.maxPermissionCheckTimeMillis}</value>
|
<value>${system.acl.maxPermissionCheckTimeMillis}</value>
|
||||||
</property>
|
</property>
|
||||||
<property name="maxPermissionChecks">
|
<property name="maxPermissionChecks">
|
||||||
<value>${lucene.query.maxPermissionChecks}</value>
|
<value>${system.acl.maxPermissionChecks}</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
@@ -352,6 +352,7 @@
|
|||||||
org.alfresco.service.cmr.repository.NodeService.setProperty=ACL_NODE.0.sys:base.WriteProperties
|
org.alfresco.service.cmr.repository.NodeService.setProperty=ACL_NODE.0.sys:base.WriteProperties
|
||||||
org.alfresco.service.cmr.repository.NodeService.getParentAssocs=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_PARENT.sys:base.Read
|
org.alfresco.service.cmr.repository.NodeService.getParentAssocs=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_PARENT.sys:base.Read
|
||||||
org.alfresco.service.cmr.repository.NodeService.getChildAssocs=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.Read
|
org.alfresco.service.cmr.repository.NodeService.getChildAssocs=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.Read
|
||||||
|
org.alfresco.service.cmr.repository.NodeService.getChildByName=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.Read
|
||||||
org.alfresco.service.cmr.repository.NodeService.getPrimaryParent=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_PARENT.sys:base.Read
|
org.alfresco.service.cmr.repository.NodeService.getPrimaryParent=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_PARENT.sys:base.Read
|
||||||
org.alfresco.service.cmr.repository.NodeService.createAssociation=ROLE_AUTHENTICATED
|
org.alfresco.service.cmr.repository.NodeService.createAssociation=ROLE_AUTHENTICATED
|
||||||
org.alfresco.service.cmr.repository.NodeService.removeAssociation=ROLE_AUTHENTICATED
|
org.alfresco.service.cmr.repository.NodeService.removeAssociation=ROLE_AUTHENTICATED
|
||||||
@@ -653,6 +654,10 @@
|
|||||||
org.alfresco.service.cmr.security.AuthenticationService.getCurrentTicket=ACL_ALLOW
|
org.alfresco.service.cmr.security.AuthenticationService.getCurrentTicket=ACL_ALLOW
|
||||||
org.alfresco.service.cmr.security.AuthenticationService.clearCurrentSecurityContext=ACL_ALLOW
|
org.alfresco.service.cmr.security.AuthenticationService.clearCurrentSecurityContext=ACL_ALLOW
|
||||||
org.alfresco.service.cmr.security.AuthenticationService.isCurrentUserTheSystemUser=ACL_ALLOW
|
org.alfresco.service.cmr.security.AuthenticationService.isCurrentUserTheSystemUser=ACL_ALLOW
|
||||||
|
org.alfresco.service.cmr.security.AuthenticationService.getDomains=ACL_METHOD.ROLE_ADMINISTRATOR
|
||||||
|
org.alfresco.service.cmr.security.AuthenticationService.getDomainsThatAllowUserCreation=ACL_METHOD.ROLE_ADMINISTRATOR
|
||||||
|
org.alfresco.service.cmr.security.AuthenticationService.getDomainsThatAllowUserDeletion=ACL_METHOD.ROLE_ADMINISTRATOR
|
||||||
|
org.alfresco.service.cmr.security.AuthenticationService.getDomiansThatAllowUserPasswordChanges=ACL_METHOD.ROLE_ADMINISTRATOR
|
||||||
</value>
|
</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
@@ -698,6 +703,8 @@
|
|||||||
org.alfresco.service.cmr.security.PersonService.deletePerson=ACL_METHOD.ROLE_ADMINISTRATOR
|
org.alfresco.service.cmr.security.PersonService.deletePerson=ACL_METHOD.ROLE_ADMINISTRATOR
|
||||||
org.alfresco.service.cmr.security.PersonService.getAllPeople=ACL_ALLOW
|
org.alfresco.service.cmr.security.PersonService.getAllPeople=ACL_ALLOW
|
||||||
org.alfresco.service.cmr.security.PersonService.getPeopleContainer=ACL_ALLOW
|
org.alfresco.service.cmr.security.PersonService.getPeopleContainer=ACL_ALLOW
|
||||||
|
org.alfresco.service.cmr.security.PersonService.getUserNamesAreCaseSensitive=ACL_ALLOW
|
||||||
|
org.alfresco.service.cmr.security.PersonService.getUserIdentifier=ACL_ALLOW
|
||||||
</value>
|
</value>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
@@ -19,18 +19,18 @@ index.recovery.mode=VALIDATE
|
|||||||
# Change the failure behaviour of the configuration checker
|
# Change the failure behaviour of the configuration checker
|
||||||
system.bootstrap.config_check.strict=true
|
system.bootstrap.config_check.strict=true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Properties to limit resources spent on individual searches
|
||||||
|
#
|
||||||
|
# The maximum time spent pruning results
|
||||||
|
system.acl.maxPermissionCheckTimeMillis=10000
|
||||||
|
# The maximum number of results to perform permission checks against
|
||||||
|
system.acl.maxPermissionChecks=1000
|
||||||
|
|
||||||
# #################### #
|
# #################### #
|
||||||
# Lucene configuration #
|
# Lucene configuration #
|
||||||
# #################### #
|
# #################### #
|
||||||
#
|
#
|
||||||
# The maximum time spent pruning query results
|
|
||||||
#
|
|
||||||
lucene.query.maxPermissionCheckTimeMillis=10000
|
|
||||||
#
|
|
||||||
# The maximum number of results to perform permission checks against
|
|
||||||
#
|
|
||||||
lucene.query.maxPermissionChecks=1000
|
|
||||||
#
|
|
||||||
# Millisecond threshold for text transformations
|
# Millisecond threshold for text transformations
|
||||||
# Slower transformers will force the text extraction to be asynchronous
|
# Slower transformers will force the text extraction to be asynchronous
|
||||||
#
|
#
|
||||||
|
@@ -52,6 +52,22 @@ public class InvalidNameEndingPatch extends AbstractPatch
|
|||||||
private SessionFactory sessionFactory;
|
private SessionFactory sessionFactory;
|
||||||
private NodeDaoService nodeDaoService;
|
private NodeDaoService nodeDaoService;
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
String name = "fred. ... ";
|
||||||
|
|
||||||
|
int i = (name.length() == 0) ? 0 : name.length() - 1;
|
||||||
|
while (i >= 0 && (name.charAt(i) == '.' || name.charAt(i) == ' '))
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
|
||||||
|
String updatedName = (i == 0) ? "unnamed" : name.substring(0, i + 1);
|
||||||
|
System.out.println(updatedName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public InvalidNameEndingPatch()
|
public InvalidNameEndingPatch()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -149,7 +165,7 @@ public class InvalidNameEndingPatch extends AbstractPatch
|
|||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
|
|
||||||
String updatedName = name.substring(0, i);
|
String updatedName = (i == 0) ? "unnamed" : name.substring(0, i + 1);
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
boolean applied = false;
|
boolean applied = false;
|
||||||
while (!applied)
|
while (!applied)
|
||||||
|
@@ -62,10 +62,7 @@ public class EhCacheTracerJob implements Job
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (logger.isDebugEnabled())
|
execute();
|
||||||
{
|
|
||||||
execute();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Throwable e)
|
catch (Throwable e)
|
||||||
{
|
{
|
||||||
@@ -86,6 +83,7 @@ public class EhCacheTracerJob implements Job
|
|||||||
// get all the caches
|
// get all the caches
|
||||||
String[] cacheNames = cacheManager.getCacheNames();
|
String[] cacheNames = cacheManager.getCacheNames();
|
||||||
logger.debug("Dumping EHCache info:");
|
logger.debug("Dumping EHCache info:");
|
||||||
|
boolean analyzeAll = true;
|
||||||
for (String cacheName : cacheNames)
|
for (String cacheName : cacheNames)
|
||||||
{
|
{
|
||||||
Cache cache = cacheManager.getCache(cacheName);
|
Cache cache = cacheManager.getCache(cacheName);
|
||||||
@@ -93,27 +91,39 @@ public class EhCacheTracerJob implements Job
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Log cacheLogger = LogFactory.getLog(this.getClass().getName() + "." + cacheName);
|
||||||
|
// log each cache to its own logger
|
||||||
// dump
|
// dump
|
||||||
CacheAnalysis analysis = new CacheAnalysis(cache);
|
if (cacheLogger.isDebugEnabled())
|
||||||
logger.debug(analysis);
|
{
|
||||||
// get the size
|
CacheAnalysis analysis = new CacheAnalysis(cache);
|
||||||
allCachesTotalSize += analysis.getSize();
|
cacheLogger.debug(analysis);
|
||||||
double cacheEstimatedMaxSize = analysis.getEstimatedMaxSize();
|
// get the size
|
||||||
estimatedMaxSize += (Double.isNaN(cacheEstimatedMaxSize) || Double.isInfinite(cacheEstimatedMaxSize))
|
allCachesTotalSize += analysis.getSize();
|
||||||
? 0.0
|
double cacheEstimatedMaxSize = analysis.getEstimatedMaxSize();
|
||||||
: cacheEstimatedMaxSize;
|
estimatedMaxSize += (Double.isNaN(cacheEstimatedMaxSize) || Double.isInfinite(cacheEstimatedMaxSize))
|
||||||
|
? 0.0
|
||||||
|
: cacheEstimatedMaxSize;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
analyzeAll = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (analyzeAll)
|
||||||
|
{
|
||||||
|
// check the size
|
||||||
|
double sizePercentage = (double)allCachesTotalSize / (double)maxHeapSize * 100.0;
|
||||||
|
double maxSizePercentage = estimatedMaxSize / (double)maxHeapSize * 100.0;
|
||||||
|
String msg = String.format(
|
||||||
|
"EHCaches currently consume %5.2f MB or %3.2f percent of system VM size. \n" +
|
||||||
|
"The estimated maximum size is %5.2f MB or %3.2f percent of system VM size.",
|
||||||
|
(double)allCachesTotalSize / 1024.0 / 1024.0,
|
||||||
|
sizePercentage,
|
||||||
|
estimatedMaxSize / 1024.0 / 1024.0,
|
||||||
|
maxSizePercentage);
|
||||||
|
logger.debug(msg);
|
||||||
}
|
}
|
||||||
// check the size
|
|
||||||
double sizePercentage = (double)allCachesTotalSize / (double)maxHeapSize * 100.0;
|
|
||||||
double maxSizePercentage = estimatedMaxSize / (double)maxHeapSize * 100.0;
|
|
||||||
String msg = String.format(
|
|
||||||
"EHCaches currently consume %5.2f MB or %3.2f percent of system VM size. \n" +
|
|
||||||
"The estimated maximum size is %5.2f MB or %3.2f percent of system VM size.",
|
|
||||||
(double)allCachesTotalSize / 1024.0 / 1024.0,
|
|
||||||
sizePercentage,
|
|
||||||
estimatedMaxSize / 1024.0 / 1024.0,
|
|
||||||
maxSizePercentage);
|
|
||||||
logger.debug(msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class CacheAnalysis
|
private static class CacheAnalysis
|
||||||
@@ -211,15 +221,17 @@ public class EhCacheTracerJob implements Job
|
|||||||
long maxSize = cache.getMaxElementsInMemory();
|
long maxSize = cache.getMaxElementsInMemory();
|
||||||
long currentSize = cache.getMemoryStoreSize();
|
long currentSize = cache.getMemoryStoreSize();
|
||||||
long hitCount = cache.getHitCount();
|
long hitCount = cache.getHitCount();
|
||||||
long missCount = cache.getMissCountNotFound();
|
long totalMissCount = cache.getMissCountNotFound() + cache.getMissCountExpired();
|
||||||
|
double hitRatio = (double)hitCount / (double)(totalMissCount + hitCount) * 100.0;
|
||||||
double percentageFull = (double)currentSize / (double)maxSize * 100.0;
|
double percentageFull = (double)currentSize / (double)maxSize * 100.0;
|
||||||
double estMaxSize = sizeMB / (double) currentSize * (double) maxSize;
|
double estMaxSize = sizeMB / (double) currentSize * (double) maxSize;
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder(512);
|
StringBuilder sb = new StringBuilder(512);
|
||||||
sb.append(" Analyzing EHCache: \n")
|
sb.append("\n")
|
||||||
.append("===> ").append(cache.getName()).append("\n")
|
.append("===> EHCache: ").append(cache).append("\n")
|
||||||
.append(" Hit Count: ").append(String.format("%10d hits ", hitCount ))
|
.append(" Hit Ratio: ").append(String.format("%10.2f percent ", hitRatio ))
|
||||||
.append(" | Miss Count: ").append(String.format("%10d misses ", missCount )).append("\n")
|
.append(" | Hit Count: ").append(String.format("%10d hits ", hitCount ))
|
||||||
|
.append(" | Miss Count: ").append(String.format("%10d misses ", totalMissCount )).append("\n")
|
||||||
.append(" Deep Size: ").append(String.format("%10.2f MB ", sizeMB ))
|
.append(" Deep Size: ").append(String.format("%10.2f MB ", sizeMB ))
|
||||||
.append(" | Current Count: ").append(String.format("%10d entries ", currentSize )).append("\n")
|
.append(" | Current Count: ").append(String.format("%10d entries ", currentSize )).append("\n")
|
||||||
.append(" Percentage used: ").append(String.format("%10.2f percent", percentageFull))
|
.append(" Percentage used: ").append(String.format("%10.2f percent", percentageFull))
|
||||||
|
@@ -23,6 +23,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
|
import org.alfresco.repo.content.transform.AbstractContentTransformerTest;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||||
@@ -36,8 +37,8 @@ import org.alfresco.service.cmr.repository.ContentWriter;
|
|||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.cmr.search.ResultSet;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
import org.alfresco.service.transaction.TransactionService;
|
import org.alfresco.service.transaction.TransactionService;
|
||||||
import org.alfresco.util.ApplicationContextHelper;
|
import org.alfresco.util.ApplicationContextHelper;
|
||||||
import org.alfresco.util.GUID;
|
import org.alfresco.util.GUID;
|
||||||
@@ -66,7 +67,6 @@ public class FileFolderPerformanceTester extends TestCase
|
|||||||
private AuthenticationComponent authenticationComponent;
|
private AuthenticationComponent authenticationComponent;
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
private FileFolderService fileFolderService;
|
private FileFolderService fileFolderService;
|
||||||
private StoreRef storeRef;
|
|
||||||
private NodeRef rootFolderRef;
|
private NodeRef rootFolderRef;
|
||||||
private File dataFile;
|
private File dataFile;
|
||||||
|
|
||||||
@@ -78,18 +78,30 @@ public class FileFolderPerformanceTester extends TestCase
|
|||||||
authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
|
authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent");
|
||||||
nodeService = serviceRegistry.getNodeService();
|
nodeService = serviceRegistry.getNodeService();
|
||||||
fileFolderService = serviceRegistry.getFileFolderService();
|
fileFolderService = serviceRegistry.getFileFolderService();
|
||||||
|
SearchService searchService = serviceRegistry.getSearchService();
|
||||||
|
|
||||||
// authenticate
|
// authenticate
|
||||||
authenticationComponent.setSystemUserAsCurrentUser();
|
authenticationComponent.setSystemUserAsCurrentUser();
|
||||||
|
|
||||||
// create a folder root to work in
|
// find the guest folder
|
||||||
storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, getName() + "_" + System.currentTimeMillis());
|
StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore");
|
||||||
NodeRef rootNodeRef = nodeService.getRootNode(storeRef);
|
ResultSet rs = searchService.query(storeRef, SearchService.LANGUAGE_XPATH, "/app:company_home");
|
||||||
rootFolderRef = nodeService.createNode(
|
try
|
||||||
rootNodeRef,
|
{
|
||||||
ContentModel.ASSOC_CHILDREN,
|
if (rs.length() == 0)
|
||||||
QName.createQName(NamespaceService.ALFRESCO_URI, getName()),
|
{
|
||||||
ContentModel.TYPE_FOLDER).getChildRef();
|
throw new AlfrescoRuntimeException("Didn't find Company Home");
|
||||||
|
}
|
||||||
|
NodeRef companyHomeNodeRef = rs.getNodeRef(0);
|
||||||
|
rootFolderRef = fileFolderService.create(
|
||||||
|
companyHomeNodeRef,
|
||||||
|
getName() + "_" + System.currentTimeMillis(),
|
||||||
|
ContentModel.TYPE_FOLDER).getNodeRef();
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
rs.close();
|
||||||
|
}
|
||||||
dataFile = AbstractContentTransformerTest.loadQuickTestFile("txt");
|
dataFile = AbstractContentTransformerTest.loadQuickTestFile("txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,16 +314,12 @@ public class FileFolderPerformanceTester extends TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void test_1_ordered_1_10() throws Exception
|
// /** Load 5000 files into a single folder using 2 threads */
|
||||||
{
|
// public void test_2_ordered_1_2500() throws Exception
|
||||||
buildStructure(rootFolderRef, 1, false, 1, 10, null);
|
|
||||||
}
|
|
||||||
// public void test_1_ordered_1_10_read() throws Exception
|
|
||||||
// {
|
// {
|
||||||
// buildStructure(rootFolderRef, 1, false, 50, 1, null);
|
// buildStructure(rootFolderRef, 2, false, 1, 2500, new double[] {0.25, 0.50, 0.75});
|
||||||
// readStructure(rootFolderRef, 50, 1000, null);
|
|
||||||
// }
|
// }
|
||||||
//
|
|
||||||
// public void test_4_ordered_10_100() throws Exception
|
// public void test_4_ordered_10_100() throws Exception
|
||||||
// {
|
// {
|
||||||
// buildStructure(rootFolderRef, 4, false, 10, 100, new double[] {0.25, 0.50, 0.75});
|
// buildStructure(rootFolderRef, 4, false, 10, 100, new double[] {0.25, 0.50, 0.75});
|
||||||
@@ -341,16 +349,16 @@ public class FileFolderPerformanceTester extends TestCase
|
|||||||
// 400,
|
// 400,
|
||||||
// new double[] {0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90});
|
// new double[] {0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90});
|
||||||
// }
|
// }
|
||||||
public void test_4_shuffled_10_100() throws Exception
|
// public void test_4_shuffled_10_100() throws Exception
|
||||||
{
|
// {
|
||||||
buildStructure(
|
// buildStructure(
|
||||||
rootFolderRef,
|
// rootFolderRef,
|
||||||
4,
|
// 4,
|
||||||
true,
|
// true,
|
||||||
10,
|
// 10,
|
||||||
100,
|
// 100,
|
||||||
new double[] {0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90});
|
// new double[] {0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90});
|
||||||
}
|
// }
|
||||||
// public void test_1_ordered_1_50000() throws Exception
|
// public void test_1_ordered_1_50000() throws Exception
|
||||||
// {
|
// {
|
||||||
// buildStructure(
|
// buildStructure(
|
||||||
|
@@ -487,6 +487,8 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
|
|||||||
}
|
}
|
||||||
// set the index
|
// set the index
|
||||||
assoc.setIndex(index);
|
assoc.setIndex(index);
|
||||||
|
// flush
|
||||||
|
nodeDaoService.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
public QName getType(NodeRef nodeRef) throws InvalidNodeRefException
|
public QName getType(NodeRef nodeRef) throws InvalidNodeRefException
|
||||||
|
@@ -676,6 +676,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
|
|||||||
{
|
{
|
||||||
Query query = session
|
Query query = session
|
||||||
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOCS)
|
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOCS)
|
||||||
|
.setFlushMode(FlushMode.NEVER)
|
||||||
.setLong("parentId", parentNode.getId());
|
.setLong("parentId", parentNode.getId());
|
||||||
return query.list();
|
return query.list();
|
||||||
}
|
}
|
||||||
@@ -693,6 +694,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
|
|||||||
{
|
{
|
||||||
Query query = session
|
Query query = session
|
||||||
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOC_REFS)
|
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOC_REFS)
|
||||||
|
.setFlushMode(FlushMode.NEVER)
|
||||||
.setLong("parentId", parentNode.getId());
|
.setLong("parentId", parentNode.getId());
|
||||||
return query.list();
|
return query.list();
|
||||||
}
|
}
|
||||||
@@ -712,6 +714,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
|
|||||||
{
|
{
|
||||||
Query query = session
|
Query query = session
|
||||||
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOC_REFS_BY_QNAME)
|
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOC_REFS_BY_QNAME)
|
||||||
|
.setFlushMode(FlushMode.NEVER)
|
||||||
.setLong("parentId", parentNode.getId())
|
.setLong("parentId", parentNode.getId())
|
||||||
.setParameter("childAssocQName", assocQName);
|
.setParameter("childAssocQName", assocQName);
|
||||||
return query.list();
|
return query.list();
|
||||||
|
@@ -484,7 +484,6 @@ public class NTLMAuthenticationComponentImpl extends AbstractAuthenticationCompo
|
|||||||
// Authenticate using the token
|
// Authenticate using the token
|
||||||
|
|
||||||
authenticate( authToken);
|
authenticate( authToken);
|
||||||
setCurrentUser( userName.toLowerCase());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user