diff options
author | Nasser Grainawi <nasser.grainawi@linaro.org> | 2023-06-13 14:51:08 -0600 |
---|---|---|
committer | Nasser Grainawi <nasser.grainawi@linaro.org> | 2023-06-13 17:33:07 -0600 |
commit | 46550a14bfee42c563ada58b956facb7234c5365 (patch) | |
tree | 3e9ac077c26c0c1a186d171866cded45e45803ea | |
parent | a7b7ae1c79af1307a57d9da26cff969840ae7f06 (diff) |
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
-rw-r--r-- | java/com/google/gerrit/server/index/change/AllChangesIndexer.java | 29 | ||||
-rw-r--r-- | java/com/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<Change.Id, ChangeData, Change public abstract int slices(); - public abstract ScanResult scanResult(); + public abstract ImmutableSet<Change.Id> 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<Change.Id> changeIds) { + return new AutoValue_AllChangesIndexer_ProjectSlice(name, slice, slices, changeIds); } } @@ -191,10 +192,10 @@ public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, Change Project.NameKey project, int slice, int slices, - ScanResult scanResult, + ImmutableSet<Change.Id> 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<Void> { @@ -202,7 +203,7 @@ public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, Change private final Project.NameKey project; private final int slice; private final int slices; - private final ScanResult scanResult; + private final ImmutableSet<Change.Id> changeIds; private final ProgressMonitor done; private final ProgressMonitor failed; @@ -211,14 +212,14 @@ public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, Change Project.NameKey project, int slice, int slices, - ScanResult scanResult, + ImmutableSet<Change.Id> 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<Change.Id, ChangeData, Change // but the goal is to invalidate that cache as infrequently as we possibly can. And besides, // we don't have concrete proof that improving packfile locality would help. notesFactory - .scan(scanResult, project, id -> (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<Change.Id, ChangeData, Change @Override public Void call() throws IOException { try (Repository repo = repoManager.openRepository(name)) { - ScanResult sr = ChangeNotes.Factory.scanChangeIds(repo); - int size = sr.all().size(); + ImmutableSet<Change.Id> 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<Change.Id, ChangeData, Change projTask.updateTotal(slices); for (int slice = 0; slice < slices; slice++) { - ProjectSlice projectSlice = ProjectSlice.create(name, slice, slices, sr); + ProjectSlice projectSlice = ProjectSlice.create(name, slice, slices, changeIds); ListenableFuture<?> future = executor.submit( reindexProject( @@ -359,7 +360,7 @@ public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, Change name, slice, slices, - projectSlice.scanResult(), + projectSlice.changeIds(), doneTask, failedTask)); String description = "project " + name + " (" + slice + "/" + slices + ")"; diff --git a/java/com/google/gerrit/server/notedb/ChangeNotes.java b/java/com/google/gerrit/server/notedb/ChangeNotes.java index 42fe4e29d1..57070c808a 100644 --- a/java/com/google/gerrit/server/notedb/ChangeNotes.java +++ b/java/com/google/gerrit/server/notedb/ChangeNotes.java @@ -34,8 +34,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.MultimapBuilder; import com.google.common.collect.Multimaps; import com.google.common.collect.Ordering; -import com.google.common.collect.Sets; -import com.google.common.collect.Sets.SetView; import com.google.common.flogger.FluentLogger; import com.google.errorprone.annotations.FormatMethod; import com.google.gerrit.common.Nullable; @@ -115,27 +113,17 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> { this.projectCache = projectCache; } - @AutoValue - public abstract static class ScanResult { - abstract ImmutableSet<Change.Id> fromPatchSetRefs(); - - abstract ImmutableSet<Change.Id> fromMetaRefs(); - - public SetView<Change.Id> all() { - return Sets.union(fromPatchSetRefs(), fromMetaRefs()); - } - } - - public static ScanResult scanChangeIds(Repository repo) throws IOException { - ImmutableSet.Builder<Change.Id> fromPs = ImmutableSet.builder(); + public static ImmutableSet<Change.Id> scanChangeIds(Repository repo) throws IOException { ImmutableSet.Builder<Change.Id> 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<ChangeNotes> { } public Stream<ChangeNotesResult> scan( - ScanResult sr, Project.NameKey project, Predicate<Change.Id> changeIdPredicate) { - Stream<Change.Id> idStream = sr.all().stream(); + ImmutableSet<Change.Id> changeIds, + Project.NameKey project, + Predicate<Change.Id> changeIdPredicate) { + Stream<Change.Id> 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); |