summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNasser Grainawi <nasser@codeaurora.org>2021-11-18 00:26:59 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-11-18 00:26:59 +0000
commit682b67981ad2671fa7a1e3d4048edb6ba5a19e06 (patch)
treea26706f72cb77189a8bbf0da7dab3ed969f967b7
parentd59780842e7beb45c009180ac459477e09104b61 (diff)
parentd775f79a0318a9d6936210b6519e3029cdad35f5 (diff)
Merge "Fix AllProjectsIndexer to avoid duplicate reindex work" into stable-3.2
-rw-r--r--java/com/google/gerrit/server/index/project/AllProjectsIndexer.java2
-rw-r--r--java/com/google/gerrit/server/project/ProjectCache.java7
-rw-r--r--java/com/google/gerrit/server/project/ProjectCacheImpl.java13
3 files changed, 17 insertions, 5 deletions
diff --git a/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java b/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
index cc7dca3806..0e4b688d6c 100644
--- a/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
+++ b/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
@@ -78,7 +78,7 @@ public class AllProjectsIndexer extends SiteIndexer<Project.NameKey, ProjectData
executor.submit(
() -> {
try {
- projectCache.evictAndReindex(name);
+ projectCache.evict(name);
index.replace(
projectCache.get(name).orElseThrow(illegalState(name)).toProjectData());
verboseWriter.println("Reindexed " + desc);
diff --git a/java/com/google/gerrit/server/project/ProjectCache.java b/java/com/google/gerrit/server/project/ProjectCache.java
index 6187af5f53..6a2ae50b35 100644
--- a/java/com/google/gerrit/server/project/ProjectCache.java
+++ b/java/com/google/gerrit/server/project/ProjectCache.java
@@ -59,6 +59,13 @@ public interface ProjectCache {
Optional<ProjectState> get(@Nullable Project.NameKey projectName) throws StorageException;
/**
+ * Invalidate the cached information about the given project.
+ *
+ * @param p the NameKey of the project that is being evicted
+ */
+ void evict(Project.NameKey p);
+
+ /**
* Invalidate the cached information about the given project, and triggers reindexing for it
*
* @param p project that is being evicted
diff --git a/java/com/google/gerrit/server/project/ProjectCacheImpl.java b/java/com/google/gerrit/server/project/ProjectCacheImpl.java
index 4ab555538a..1523b1bb58 100644
--- a/java/com/google/gerrit/server/project/ProjectCacheImpl.java
+++ b/java/com/google/gerrit/server/project/ProjectCacheImpl.java
@@ -159,16 +159,21 @@ public class ProjectCacheImpl implements ProjectCache {
}
@Override
+ public void evict(Project.NameKey p) {
+ if (p != null) {
+ logger.atFine().log("Evict project '%s'", p.get());
+ byName.invalidate(p.get());
+ }
+ }
+
+ @Override
public void evictAndReindex(Project p) {
evictAndReindex(p.getNameKey());
}
@Override
public void evictAndReindex(Project.NameKey p) {
- if (p != null) {
- logger.atFine().log("Evict project '%s'", p.get());
- byName.invalidate(p.get());
- }
+ evict(p);
indexer.get().index(p);
}