You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/09/19 15:19:52 UTC

svn commit: r1704020 - /subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c

Author: ivan
Date: Sat Sep 19 13:19:51 2015
New Revision: 1704020

URL: http://svn.apache.org/viewvc?rev=1704020&view=rev
Log:
On the reuse-ra-session branch: Optimize RA session expunge policy. 

* subversion/libsvn_client/ra_cache.c
  (expunge_cache_entries): Remove expired inactive sessions from pool first.
   Then remove other inactive sessions if we have more than
   MAX_INACTIVE_SESSIONS in pool. 

Modified:
    subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c?rev=1704020&r1=1704019&r2=1704020&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/ra_cache.c Sat Sep 19 13:19:51 2015
@@ -467,20 +467,20 @@ expunge_cache_entries(svn_client__ra_cac
 {
   cache_entry_t *cache_entry;
 
-  /* Limit the size of the inactive list. */
-  while (ra_cache->inactive_count > MAX_INACTIVE_SESSIONS)
-    {
-      cache_entry = APR_RING_LAST(&ra_cache->freelist);
-      remove_inactive_entry(ra_cache, cache_entry, FALSE);
-    }
-
   /* Remove expired inactive cache entries. */
   cache_entry = APR_RING_LAST(&ra_cache->freelist);
   while (ra_cache->inactive_count > 0
-         && now > cache_entry->released + INACTIVE_SESSION_TIMEOUT)
-    {
+      && now > cache_entry->released + INACTIVE_SESSION_TIMEOUT)
+  {
       remove_inactive_entry(ra_cache, cache_entry, TRUE);
       cache_entry = APR_RING_LAST(&ra_cache->freelist);
+  }
+
+  /* Limit the size of the inactive list. */
+  while (ra_cache->inactive_count > MAX_INACTIVE_SESSIONS)
+    {
+      cache_entry = APR_RING_LAST(&ra_cache->freelist);
+      remove_inactive_entry(ra_cache, cache_entry, FALSE);
     }
 }