[ http://jira.magnolia-cms.com/browse/MAGNOLIA-3167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=27649#action_27649 ]
Philipp Bärfuss commented on MAGNOLIA-3167: ------------------------------------------- Patch against 3.6.8 (draft) can be found at SUPPORT-538 > cache: single blocking request can block all other requests to cached content > ------------------------------------------------------------------------------ > > Key: MAGNOLIA-3167 > URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-3167 > Project: Magnolia > Issue Type: Bug > Affects Versions: 3.6.8, 4.1.4, 4.2.3, 4.3.1 > Reporter: Philipp Bärfuss > Assignee: Boris Kraft > Fix For: 4.3.x > > > the cache mechanism can block all requests: > * cache.get() will block if an other request is caching the same key (this is > a feature of the BlockingCache) > ** mutex per key kept until cache.put() is called (either with an entry or > null value) > * this code is again in a synchronized block which synchronizes on the cache > object itself > ** this blocks all other request trying to enter the synchronization block > The critical scenario which can prevent magnolia from responding any request > (all threads blocked) is the following > 1) first request to a resource which is slow or never returns (request to a > service, poor database connection, ..) > 2) second request to the same resource: --> thread is blocked at > EhCacheWrapper.get(key):56, but also keeps the lock on the cache > 3) all other caching requests are blocked (no matter which url) due to the > synchronize block at Default.shouldCache(Cache, AggregationState, > FlushPolicy):89 > Solution: > * don't synchronize on the cache (why are we doing this???) > * allow configuration of > [BlockingCache.timeoutMillis|http://ehcache.org/apidocs/net/sf/ehcache/constructs/blocking/BlockingCache.html#timeoutMillis] > ** throw an exception if a request waits for to long > * uncomment finally block at doFilter(HttpServletRequest, > HttpServletResponse, FilterChain), this is a safety net and should log a > FATAL ERROR message > ** only relevant if the result is a store request -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.magnolia-cms.com/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ---------------------------------------------------------------- For list details see http://www.magnolia-cms.com/home/community/mailing-lists.html To unsubscribe, E-mail to: <dev-list-unsubscr...@magnolia-cms.com> ----------------------------------------------------------------