Merge branch 'stable-2.16' into stable-3.0 * stable-2.16: CreateReviewNotes: Use UTF_8 constant from StandardCharsets Change-Id: I499c81f625949ced7764a84eaab24b7fd6848161
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java index cd08f65..ff255ae 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java +++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/CreateReviewNotes.java
@@ -20,18 +20,18 @@ import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.LabelTypes; import com.google.gerrit.extensions.registration.DynamicItem; +import com.google.gerrit.git.LockFailureException; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.Project; -import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.GerritPersonIdent; +import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.account.AccountCache; import com.google.gerrit.server.account.AccountState; import com.google.gerrit.server.config.AnonymousCowardName; import com.google.gerrit.server.config.UrlFormatter; -import com.google.gerrit.server.git.LockFailureException; import com.google.gerrit.server.git.NotesBranchUtil; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.project.NoSuchChangeException; @@ -39,7 +39,6 @@ import com.google.gerrit.server.project.ProjectState; import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.query.change.InternalChangeQuery; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.assistedinject.Assisted; @@ -64,7 +63,7 @@ private static final FluentLogger logger = FluentLogger.forEnclosingClass(); interface Factory { - CreateReviewNotes create(ReviewDb reviewDb, Project.NameKey project, Repository git); + CreateReviewNotes create(Project.NameKey project, Repository git); } private static final String REFS_NOTES_REVIEW = "refs/notes/review"; @@ -78,7 +77,7 @@ private final NotesBranchUtil.Factory notesBranchUtilFactory; private final Provider<InternalChangeQuery> queryProvider; private final DynamicItem<UrlFormatter> urlFormatter; - private final ReviewDb reviewDb; + private final PatchSetUtil psUtil; private final Project.NameKey project; private final Repository git; @@ -97,7 +96,7 @@ NotesBranchUtil.Factory notesBranchUtilFactory, Provider<InternalChangeQuery> queryProvider, DynamicItem<UrlFormatter> urlFormatter, - @Assisted ReviewDb reviewDb, + PatchSetUtil psUtil, @Assisted Project.NameKey project, @Assisted Repository git) { this.gerritServerIdent = gerritIdent; @@ -118,14 +117,14 @@ this.notesBranchUtilFactory = notesBranchUtilFactory; this.queryProvider = queryProvider; this.urlFormatter = urlFormatter; - this.reviewDb = reviewDb; + this.psUtil = psUtil; this.project = project; this.git = git; } void createNotes( String branch, ObjectId oldObjectId, ObjectId newObjectId, ProgressMonitor monitor) - throws OrmException, IOException { + throws IOException { if (ObjectId.zeroId().equals(newObjectId)) { return; } @@ -151,7 +150,7 @@ for (RevCommit c : rw) { PatchSet ps = loadPatchSet(c, branch); if (ps != null) { - ChangeNotes notes = notesFactory.create(reviewDb, project, ps.getId().getParentKey()); + ChangeNotes notes = notesFactory.create(project, ps.getId().changeId()); ObjectId content = createNoteContent(notes, ps); if (content != null) { monitor.update(1); @@ -166,8 +165,7 @@ } } - void createNotes(List<ChangeNotes> notes, ProgressMonitor monitor) - throws OrmException, IOException { + void createNotes(List<ChangeNotes> notes, ProgressMonitor monitor) throws IOException { try (RevWalk rw = new RevWalk(git)) { if (monitor == null) { monitor = NullProgressMonitor.INSTANCE; @@ -175,7 +173,7 @@ for (ChangeNotes cn : notes) { monitor.update(1); - PatchSet ps = reviewDb.patchSets().get(cn.getChange().currentPatchSetId()); + PatchSet ps = psUtil.current(cn); ObjectId commitId = ObjectId.fromString(ps.getRevision().get()); RevCommit commit = rw.parseCommit(commitId); getNotes().set(commitId, createNoteContent(cn, ps)); @@ -225,8 +223,7 @@ } } - private ObjectId createNoteContent(ChangeNotes notes, PatchSet ps) - throws OrmException, IOException { + private ObjectId createNoteContent(ChangeNotes notes, PatchSet ps) throws IOException { HeaderFormatter fmt = new HeaderFormatter(gerritServerIdent.getTimeZone(), anonymousCowardName); if (ps != null) { try { @@ -239,7 +236,7 @@ return null; } - private PatchSet loadPatchSet(RevCommit c, String destBranch) throws OrmException { + private PatchSet loadPatchSet(RevCommit c, String destBranch) { String hash = c.name(); for (ChangeData cd : queryProvider.get().byBranchCommit(project.get(), destBranch, hash)) { for (PatchSet ps : cd.patchSets()) { @@ -252,7 +249,7 @@ } private void createCodeReviewNote(ChangeNotes notes, PatchSet ps, HeaderFormatter fmt) - throws OrmException, NoSuchChangeException { + throws NoSuchChangeException { // This races with the label normalization/writeback done by MergeOp. It may // repeat some work, but results should be identical except in the case of // an additional race with a permissions change. @@ -260,7 +257,7 @@ // commit time so we will be able to skip this normalization step. Change change = notes.getChange(); PatchSetApproval submit = null; - for (PatchSetApproval a : approvalsUtil.byPatchSet(reviewDb, notes, ps.getId(), null, null)) { + for (PatchSetApproval a : approvalsUtil.byPatchSet(notes, ps.getId(), null, null)) { if (a.getValue() == 0) { // Ignore 0 values. } else if (a.isLegacySubmit()) { @@ -285,10 +282,10 @@ UrlFormatter uf = urlFormatter.get(); if (uf != null && uf.getWebUrl().isPresent()) { - fmt.appendReviewedOn(uf, notes.getChange().getProject(), ps.getId().getParentKey()); + fmt.appendReviewedOn(uf, notes.getChange().getProject(), ps.getId().changeId()); } fmt.appendProject(project.get()); - fmt.appendBranch(change.getDest().get()); + fmt.appendBranch(change.getDest().branch()); } private ObjectInserter getInserter() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java index b714a73..1d512c6 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java +++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
@@ -21,17 +21,13 @@ import com.google.common.collect.Maps; import com.google.common.collect.MultimapBuilder; import com.google.gerrit.extensions.restapi.RestApiException; -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.server.git.GitRepositoryManager; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.update.RetryHelper; import com.google.gerrit.server.update.UpdateException; import com.google.gerrit.sshd.CommandMetaData; import com.google.gerrit.sshd.SshCommand; -import com.google.gwtorm.server.OrmException; -import com.google.gwtorm.server.SchemaFactory; import com.google.inject.Inject; import java.io.IOException; import java.util.List; @@ -52,8 +48,6 @@ @Inject private GitRepositoryManager gitManager; - @Inject private SchemaFactory<ReviewDb> database; - @Inject private CreateReviewNotes.Factory reviewNotesFactory; @Inject private ChangeNotes.Factory notesFactory; @@ -82,24 +76,22 @@ } private ListMultimap<Project.NameKey, ChangeNotes> mergedChanges() { - try (ReviewDb db = database.open()) { + try { return MultimapBuilder.hashKeys() .arrayListValues() - .build( - notesFactory.create( - db, notes -> notes.getChange().getStatus() == Change.Status.MERGED)); - } catch (OrmException | IOException e) { + .build(notesFactory.create(notes -> notes.getChange().isMerged())); + } catch (IOException e) { stderr.println("Cannot read changes from database " + e.getMessage()); return ImmutableListMultimap.of(); } } - private void export(ReviewDb db, Project.NameKey project, List<ChangeNotes> notes) + private void export(Project.NameKey project, List<ChangeNotes> notes) throws RestApiException, UpdateException { retryHelper.execute( updateFactory -> { try (Repository git = gitManager.openRepository(project)) { - CreateReviewNotes crn = reviewNotesFactory.create(db, project, git); + CreateReviewNotes crn = reviewNotesFactory.create(project, git); crn.createNotes(notes, monitor); crn.commitNotes(); } catch (RepositoryNotFoundException e) { @@ -132,12 +124,12 @@ private class Worker extends Thread { @Override public void run() { - try (ReviewDb db = database.open()) { + try { for (; ; ) { Map.Entry<Project.NameKey, List<ChangeNotes>> next = next(); if (next != null) { try { - export(db, next.getKey(), next.getValue()); + export(next.getKey(), next.getValue()); } catch (RestApiException | UpdateException e) { stderr.println(e.getMessage()); } @@ -145,8 +137,6 @@ break; } } - } catch (OrmException e) { - stderr.println(e.getMessage()); } finally { monitor.endWorker(); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java index d8e0e83..3365abe 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java +++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/RefUpdateListener.java
@@ -19,14 +19,12 @@ import com.google.gerrit.extensions.restapi.RestApiException; 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.config.GerritServerConfig; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.ProjectRunnable; import com.google.gerrit.server.git.WorkQueue; import com.google.gerrit.server.update.RetryHelper; import com.google.gerrit.server.update.UpdateException; -import com.google.gwtorm.server.SchemaFactory; import com.google.inject.Inject; import java.util.concurrent.Future; import org.eclipse.jgit.lib.Config; @@ -37,7 +35,6 @@ private static final FluentLogger logger = FluentLogger.forEnclosingClass(); private final CreateReviewNotes.Factory reviewNotesFactory; - private final SchemaFactory<ReviewDb> schema; private final GitRepositoryManager repoManager; private final WorkQueue workQueue; private final RetryHelper retryHelper; @@ -46,13 +43,11 @@ @Inject RefUpdateListener( CreateReviewNotes.Factory reviewNotesFactory, - SchemaFactory<ReviewDb> schema, GitRepositoryManager repoManager, WorkQueue workQueue, RetryHelper retryHelper, @GerritServerConfig Config config) { this.reviewNotesFactory = reviewNotesFactory; - this.schema = schema; this.repoManager = repoManager; this.workQueue = workQueue; this.retryHelper = retryHelper; @@ -70,7 +65,7 @@ @Override public Project.NameKey getProjectNameKey() { - return new Project.NameKey(e.getProjectName()); + return Project.nameKey(e.getProjectName()); } @Override @@ -103,10 +98,9 @@ try { retryHelper.execute( updateFactory -> { - Project.NameKey projectName = new Project.NameKey(e.getProjectName()); - try (Repository git = repoManager.openRepository(projectName); - ReviewDb reviewDb = schema.open()) { - CreateReviewNotes crn = reviewNotesFactory.create(reviewDb, projectName, git); + Project.NameKey projectName = Project.nameKey(e.getProjectName()); + try (Repository git = repoManager.openRepository(projectName)) { + CreateReviewNotes crn = reviewNotesFactory.create(projectName, git); crn.createNotes( e.getRefName(), ObjectId.fromString(e.getOldObjectId()),
diff --git a/src/main/resources/Documentation/cmd-export.md b/src/main/resources/Documentation/cmd-export.md index 011e51a..1472578 100644 --- a/src/main/resources/Documentation/cmd-export.md +++ b/src/main/resources/Documentation/cmd-export.md
@@ -19,8 +19,7 @@ each merged change. This task can take quite some time, but can run in the background -concurrently to the server if the database is MySQL or PostgreSQL. -If the database is H2, this task must be run by itself. +concurrently to the server. ACCESS ------