From 76afd86b11cde3c87aca1a3cca85dffd54072e30 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Fri, 21 Sep 2007 15:14:25 +0000 Subject: [PATCH] Fixed BM client caching to be disk-persistent and specific to the working root node reference. Subsequent startups of the client no longer incur a long warm-up period when running against a repo already populated. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6855 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../filefolder/loader/LoaderUploadThread.java | 15 +++++++----- .../filefolder/loader/loader-ehcache.xml | 24 +++++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 source/java/org/alfresco/repo/model/filefolder/loader/loader-ehcache.xml diff --git a/source/java/org/alfresco/repo/model/filefolder/loader/LoaderUploadThread.java b/source/java/org/alfresco/repo/model/filefolder/loader/LoaderUploadThread.java index ef866e518a..421cab2ddb 100644 --- a/source/java/org/alfresco/repo/model/filefolder/loader/LoaderUploadThread.java +++ b/source/java/org/alfresco/repo/model/filefolder/loader/LoaderUploadThread.java @@ -25,6 +25,7 @@ package org.alfresco.repo.model.filefolder.loader; import java.io.File; +import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -50,9 +51,10 @@ public class LoaderUploadThread extends AbstractLoaderThread static { - CacheManager cacheManager = new CacheManager(); - Cache cache = new Cache("LoaderUploadThread-PathCache", 100000, false, false, 300, 300); - cacheManager.addCache(cache); + System.setProperty(CacheManager.ENABLE_SHUTDOWN_HOOK_PROPERTY, "TRUE"); + URL url = LoaderUploadThread.class.getResource("/org/alfresco/repo/model/filefolder/loader/loader-ehcache.xml"); + CacheManager cacheManager = new CacheManager(url); + Cache cache = cacheManager.getCache("org.alfresco.LoaderUploadThread.PathCache"); pathCache = new EhCacheAdapter(); pathCache.setCache(cache); @@ -81,12 +83,13 @@ public class LoaderUploadThread extends AbstractLoaderThread // Iterate down the path, checking the cache and populating it as necessary List currentPath = new ArrayList(); NodeRef currentParentNodeRef = workingRootNodeRef; + String currentKey = workingRootNodeRef.toString(); for (String pathElement : folderPath) { currentPath.add(pathElement); - String key = currentPath.toString(); + currentKey += ("/" + pathElement); // Is this there? - NodeRef nodeRef = pathCache.get(key); + NodeRef nodeRef = pathCache.get(currentKey); if (nodeRef != null) { // Found it @@ -102,7 +105,7 @@ public class LoaderUploadThread extends AbstractLoaderThread ContentModel.TYPE_FOLDER); currentParentNodeRef = folderInfo.getNodeRef(); // Cache the new node - pathCache.put(key, currentParentNodeRef); + pathCache.put(currentKey, currentParentNodeRef); } // Done return currentParentNodeRef; diff --git a/source/java/org/alfresco/repo/model/filefolder/loader/loader-ehcache.xml b/source/java/org/alfresco/repo/model/filefolder/loader/loader-ehcache.xml new file mode 100644 index 0000000000..41778f4adc --- /dev/null +++ b/source/java/org/alfresco/repo/model/filefolder/loader/loader-ehcache.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + \ No newline at end of file