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
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-devel