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

Reply via email to