Start migration to notedb implementation of PatchSetApprovals
Encapsulate the current state of the migration in a NotesMigration class. For each database table (or broader group of functionality) that we migrate to notedb, configure a boolean indicating whether that data should be read from notes, defaulting to false. Unlike reads, NotesMigration contains just a single boolean indicating that data should be written. We don't attempt to write just some types of data; as the migration continues we will just rewrite history. Since most existing reads of the PatchSetApprovals table have been migrated to ApprovalsUtil, most implementation changes happen there. There are a few other implementations scattered around, and some that will require a bit more work (e.g. stamping normalized approvals at submit time). Change-Id: I5676267d4de607c385e8c9917a89333863b9c9e7
This commit is contained in:
@@ -30,6 +30,7 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.ApprovalsUtil;
|
||||
import com.google.gerrit.server.account.AccountInfo;
|
||||
import com.google.gerrit.server.git.LabelNormalizer;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -44,16 +45,19 @@ import java.util.TreeMap;
|
||||
public class ReviewerJson {
|
||||
private final Provider<ReviewDb> db;
|
||||
private final ChangeData.Factory changeDataFactory;
|
||||
private final ApprovalsUtil approvalsUtil;
|
||||
private final LabelNormalizer labelNormalizer;
|
||||
private final AccountInfo.Loader.Factory accountLoaderFactory;
|
||||
|
||||
@Inject
|
||||
ReviewerJson(Provider<ReviewDb> db,
|
||||
ChangeData.Factory changeDataFactory,
|
||||
ApprovalsUtil approvalsUtil,
|
||||
LabelNormalizer labelNormalizer,
|
||||
AccountInfo.Loader.Factory accountLoaderFactory) {
|
||||
this.db = db;
|
||||
this.changeDataFactory = changeDataFactory;
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
this.labelNormalizer = labelNormalizer;
|
||||
this.accountLoaderFactory = accountLoaderFactory;
|
||||
}
|
||||
@@ -75,14 +79,12 @@ public class ReviewerJson {
|
||||
return format(ImmutableList.<ReviewerResource> of(rsrc));
|
||||
}
|
||||
|
||||
public ReviewerInfo format(ReviewerInfo out, ChangeControl ctl,
|
||||
List<PatchSetApproval> approvals) throws OrmException {
|
||||
public ReviewerInfo format(ReviewerInfo out, ChangeNotes changeNotes,
|
||||
ChangeControl ctl, List<PatchSetApproval> approvals) throws OrmException {
|
||||
PatchSet.Id psId = ctl.getChange().currentPatchSetId();
|
||||
|
||||
if (approvals == null) {
|
||||
approvals = ApprovalsUtil.sortApprovals(db.get().patchSetApprovals()
|
||||
.byPatchSetUser(psId, out._id));
|
||||
}
|
||||
approvals =
|
||||
approvalsUtil.byPatchSetUser(db.get(), changeNotes, psId, out._id);
|
||||
approvals = labelNormalizer.normalize(ctl, approvals);
|
||||
LabelTypes labelTypes = ctl.getLabelTypes();
|
||||
|
||||
@@ -129,7 +131,7 @@ public class ReviewerJson {
|
||||
private ReviewerInfo format(ReviewerResource rsrc,
|
||||
List<PatchSetApproval> approvals) throws OrmException {
|
||||
return format(new ReviewerInfo(rsrc.getUser().getAccountId()),
|
||||
rsrc.getUserControl(), approvals);
|
||||
rsrc.getNotes(), rsrc.getUserControl(), approvals);
|
||||
}
|
||||
|
||||
public static class ReviewerInfo extends AccountInfo {
|
||||
|
Reference in New Issue
Block a user