summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNasser Grainawi <nasser.grainawi@linaro.org>2023-06-13 14:51:08 -0600
committerNasser Grainawi <nasser.grainawi@linaro.org>2023-06-13 17:33:07 -0600
commit46550a14bfee42c563ada58b956facb7234c5365 (patch)
tree3e9ac077c26c0c1a186d171866cded45e45803ea
parenta7b7ae1c79af1307a57d9da26cff969840ae7f06 (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.java29
-rw-r--r--java/com/google/gerrit/server/notedb/ChangeNotes.java42
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);