summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcin Czech <maczech@gmail.com>2020-10-12 11:18:09 +0200
committerMarcin Czech <maczech@gmail.com>2020-10-16 15:03:10 +0200
commitcfab48793a27e13e78bae7f3b84c2f55e93d63e7 (patch)
tree6a6304e83a6609e01837331d36ba2287532ca1ac
parent37e91a00aa280cb9f2fd3386bad44148761050e0 (diff)
Use persistent cache provided by libModule for offline reindex
Gerrit offline reindexing ignores persistent cache implementation provided as libModule and always generates caches using H2 implementation. This fix allows to use a different persistent cache backend. Using different cache implementation during the offline reindexing and at runtime causes situation when Gerrit starts without any precomputed caches which significantly impacts overall performance. On the other hand offline reindexing cannot reuse existing caches which impacts reindexing performance. Bug: Issue 13464 Change-Id: I36305282e8ea583dfb37f629e41d219762c3b4a3
-rw-r--r--java/com/google/gerrit/pgm/Reindex.java9
-rw-r--r--java/com/google/gerrit/pgm/util/BatchProgramModule.java3
2 files changed, 9 insertions, 3 deletions
diff --git a/java/com/google/gerrit/pgm/Reindex.java b/java/com/google/gerrit/pgm/Reindex.java
index 966801f382..c8d69f1cc1 100644
--- a/java/com/google/gerrit/pgm/Reindex.java
+++ b/java/com/google/gerrit/pgm/Reindex.java
@@ -29,6 +29,10 @@ import com.google.gerrit.lifecycle.LifecycleManager;
import com.google.gerrit.lucene.LuceneIndexModule;
import com.google.gerrit.pgm.util.BatchProgramModule;
import com.google.gerrit.pgm.util.SiteProgram;
+import com.google.gerrit.server.LibModuleLoader;
+import com.google.gerrit.server.LibModuleType;
+import com.google.gerrit.server.ModuleOverloader;
+import com.google.gerrit.server.cache.h2.H2CacheModule;
import com.google.gerrit.server.change.ChangeResource;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.index.IndexModule;
@@ -159,6 +163,7 @@ public class Reindex extends SiteProgram {
}
modules.add(indexModule);
modules.add(new BatchProgramModule());
+ modules.add(new H2CacheModule());
modules.add(
new FactoryModule() {
@Override
@@ -167,7 +172,9 @@ public class Reindex extends SiteProgram {
}
});
- return dbInjector.createChildInjector(modules);
+ return dbInjector.createChildInjector(
+ ModuleOverloader.override(
+ modules, LibModuleLoader.loadModules(dbInjector, LibModuleType.SYS_MODULE)));
}
private void overrideConfig() {
diff --git a/java/com/google/gerrit/pgm/util/BatchProgramModule.java b/java/com/google/gerrit/pgm/util/BatchProgramModule.java
index 35ba3d0c86..e9c0136d83 100644
--- a/java/com/google/gerrit/pgm/util/BatchProgramModule.java
+++ b/java/com/google/gerrit/pgm/util/BatchProgramModule.java
@@ -38,7 +38,6 @@ import com.google.gerrit.server.account.Realm;
import com.google.gerrit.server.account.ServiceUserClassifierImpl;
import com.google.gerrit.server.account.externalids.ExternalIdModule;
import com.google.gerrit.server.cache.CacheRemovalListener;
-import com.google.gerrit.server.cache.h2.H2CacheModule;
import com.google.gerrit.server.cache.mem.DefaultMemoryCacheModule;
import com.google.gerrit.server.change.ChangeAttributeFactory;
import com.google.gerrit.server.change.ChangeJson;
@@ -153,7 +152,7 @@ public class BatchProgramModule extends FactoryModule {
install(new BatchGitModule());
install(new DefaultPermissionBackendModule());
install(new DefaultMemoryCacheModule());
- install(new H2CacheModule());
+
install(new ExternalIdModule());
install(new GroupModule());
install(new NoteDbModule());