From 46550a14bfee42c563ada58b956facb7234c5365 Mon Sep 17 00:00:00 2001 From: Nasser Grainawi Date: Tue, 13 Jun 2023 14:51:08 -0600 Subject: ChangeNotes: Stop recording scanned patchSetRefs This could have been removed when the other code to support reading from reviewDb was removed. Since ScanResult now contains only a single Set, remove the AutoValue class and return the ImmutableSet. Also remove the "we only found a patchset ref" check in scanOneChange since it's now called only for ids found from meta refs. Change-Id: I40f791c8dcce1923b30167c4ec7ad5fb33990c96 Forward-Compatible: checked Release-Notes: skip --- .../server/index/change/AllChangesIndexer.java | 29 +++++++-------- .../google/gerrit/server/notedb/ChangeNotes.java | 42 +++++++--------------- 2 files changed, 28 insertions(+), 43 deletions(-) diff --git a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java index 46b3e7df04..da287e94a6 100644 --- a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java +++ b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java @@ -21,6 +21,7 @@ import static com.google.gerrit.server.git.QueueProvider.QueueType.BATCH; import com.google.auto.value.AutoValue; import com.google.common.base.Stopwatch; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import com.google.common.flogger.FluentLogger; import com.google.common.util.concurrent.ListenableFuture; @@ -38,7 +39,6 @@ import com.google.gerrit.server.index.IndexExecutor; import com.google.gerrit.server.index.OnlineReindexMode; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult; -import com.google.gerrit.server.notedb.ChangeNotes.Factory.ScanResult; import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.query.change.ChangeData; import com.google.inject.Inject; @@ -107,10 +107,11 @@ public class AllChangesIndexer extends SiteIndexer changeIds(); - private static ProjectSlice create(Project.NameKey name, int slice, int slices, ScanResult sr) { - return new AutoValue_AllChangesIndexer_ProjectSlice(name, slice, slices, sr); + private static ProjectSlice create( + Project.NameKey name, int slice, int slices, ImmutableSet changeIds) { + return new AutoValue_AllChangesIndexer_ProjectSlice(name, slice, slices, changeIds); } } @@ -191,10 +192,10 @@ public class AllChangesIndexer extends SiteIndexer changeIds, Task done, Task failed) { - return new ProjectIndexer(indexer, project, slice, slices, scanResult, done, failed); + return new ProjectIndexer(indexer, project, slice, slices, changeIds, done, failed); } private class ProjectIndexer implements Callable { @@ -202,7 +203,7 @@ public class AllChangesIndexer extends SiteIndexer changeIds; private final ProgressMonitor done; private final ProgressMonitor failed; @@ -211,14 +212,14 @@ public class AllChangesIndexer extends SiteIndexer changeIds, ProgressMonitor done, ProgressMonitor failed) { this.indexer = indexer; this.project = project; this.slice = slice; this.slices = slices; - this.scanResult = scanResult; + this.changeIds = changeIds; this.done = done; this.failed = failed; } @@ -232,7 +233,7 @@ public class AllChangesIndexer extends SiteIndexer (id.get() % slices) == slice) + .scan(changeIds, project, id -> (id.get() % slices) == slice) .forEach(r -> index(r)); OnlineReindexMode.end(); return null; @@ -337,8 +338,8 @@ public class AllChangesIndexer extends SiteIndexer changeIds = ChangeNotes.Factory.scanChangeIds(repo); + int size = changeIds.size(); if (size > 0) { changeCount.addAndGet(size); int slices = 1 + size / PROJECT_SLICE_MAX_REFS; @@ -351,7 +352,7 @@ public class AllChangesIndexer extends SiteIndexer future = executor.submit( reindexProject( @@ -359,7 +360,7 @@ public class AllChangesIndexer extends SiteIndexer { this.projectCache = projectCache; } - @AutoValue - public abstract static class ScanResult { - abstract ImmutableSet fromPatchSetRefs(); - - abstract ImmutableSet fromMetaRefs(); - - public SetView all() { - return Sets.union(fromPatchSetRefs(), fromMetaRefs()); - } - } - - public static ScanResult scanChangeIds(Repository repo) throws IOException { - ImmutableSet.Builder fromPs = ImmutableSet.builder(); + public static ImmutableSet scanChangeIds(Repository repo) throws IOException { ImmutableSet.Builder fromMeta = ImmutableSet.builder(); for (Ref r : repo.getRefDatabase().getRefsByPrefix(RefNames.REFS_CHANGES)) { - Change.Id id = Change.Id.fromRef(r.getName()); - if (id != null) { - (r.getName().endsWith(RefNames.META_SUFFIX) ? fromMeta : fromPs).add(id); + if (r.getName().endsWith(RefNames.META_SUFFIX)) { + Change.Id id = Change.Id.fromRef(r.getName()); + if (id != null) { + fromMeta.add(id); + } } } - return new AutoValue_ChangeNotes_Factory_ScanResult(fromPs.build(), fromMeta.build()); + return fromMeta.build(); } public ChangeNotes createChecked(Change c) { @@ -301,22 +289,18 @@ public class ChangeNotes extends AbstractChangeNotes { } public Stream scan( - ScanResult sr, Project.NameKey project, Predicate changeIdPredicate) { - Stream idStream = sr.all().stream(); + ImmutableSet changeIds, + Project.NameKey project, + Predicate changeIdPredicate) { + Stream idStream = changeIds.stream(); if (changeIdPredicate != null) { idStream = idStream.filter(changeIdPredicate); } - return idStream.map(id -> scanOneChange(project, sr, id)).filter(Objects::nonNull); + return idStream.map(id -> scanOneChange(project, id)).filter(Objects::nonNull); } @Nullable - private ChangeNotesResult scanOneChange(Project.NameKey project, ScanResult sr, Change.Id id) { - if (!sr.fromMetaRefs().contains(id)) { - // Stray patch set refs can happen due to normal error conditions, e.g. failed - // push processing, so aren't worth even a warning. - return null; - } - + private ChangeNotesResult scanOneChange(Project.NameKey project, Change.Id id) { // TODO(dborowitz): See discussion in BatchUpdate#newChangeContext. try { Change change = ChangeNotes.Factory.newChange(project, id); -- cgit v1.2.3