summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Arès <hugo.ares@ericsson.com>2016-06-27 10:23:17 -0400
committerHugo Arès <hugo.ares@ericsson.com>2016-09-20 13:47:13 +0200
commit4734437557d9915c3ed8f7f9ef9e3f3c090bf95c (patch)
tree64da6481c9036b564effdbe62391faf680eae6a7
parent2ff75c8d432a2394a449cd277cccd973065d8ed1 (diff)
Expose JGit repository cache configuration parameters
Allow to configure core.repositoryCacheCleanupDelay and core.repositoryCacheExpireAfter parameters in gerrit.config. Change-Id: I8e0d7f0a4154d56759d89c38f9118fd72a7ee953
-rw-r--r--Documentation/config-gerrit.txt27
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java5
2 files changed, 32 insertions, 0 deletions
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 27c8f0f9fb..a956d522bd 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -1412,6 +1412,33 @@ that are merged have more than one common predecessor.
+
Default is true.
+[[core.repositoryCacheCleanupDelay]]core.repositoryCacheCleanupDelay::
++
+Delay between each periodic cleanup of expired repositories.
++
+Values can be specified using standard time unit abbreviations (`ms`, `sec`,
+`min`, etc.).
++
+Set it to 0 in order to switch off cache expiration. If cache expiration is
+switched off, the JVM can still evict cache entries when it is running low
+on available heap memory.
++
+Set it to -1 to automatically derive cleanup delay from
+`core.repositoryCacheExpireAfter` (lowest value between 1/10 of
+`core.repositoryCacheExpireAfter` and 10 minutes).
++
+Default is -1.
+
+[[core.repositoryCacheExpireAfter]]core.repositoryCacheExpireAfter::
++
+Time an unused repository should expire and be evicted from the repository
+cache.
++
+Values can be specified using standard time unit abbreviations (`ms`, `sec`,
+`min`, etc.).
++
+Default is 1 hour.
+
[[database]]
=== Section database
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java
index 093d036b23..ad5cf20650 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/LocalDiskRepositoryManager.java
@@ -31,6 +31,7 @@ import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryCache;
import org.eclipse.jgit.lib.RepositoryCache.FileKey;
+import org.eclipse.jgit.lib.RepositoryCacheConfig;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.storage.file.WindowCacheConfig;
import org.eclipse.jgit.util.FS;
@@ -84,6 +85,10 @@ public class LocalDiskRepositoryManager implements GitRepositoryManager,
@Override
public void start() {
+ RepositoryCacheConfig repoCacheCfg = new RepositoryCacheConfig();
+ repoCacheCfg.fromConfig(serverConfig);
+ repoCacheCfg.install();
+
WindowCacheConfig cfg = new WindowCacheConfig();
cfg.fromConfig(serverConfig);
if (serverConfig.getString("core", null, "streamFileThreshold") == null) {