Hi all, I'm in search of help. We have been suffering from a memory leak recently causing out-of-memory exceptions and *I think* the cause is this:-
In DSpaceWebappServletFilter.doFilter() there is a call to requestService.startRequest() which in turn calls all registered RequestInterceptors, one of which is CachingServiceRequestInterceptor. This creates a 'cache map' for the current request. I assume the cache map should be removed when the request ends but that does not seem to be happening in all cases, causing the class CachingServiceImpl to grow inexorably until memory is exhausted. Going back to our starting point of DSpaceWebappServletFilter.doFilter() there is a call to requestService.endRequest() which should remove the cache map, but it does not appear to be invoked for all requests. Looking at web.xml for this filter I see... <filter-mapping> <filter-name>dspace.request</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> It looks like only 'real' requests get their cache tidied up and not those generated by FORWARD or INCLUDE. So I think I know what is going wrong, but I don't know what is the right way to fix it. Any dspace-services experts out there able to help? Cheers, Robin. -- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar _______________________________________________ Dspace-devel mailing list Dspace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dspace-devel