Merge "Fix AllProjectsIndexer to avoid duplicate reindex work" into stable-3.2
diff --git a/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java b/java/com/google/gerrit/server/index/project/AllProjectsIndexer.java
index cc7dca3..0e4b688 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 @@
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 6187af5..6a2ae50 100644
--- a/java/com/google/gerrit/server/project/ProjectCache.java
+++ b/java/com/google/gerrit/server/project/ProjectCache.java
@@ -59,6 +59,13 @@
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 4ab5555..1523b1b 100644
--- a/java/com/google/gerrit/server/project/ProjectCacheImpl.java
+++ b/java/com/google/gerrit/server/project/ProjectCacheImpl.java
@@ -159,16 +159,21 @@
}
@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);
}