ChangeNotes: Remove ReviewDb-specific logic
StalenessChecker was the only remaining caller of the static ChangeNotes.readOneReviewDbChange method. Inline this logic for now, StalenessChecker will be cleaned up later. The ReviewDb instance in PushOneCommit is now unused. Removing it requires to adapt many callers of the PushOneCommit.Factory, hence this will be done in a separate follow-up change. Change-Id: Iee01d2c8c0bf6d5e45227a32e1ef7d92d6433092 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
committed by
Dave Borowitz
parent
dbd66d4034
commit
f706083df8
@@ -141,7 +141,6 @@ public class PushOneCommit {
|
||||
private final ChangeNotes.Factory notesFactory;
|
||||
private final ApprovalsUtil approvalsUtil;
|
||||
private final Provider<InternalChangeQuery> queryProvider;
|
||||
private final ReviewDb db;
|
||||
private final TestRepository<?> testRepo;
|
||||
|
||||
private final String subject;
|
||||
@@ -265,14 +264,14 @@ public class PushOneCommit {
|
||||
ChangeNotes.Factory notesFactory,
|
||||
ApprovalsUtil approvalsUtil,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
ReviewDb db,
|
||||
// TODO(ekempin): Remove unused ReviewDb
|
||||
@SuppressWarnings("unused") ReviewDb db,
|
||||
PersonIdent i,
|
||||
TestRepository<?> testRepo,
|
||||
String subject,
|
||||
Map<String, String> files,
|
||||
String changeId)
|
||||
throws Exception {
|
||||
this.db = db;
|
||||
this.testRepo = testRepo;
|
||||
this.notesFactory = notesFactory;
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
@@ -419,7 +418,7 @@ public class PushOneCommit {
|
||||
Change c, ReviewerStateInternal state, List<TestAccount> expectedReviewers)
|
||||
throws OrmException {
|
||||
Iterable<Account.Id> actualIds =
|
||||
approvalsUtil.getReviewers(notesFactory.createChecked(db, c)).byState(state);
|
||||
approvalsUtil.getReviewers(notesFactory.createChecked(c)).byState(state);
|
||||
assertThat(actualIds)
|
||||
.containsExactlyElementsIn(Sets.newHashSet(TestAccount.ids(expectedReviewers)));
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.google.gerrit.metrics.MetricMaker;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RevId;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.cache.CacheModule;
|
||||
import com.google.gerrit.server.config.ConfigUtil;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
@@ -77,7 +76,6 @@ public class ChangeFinder {
|
||||
private final IndexConfig indexConfig;
|
||||
private final Cache<Change.Id, String> changeIdProjectCache;
|
||||
private final Provider<InternalChangeQuery> queryProvider;
|
||||
private final Provider<ReviewDb> reviewDb;
|
||||
private final ChangeNotes.Factory changeNotesFactory;
|
||||
private final Counter1<ChangeIdType> changeIdCounter;
|
||||
private final ImmutableSet<ChangeIdType> allowedIdTypes;
|
||||
@@ -87,14 +85,12 @@ public class ChangeFinder {
|
||||
IndexConfig indexConfig,
|
||||
@Named(CACHE_NAME) Cache<Change.Id, String> changeIdProjectCache,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
Provider<ReviewDb> reviewDb,
|
||||
ChangeNotes.Factory changeNotesFactory,
|
||||
MetricMaker metricMaker,
|
||||
@GerritServerConfig Config config) {
|
||||
this.indexConfig = indexConfig;
|
||||
this.changeIdProjectCache = changeIdProjectCache;
|
||||
this.queryProvider = queryProvider;
|
||||
this.reviewDb = reviewDb;
|
||||
this.changeNotesFactory = changeNotesFactory;
|
||||
this.changeIdCounter =
|
||||
metricMaker.newCounter(
|
||||
@@ -203,7 +199,7 @@ public class ChangeFinder {
|
||||
Change.Id cId = new Change.Id(changeNumber);
|
||||
try {
|
||||
return ImmutableList.of(
|
||||
changeNotesFactory.createChecked(reviewDb.get(), Project.NameKey.parse(project), cId));
|
||||
changeNotesFactory.createChecked(Project.NameKey.parse(project), cId));
|
||||
} catch (NoSuchChangeException e) {
|
||||
return Collections.emptyList();
|
||||
} catch (OrmException e) {
|
||||
|
||||
@@ -323,7 +323,7 @@ public class ChangeJson {
|
||||
Project.NameKey project, Change.Id id, Supplier<I> changeInfoSupplier) throws OrmException {
|
||||
ChangeNotes notes;
|
||||
try {
|
||||
notes = notesFactory.createChecked(db.get(), project, id);
|
||||
notes = notesFactory.createChecked(project, id);
|
||||
} catch (OrmException e) {
|
||||
if (!has(CHECK)) {
|
||||
throw e;
|
||||
|
||||
@@ -413,9 +413,7 @@ public class ConsistencyChecker {
|
||||
}
|
||||
try {
|
||||
Change c =
|
||||
notesFactory
|
||||
.createChecked(db.get(), change().getProject(), psId.getParentKey())
|
||||
.getChange();
|
||||
notesFactory.createChecked(change().getProject(), psId.getParentKey()).getChange();
|
||||
if (!c.getDest().equals(change().getDest())) {
|
||||
continue;
|
||||
}
|
||||
@@ -544,7 +542,7 @@ public class ConsistencyChecker {
|
||||
bu.addOp(notes.getChangeId(), new FixMergedOp(notFound));
|
||||
bu.execute();
|
||||
}
|
||||
notes = notesFactory.createChecked(db.get(), inserter.getChange());
|
||||
notes = notesFactory.createChecked(inserter.getChange());
|
||||
insertPatchSetProblem.status = Status.FIXED;
|
||||
insertPatchSetProblem.outcome = "Inserted as patch set " + psId.get();
|
||||
} catch (OrmException | IOException | UpdateException | RestApiException e) {
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.google.gerrit.extensions.common.PureRevertInfo;
|
||||
import com.google.gerrit.extensions.restapi.BadRequestException;
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.PatchSetUtil;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.MergeUtil;
|
||||
@@ -27,7 +26,6 @@ import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.project.ProjectCache;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
import com.google.inject.Singleton;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
@@ -49,7 +47,6 @@ public class PureRevert {
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final ProjectCache projectCache;
|
||||
private final ChangeNotes.Factory notesFactory;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final PatchSetUtil psUtil;
|
||||
|
||||
@Inject
|
||||
@@ -58,13 +55,11 @@ public class PureRevert {
|
||||
GitRepositoryManager repoManager,
|
||||
ProjectCache projectCache,
|
||||
ChangeNotes.Factory notesFactory,
|
||||
Provider<ReviewDb> dbProvider,
|
||||
PatchSetUtil psUtil) {
|
||||
this.mergeUtilFactory = mergeUtilFactory;
|
||||
this.repoManager = repoManager;
|
||||
this.projectCache = projectCache;
|
||||
this.notesFactory = notesFactory;
|
||||
this.dbProvider = dbProvider;
|
||||
this.psUtil = psUtil;
|
||||
}
|
||||
|
||||
@@ -81,8 +76,7 @@ public class PureRevert {
|
||||
}
|
||||
PatchSet ps =
|
||||
psUtil.current(
|
||||
notesFactory.createChecked(
|
||||
dbProvider.get(), notes.getProjectName(), notes.getChange().getRevertOf()));
|
||||
notesFactory.createChecked(notes.getProjectName(), notes.getChange().getRevertOf()));
|
||||
claimedOriginal = ps.getRevision().get();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Change.Status;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.reviewdb.client.RevId;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.PatchSetUtil;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
@@ -46,18 +45,15 @@ public class RebaseUtil {
|
||||
|
||||
private final Provider<InternalChangeQuery> queryProvider;
|
||||
private final ChangeNotes.Factory notesFactory;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final PatchSetUtil psUtil;
|
||||
|
||||
@Inject
|
||||
RebaseUtil(
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
ChangeNotes.Factory notesFactory,
|
||||
Provider<ReviewDb> dbProvider,
|
||||
PatchSetUtil psUtil) {
|
||||
this.queryProvider = queryProvider;
|
||||
this.notesFactory = notesFactory;
|
||||
this.dbProvider = dbProvider;
|
||||
this.psUtil = psUtil;
|
||||
}
|
||||
|
||||
@@ -128,7 +124,7 @@ public class RebaseUtil {
|
||||
if (rsrc.getChange().getId().equals(id)) {
|
||||
return rsrc.getNotes();
|
||||
}
|
||||
return notesFactory.createChecked(dbProvider.get(), rsrc.getProject(), id);
|
||||
return notesFactory.createChecked(rsrc.getProject(), id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -177,7 +177,7 @@ public class EventBroker implements EventDispatcher {
|
||||
try {
|
||||
permissionBackend
|
||||
.user(user)
|
||||
.change(notesFactory.createChecked(db, change))
|
||||
.change(notesFactory.createChecked(change))
|
||||
.database(db)
|
||||
.check(ChangePermission.READ);
|
||||
return true;
|
||||
@@ -209,10 +209,7 @@ public class EventBroker implements EventDispatcher {
|
||||
if (PatchSet.isChangeRef(ref)) {
|
||||
Change.Id cid = PatchSet.Id.fromRef(ref).getParentKey();
|
||||
try {
|
||||
Change change =
|
||||
notesFactory
|
||||
.createChecked(dbProvider.get(), refEvent.getProjectNameKey(), cid)
|
||||
.getChange();
|
||||
Change change = notesFactory.createChecked(refEvent.getProjectNameKey(), cid).getChange();
|
||||
return isVisibleTo(change, user);
|
||||
} catch (NoSuchChangeException e) {
|
||||
logger.atFine().log(
|
||||
|
||||
@@ -106,7 +106,6 @@ public class GroupCollector {
|
||||
|
||||
public static GroupCollector create(
|
||||
ListMultimap<ObjectId, Ref> changeRefsById,
|
||||
ReviewDb db,
|
||||
PatchSetUtil psUtil,
|
||||
ChangeNotes.Factory notesFactory,
|
||||
Project.NameKey project) {
|
||||
@@ -116,7 +115,7 @@ public class GroupCollector {
|
||||
@Override
|
||||
public List<String> lookup(PatchSet.Id psId) throws OrmException {
|
||||
// TODO(dborowitz): Reuse open repository from caller.
|
||||
ChangeNotes notes = notesFactory.createChecked(db, project, psId.getParentKey());
|
||||
ChangeNotes notes = notesFactory.createChecked(project, psId.getParentKey());
|
||||
PatchSet ps = psUtil.get(notes, psId);
|
||||
return ps != null ? ps.getGroups() : null;
|
||||
}
|
||||
|
||||
@@ -1911,7 +1911,7 @@ class ReceiveCommits {
|
||||
|
||||
Change changeEnt;
|
||||
try {
|
||||
changeEnt = notesFactory.createChecked(db, project.getNameKey(), changeId).getChange();
|
||||
changeEnt = notesFactory.createChecked(project.getNameKey(), changeId).getChange();
|
||||
} catch (NoSuchChangeException e) {
|
||||
logger.atSevere().withCause(e).log("Change not found %s", changeId);
|
||||
reject(cmd, "change " + changeId + " not found");
|
||||
@@ -1991,7 +1991,7 @@ class ReceiveCommits {
|
||||
|
||||
ListMultimap<ObjectId, Ref> existing = changeRefsById();
|
||||
GroupCollector groupCollector =
|
||||
GroupCollector.create(changeRefsById(), db, psUtil, notesFactory, project.getNameKey());
|
||||
GroupCollector.create(changeRefsById(), psUtil, notesFactory, project.getNameKey());
|
||||
|
||||
BranchCommitValidator validator =
|
||||
commitValidatorFactory.create(projectState, magicBranch.dest, user);
|
||||
@@ -2255,7 +2255,7 @@ class ReceiveCommits {
|
||||
private boolean foundInExistingRef(Collection<Ref> existingRefs) throws OrmException {
|
||||
for (Ref ref : existingRefs) {
|
||||
ChangeNotes notes =
|
||||
notesFactory.create(db, project.getNameKey(), Change.Id.fromRef(ref.getName()));
|
||||
notesFactory.create(project.getNameKey(), Change.Id.fromRef(ref.getName()));
|
||||
Change change = notes.getChange();
|
||||
if (change.getDest().equals(magicBranch.dest)) {
|
||||
logger.atFine().log("Found change %s from existing refs.", change.getKey());
|
||||
@@ -2564,7 +2564,7 @@ class ReceiveCommits {
|
||||
private void readChangesForReplace() throws OrmException {
|
||||
Collection<ChangeNotes> allNotes =
|
||||
notesFactory.create(
|
||||
db, replaceByChange.values().stream().map(r -> r.ontoChange).collect(toList()));
|
||||
replaceByChange.values().stream().map(r -> r.ontoChange).collect(toList()));
|
||||
for (ChangeNotes notes : allNotes) {
|
||||
replaceByChange.get(notes.getChangeId()).notes = notes;
|
||||
}
|
||||
@@ -3214,7 +3214,7 @@ class ReceiveCommits {
|
||||
|
||||
private Optional<ChangeNotes> getChangeNotes(Change.Id changeId) throws OrmException {
|
||||
try {
|
||||
return Optional.of(notesFactory.createChecked(db, project.getNameKey(), changeId));
|
||||
return Optional.of(notesFactory.createChecked(project.getNameKey(), changeId));
|
||||
} catch (NoSuchChangeException e) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@@ -185,9 +185,7 @@ public class ReindexAfterRefUpdate implements GitReferenceUpdatedListener {
|
||||
ReviewDb db = ctx.getReviewDbProvider().get();
|
||||
try {
|
||||
Change c =
|
||||
notesFactory
|
||||
.createChecked(db, new Project.NameKey(event.getProjectName()), id)
|
||||
.getChange();
|
||||
notesFactory.createChecked(new Project.NameKey(event.getProjectName()), id).getChange();
|
||||
indexerFactory.create(executor, indexes).index(db, c);
|
||||
} catch (NoSuchChangeException e) {
|
||||
indexerFactory.create(executor, indexes).delete(id);
|
||||
|
||||
@@ -36,9 +36,9 @@ import com.google.gerrit.index.RefState;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDbUtil;
|
||||
import com.google.gerrit.server.UsedAt;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.notedb.NoteDbChangeState.PrimaryStorage;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -100,7 +100,7 @@ public class StalenessChecker {
|
||||
repoManager,
|
||||
id,
|
||||
cd.change(),
|
||||
ChangeNotes.readOneReviewDbChange(db.get(), id),
|
||||
ReviewDbUtil.unwrapDb(db.get()).changes().get(id),
|
||||
parseStates(cd),
|
||||
parsePatterns(cd));
|
||||
}
|
||||
|
||||
@@ -47,8 +47,6 @@ import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RefNames;
|
||||
import com.google.gerrit.reviewdb.client.RevId;
|
||||
import com.google.gerrit.reviewdb.client.RobotComment;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDbUtil;
|
||||
import com.google.gerrit.server.ReviewerByEmailSet;
|
||||
import com.google.gerrit.server.ReviewerSet;
|
||||
import com.google.gerrit.server.ReviewerStatusUpdate;
|
||||
@@ -92,11 +90,6 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
return new ConfigInvalidException("Change " + changeId + ": " + String.format(fmt, args));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Change readOneReviewDbChange(ReviewDb db, Change.Id id) throws OrmException {
|
||||
return ReviewDbUtil.unwrapDb(db).changes().get(id);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
public static class Factory {
|
||||
private final Args args;
|
||||
@@ -112,20 +105,14 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
this.projectCache = projectCache;
|
||||
}
|
||||
|
||||
public ChangeNotes createChecked(ReviewDb db, Change c) throws OrmException {
|
||||
return createChecked(db, c.getProject(), c.getId());
|
||||
public ChangeNotes createChecked(Change c) throws OrmException {
|
||||
return createChecked(c.getProject(), c.getId());
|
||||
}
|
||||
|
||||
public ChangeNotes createChecked(ReviewDb db, Project.NameKey project, Change.Id changeId)
|
||||
public ChangeNotes createChecked(Project.NameKey project, Change.Id changeId)
|
||||
throws OrmException {
|
||||
Change change = readOneReviewDbChange(db, changeId);
|
||||
if (change == null) {
|
||||
// Change isn't in ReviewDb, but its primary storage might be in NoteDb.
|
||||
// Prepopulate the change exists with proper noteDbState field.
|
||||
change = newNoteDbOnlyChange(project, changeId);
|
||||
} else if (!change.getProject().equals(project)) {
|
||||
throw new NoSuchChangeException(changeId);
|
||||
}
|
||||
Change change = newChange(project, changeId);
|
||||
return new ChangeNotes(args, change).load();
|
||||
}
|
||||
|
||||
@@ -142,7 +129,7 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
return changes.get(0).notes();
|
||||
}
|
||||
|
||||
public static Change newNoteDbOnlyChange(Project.NameKey project, Change.Id changeId) {
|
||||
public static Change newChange(Project.NameKey project, Change.Id changeId) {
|
||||
Change change =
|
||||
new Change(
|
||||
null, changeId, null, new Branch.NameKey(project, "INVALID_NOTE_DB_ONLY"), null);
|
||||
@@ -150,26 +137,9 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
return change;
|
||||
}
|
||||
|
||||
private Change loadChangeFromDb(ReviewDb db, Project.NameKey project, Change.Id changeId)
|
||||
throws OrmException {
|
||||
public ChangeNotes create(Project.NameKey project, Change.Id changeId) throws OrmException {
|
||||
checkArgument(project != null, "project is required");
|
||||
Change change = readOneReviewDbChange(db, changeId);
|
||||
|
||||
if (change == null) {
|
||||
return newNoteDbOnlyChange(project, changeId);
|
||||
}
|
||||
checkArgument(
|
||||
change.getProject().equals(project),
|
||||
"passed project %s when creating ChangeNotes for %s, but actual project is %s",
|
||||
project,
|
||||
changeId,
|
||||
change.getProject());
|
||||
return change;
|
||||
}
|
||||
|
||||
public ChangeNotes create(ReviewDb db, Project.NameKey project, Change.Id changeId)
|
||||
throws OrmException {
|
||||
return new ChangeNotes(args, loadChangeFromDb(db, project, changeId)).load();
|
||||
return new ChangeNotes(args, newChange(project, changeId)).load();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -192,8 +162,7 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
return new ChangeNotes(args, change, true, refs).load();
|
||||
}
|
||||
|
||||
public List<ChangeNotes> create(ReviewDb db, Collection<Change.Id> changeIds)
|
||||
throws OrmException {
|
||||
public List<ChangeNotes> create(Collection<Change.Id> changeIds) throws OrmException {
|
||||
List<ChangeNotes> notes = new ArrayList<>();
|
||||
for (Change.Id changeId : changeIds) {
|
||||
try {
|
||||
@@ -206,15 +175,12 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
}
|
||||
|
||||
public List<ChangeNotes> create(
|
||||
ReviewDb db,
|
||||
Project.NameKey project,
|
||||
Collection<Change.Id> changeIds,
|
||||
Predicate<ChangeNotes> predicate)
|
||||
Project.NameKey project, Collection<Change.Id> changeIds, Predicate<ChangeNotes> predicate)
|
||||
throws OrmException {
|
||||
List<ChangeNotes> notes = new ArrayList<>();
|
||||
for (Change.Id cid : changeIds) {
|
||||
try {
|
||||
ChangeNotes cn = create(db, project, cid);
|
||||
ChangeNotes cn = create(project, cid);
|
||||
if (cn.getChange() != null && predicate.test(cn)) {
|
||||
notes.add(cn);
|
||||
}
|
||||
@@ -227,8 +193,8 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
return notes;
|
||||
}
|
||||
|
||||
public ListMultimap<Project.NameKey, ChangeNotes> create(
|
||||
ReviewDb db, Predicate<ChangeNotes> predicate) throws IOException, OrmException {
|
||||
public ListMultimap<Project.NameKey, ChangeNotes> create(Predicate<ChangeNotes> predicate)
|
||||
throws IOException {
|
||||
ListMultimap<Project.NameKey, ChangeNotes> m =
|
||||
MultimapBuilder.hashKeys().arrayListValues().build();
|
||||
for (Project.NameKey project : projectCache.all()) {
|
||||
@@ -258,15 +224,15 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
}
|
||||
|
||||
// TODO(dborowitz): See discussion in BatchUpdate#newChangeContext.
|
||||
Change change = ChangeNotes.Factory.newNoteDbOnlyChange(project, id);
|
||||
Change change = ChangeNotes.Factory.newChange(project, id);
|
||||
|
||||
logger.atFine().log("adding change %s found in project %s", id, project);
|
||||
return toResult(change);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private ChangeNotesResult toResult(Change rawChangeFromReviewDbOrNoteDb) {
|
||||
ChangeNotes n = new ChangeNotes(args, rawChangeFromReviewDbOrNoteDb);
|
||||
private ChangeNotesResult toResult(Change rawChangeFromNoteDb) {
|
||||
ChangeNotes n = new ChangeNotes(args, rawChangeFromNoteDb);
|
||||
try {
|
||||
n.load();
|
||||
} catch (OrmException e) {
|
||||
@@ -549,6 +515,9 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
||||
protected void onLoad(LoadHandle handle) throws NoSuchChangeException, IOException {
|
||||
ObjectId rev = handle.id();
|
||||
if (rev == null) {
|
||||
// TODO(ekempin): Remove the primary storage check. At the moment it is still needed for the
|
||||
// ChangeNotesParserTest which still runs with ReviewDb changes (see TODO in
|
||||
// TestUpdate#newChange).
|
||||
if (PrimaryStorage.of(change) == PrimaryStorage.NOTE_DB && shouldExist) {
|
||||
throw new NoSuchChangeException(getChangeId());
|
||||
}
|
||||
|
||||
@@ -55,10 +55,9 @@ class ChangeControl {
|
||||
this.notesFactory = notesFactory;
|
||||
}
|
||||
|
||||
ChangeControl create(
|
||||
RefControl refControl, ReviewDb db, Project.NameKey project, Change.Id changeId)
|
||||
ChangeControl create(RefControl refControl, Project.NameKey project, Change.Id changeId)
|
||||
throws OrmException {
|
||||
return create(refControl, notesFactory.create(db, project, changeId));
|
||||
return create(refControl, notesFactory.create(project, changeId));
|
||||
}
|
||||
|
||||
ChangeControl create(RefControl refControl, ChangeNotes notes) {
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.google.gerrit.reviewdb.client.Branch;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RefNames;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.account.GroupMembership;
|
||||
import com.google.gerrit.server.config.GitReceivePackGroups;
|
||||
@@ -98,9 +97,9 @@ class ProjectControl {
|
||||
return new ForProjectImpl();
|
||||
}
|
||||
|
||||
ChangeControl controlFor(ReviewDb db, Change change) throws OrmException {
|
||||
ChangeControl controlFor(Change change) throws OrmException {
|
||||
return changeControlFactory.create(
|
||||
controlForRef(change.getDest()), db, change.getProject(), change.getId());
|
||||
controlForRef(change.getDest()), change.getProject(), change.getId());
|
||||
}
|
||||
|
||||
ChangeControl controlFor(ChangeNotes notes) {
|
||||
|
||||
@@ -442,9 +442,7 @@ class RefControl {
|
||||
public ForChange change(ChangeData cd) {
|
||||
try {
|
||||
// TODO(hiesel) Force callers to call database() and use db instead of cd.db()
|
||||
return getProjectControl()
|
||||
.controlFor(cd.db(), cd.change())
|
||||
.asForChange(cd, Providers.of(cd.db()));
|
||||
return getProjectControl().controlFor(cd.change()).asForChange(cd, Providers.of(cd.db()));
|
||||
} catch (OrmException e) {
|
||||
return FailedPermissionBackend.change("unavailable", e);
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ public class ChangeData {
|
||||
if (missing.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
for (ChangeNotes notes : first.notesFactory.create(first.db, missing.keySet())) {
|
||||
for (ChangeNotes notes : first.notesFactory.create(missing.keySet())) {
|
||||
missing.get(notes.getChangeId()).change = notes.getChange();
|
||||
}
|
||||
}
|
||||
@@ -571,7 +571,7 @@ public class ChangeData {
|
||||
|
||||
public Change reloadChange() throws OrmException {
|
||||
try {
|
||||
notes = notesFactory.createChecked(db, project, legacyId);
|
||||
notes = notesFactory.createChecked(project, legacyId);
|
||||
} catch (NoSuchChangeException e) {
|
||||
throw new OrmException("Unable to load change " + legacyId, e);
|
||||
}
|
||||
@@ -598,7 +598,7 @@ public class ChangeData {
|
||||
if (!lazyLoad) {
|
||||
throw new OrmException("ChangeNotes not available, lazyLoad = false");
|
||||
}
|
||||
notes = notesFactory.create(db, project(), legacyId);
|
||||
notes = notesFactory.create(project(), legacyId);
|
||||
}
|
||||
return notes;
|
||||
}
|
||||
|
||||
@@ -215,7 +215,6 @@ public class InternalChangeQuery extends InternalQuery<ChangeData> {
|
||||
|
||||
List<ChangeNotes> notes =
|
||||
notesFactory.create(
|
||||
db,
|
||||
branch.getParentKey(),
|
||||
changeIds,
|
||||
cn -> {
|
||||
|
||||
@@ -360,8 +360,7 @@ public class CherryPickChange {
|
||||
.setAccountsToNotify(notifyUtil.resolveAccounts(input.notifyDetails));
|
||||
if (input.keepReviewers && sourceChange != null) {
|
||||
ReviewerSet reviewerSet =
|
||||
approvalsUtil.getReviewers(
|
||||
changeNotesFactory.createChecked(dbProvider.get(), sourceChange));
|
||||
approvalsUtil.getReviewers(changeNotesFactory.createChecked(sourceChange));
|
||||
Set<Account.Id> reviewers =
|
||||
new HashSet<>(reviewerSet.byState(ReviewerStateInternal.REVIEWER));
|
||||
reviewers.add(sourceChange.getOwner());
|
||||
|
||||
@@ -215,8 +215,7 @@ public class Submit
|
||||
ReviewDb db = dbProvider.get();
|
||||
op.merge(db, change, submitter, true, input, false);
|
||||
try {
|
||||
change =
|
||||
changeNotesFactory.createChecked(db, change.getProject(), change.getId()).getChange();
|
||||
change = changeNotesFactory.createChecked(change.getProject(), change.getId()).getChange();
|
||||
} catch (NoSuchChangeException e) {
|
||||
throw new ResourceConflictException("change is deleted");
|
||||
}
|
||||
|
||||
@@ -638,7 +638,7 @@ public class BatchUpdate implements AutoCloseable {
|
||||
// Pass a synthetic change into ChangeNotes.Factory, which will take care of checking for
|
||||
// existence and populating columns from the parsed notes state.
|
||||
// TODO(dborowitz): This dance made more sense when using Reviewdb; consider a nicer way.
|
||||
c = ChangeNotes.Factory.newNoteDbOnlyChange(project, id);
|
||||
c = ChangeNotes.Factory.newChange(project, id);
|
||||
} else {
|
||||
logDebug("Change %s is new", id);
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ public class ChangeArgumentParser {
|
||||
}
|
||||
|
||||
private List<ChangeNotes> changeFromNotesFactory(String id) throws OrmException, UnloggedFailure {
|
||||
return changeNotesFactory.create(db, parseId(id));
|
||||
return changeNotesFactory.create(parseId(id));
|
||||
}
|
||||
|
||||
private List<Change.Id> parseId(String id) throws UnloggedFailure {
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RevId;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.PatchSetUtil;
|
||||
import com.google.gerrit.server.change.ChangeFinder;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
@@ -37,7 +36,6 @@ import java.util.List;
|
||||
|
||||
@Singleton
|
||||
public class PatchSetParser {
|
||||
private final Provider<ReviewDb> db;
|
||||
private final Provider<InternalChangeQuery> queryProvider;
|
||||
private final ChangeNotes.Factory notesFactory;
|
||||
private final PatchSetUtil psUtil;
|
||||
@@ -45,12 +43,10 @@ public class PatchSetParser {
|
||||
|
||||
@Inject
|
||||
PatchSetParser(
|
||||
Provider<ReviewDb> db,
|
||||
Provider<InternalChangeQuery> queryProvider,
|
||||
ChangeNotes.Factory notesFactory,
|
||||
PatchSetUtil psUtil,
|
||||
ChangeFinder changeFinder) {
|
||||
this.db = db;
|
||||
this.queryProvider = queryProvider;
|
||||
this.notesFactory = notesFactory;
|
||||
this.psUtil = psUtil;
|
||||
@@ -129,11 +125,11 @@ public class PatchSetParser {
|
||||
private ChangeNotes getNotes(@Nullable ProjectState projectState, Change.Id changeId)
|
||||
throws OrmException, UnloggedFailure {
|
||||
if (projectState != null) {
|
||||
return notesFactory.create(db.get(), projectState.getNameKey(), changeId);
|
||||
return notesFactory.create(projectState.getNameKey(), changeId);
|
||||
}
|
||||
try {
|
||||
ChangeNotes notes = changeFinder.findOne(changeId);
|
||||
return notesFactory.create(db.get(), notes.getProjectName(), changeId);
|
||||
return notesFactory.create(notes.getProjectName(), changeId);
|
||||
} catch (NoSuchChangeException e) {
|
||||
throw error("\"" + changeId + "\" no such change");
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ public class TestChanges {
|
||||
|
||||
public static Change newChange(Project.NameKey project, Account.Id userId, int id) {
|
||||
Change.Id changeId = new Change.Id(id);
|
||||
// TODO(ekempin): Create NoteDb change.
|
||||
Change c =
|
||||
new Change(
|
||||
new Change.Key("Iabcd1234abcd1234abcd1234abcd1234abcd1234"),
|
||||
|
||||
@@ -252,7 +252,7 @@ public class RefAdvertisementIT extends AbstractDaemonTest {
|
||||
public void uploadPackSubsetOfBranchesVisibleWithEdit() throws Exception {
|
||||
allow("refs/heads/master", Permission.READ, REGISTERED_USERS);
|
||||
|
||||
Change c = notesFactory.createChecked(db, project, c3.getId()).getChange();
|
||||
Change c = notesFactory.createChecked(project, c3.getId()).getChange();
|
||||
String changeId = c.getKey().get();
|
||||
|
||||
// Admin's edit is not visible.
|
||||
@@ -280,9 +280,9 @@ public class RefAdvertisementIT extends AbstractDaemonTest {
|
||||
allow("refs/heads/master", Permission.READ, REGISTERED_USERS);
|
||||
allow("refs/*", Permission.VIEW_PRIVATE_CHANGES, REGISTERED_USERS);
|
||||
|
||||
Change change3 = notesFactory.createChecked(db, project, c3.getId()).getChange();
|
||||
Change change3 = notesFactory.createChecked(project, c3.getId()).getChange();
|
||||
String changeId3 = change3.getKey().get();
|
||||
Change change4 = notesFactory.createChecked(db, project, c4.getId()).getChange();
|
||||
Change change4 = notesFactory.createChecked(project, c4.getId()).getChange();
|
||||
String changeId4 = change4.getKey().get();
|
||||
|
||||
// Admin's edit on change3 is visible.
|
||||
|
||||
@@ -317,7 +317,7 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
||||
}
|
||||
|
||||
private PatchSetApproval getSubmitter(PatchSet.Id patchSetId) throws Exception {
|
||||
ChangeNotes notes = notesFactory.createChecked(db, project, patchSetId.getParentKey()).load();
|
||||
ChangeNotes notes = notesFactory.createChecked(project, patchSetId.getParentKey()).load();
|
||||
return approvalsUtil.getSubmitter(notes, patchSetId);
|
||||
}
|
||||
|
||||
|
||||
@@ -1276,7 +1276,7 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
|
||||
|
||||
protected void assertSubmitter(String changeId, int psId, TestAccount user) throws Exception {
|
||||
Change c = getOnlyElement(queryProvider.get().byKeyPrefix(changeId)).change();
|
||||
ChangeNotes cn = notesFactory.createChecked(db, c);
|
||||
ChangeNotes cn = notesFactory.createChecked(c);
|
||||
PatchSetApproval submitter =
|
||||
approvalsUtil.getSubmitter(cn, new PatchSet.Id(cn.getChangeId(), psId));
|
||||
assertThat(submitter).isNotNull();
|
||||
@@ -1286,7 +1286,7 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
|
||||
|
||||
protected void assertNoSubmitter(String changeId, int psId) throws Exception {
|
||||
Change c = getOnlyElement(queryProvider.get().byKeyPrefix(changeId)).change();
|
||||
ChangeNotes cn = notesFactory.createChecked(db, c);
|
||||
ChangeNotes cn = notesFactory.createChecked(c);
|
||||
PatchSetApproval submitter =
|
||||
approvalsUtil.getSubmitter(cn, new PatchSet.Id(cn.getChangeId(), psId));
|
||||
assertThat(submitter).isNull();
|
||||
|
||||
@@ -950,7 +950,7 @@ public class CommentsIT extends AbstractDaemonTest {
|
||||
addComment(result.getChangeId(), "comment");
|
||||
|
||||
Collection<com.google.gerrit.reviewdb.client.Comment> comments =
|
||||
notesFactory.createChecked(db, project, changeId).getComments().values();
|
||||
notesFactory.createChecked(project, changeId).getComments().values();
|
||||
assertThat(comments).hasSize(1);
|
||||
com.google.gerrit.reviewdb.client.Comment comment = comments.iterator().next();
|
||||
assertThat(comment.message).isEqualTo("comment");
|
||||
|
||||
@@ -261,7 +261,7 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
|
||||
+ rev
|
||||
+ "\n");
|
||||
indexer.index(db, c.getProject(), c.getId());
|
||||
ChangeNotes notes = changeNotesFactory.create(db, c.getProject(), c.getId());
|
||||
ChangeNotes notes = changeNotesFactory.create(c.getProject(), c.getId());
|
||||
|
||||
FixInput fix = new FixInput();
|
||||
fix.deletePatchSetIfCommitMissing = true;
|
||||
@@ -760,7 +760,7 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
|
||||
.setSendMail(false);
|
||||
bu.insertChange(ins).execute();
|
||||
}
|
||||
return changeNotesFactory.create(db, project, ins.getChange().getId());
|
||||
return changeNotesFactory.create(project, ins.getChange().getId());
|
||||
}
|
||||
|
||||
private PatchSet.Id nextPatchSetId(ChangeNotes notes) throws Exception {
|
||||
@@ -787,7 +787,7 @@ public class ConsistencyCheckerIT extends AbstractDaemonTest {
|
||||
}
|
||||
|
||||
private ChangeNotes reload(ChangeNotes notes) throws Exception {
|
||||
return changeNotesFactory.create(db, notes.getChange().getProject(), notes.getChangeId());
|
||||
return changeNotesFactory.create(notes.getChange().getProject(), notes.getChangeId());
|
||||
}
|
||||
|
||||
private RevCommit patchSetCommit(PatchSet.Id psId) throws Exception {
|
||||
|
||||
@@ -189,8 +189,8 @@ public class NoteDbOnlyIT extends AbstractDaemonTest {
|
||||
@Test
|
||||
public void missingChange() throws Exception {
|
||||
Change.Id changeId = new Change.Id(1234567);
|
||||
assertNoSuchChangeException(() -> notesFactory.create(db, project, changeId));
|
||||
assertNoSuchChangeException(() -> notesFactory.createChecked(db, project, changeId));
|
||||
assertNoSuchChangeException(() -> notesFactory.create(project, changeId));
|
||||
assertNoSuchChangeException(() -> notesFactory.createChecked(project, changeId));
|
||||
}
|
||||
|
||||
private void assertNoSuchChangeException(Callable<?> callable) throws Exception {
|
||||
|
||||
@@ -135,7 +135,7 @@ public class LabelNormalizerTest extends GerritBaseTests {
|
||||
input.newBranch = true;
|
||||
input.subject = "Test change";
|
||||
ChangeInfo info = gApi.changes().create(input).get();
|
||||
notes = changeNotesFactory.createChecked(db, allProjects, new Change.Id(info._number));
|
||||
notes = changeNotesFactory.createChecked(allProjects, new Change.Id(info._number));
|
||||
change = notes.getChange();
|
||||
}
|
||||
|
||||
|
||||
@@ -1303,7 +1303,7 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
assertQuery("status:new", change2, change1);
|
||||
|
||||
gApi.changes().id(change1.getId().get()).topic("new-topic");
|
||||
change1 = notesFactory.create(db, change1.getProject(), change1.getId()).getChange();
|
||||
change1 = notesFactory.create(change1.getProject(), change1.getId()).getChange();
|
||||
|
||||
assertThat(lastUpdatedMs(change1)).isGreaterThan(lastUpdatedMs(change2));
|
||||
assertThat(lastUpdatedMs(change1) - lastUpdatedMs(change2))
|
||||
@@ -2276,7 +2276,7 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
TestRepository<Repo> repo = createProject(project.get());
|
||||
Change change = insert(repo, newChange(repo));
|
||||
String changeId = change.getKey().get();
|
||||
ChangeNotes notes = notesFactory.create(db, change.getProject(), change.getId());
|
||||
ChangeNotes notes = notesFactory.create(change.getProject(), change.getId());
|
||||
PatchSet ps = psUtil.get(notes, change.currentPatchSetId());
|
||||
|
||||
requestContext.setContext(newRequestContext(user));
|
||||
@@ -2985,7 +2985,7 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
|
||||
PatchSetInserter inserter =
|
||||
patchSetFactory
|
||||
.create(changeNotesFactory.createChecked(db, c), new PatchSet.Id(c.getId(), n), commit)
|
||||
.create(changeNotesFactory.createChecked(c), new PatchSet.Id(c.getId(), n), commit)
|
||||
.setNotify(NotifyHandling.NONE)
|
||||
.setFireRevisionCreated(false)
|
||||
.setValidate(false);
|
||||
|
||||
Submodule plugins/reviewnotes updated: fdbadf312d...25f0314fb6
Reference in New Issue
Block a user