Index change status in the secondary index
Change-Id: I4dd8a815c1886be4e955267b0d9d2e23d0e41a4b
This commit is contained in:
@@ -28,6 +28,7 @@ import com.google.gerrit.server.ApprovalsUtil;
|
|||||||
import com.google.gerrit.server.ChangeUtil;
|
import com.google.gerrit.server.ChangeUtil;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
import com.google.gerrit.server.change.Abandon.Input;
|
import com.google.gerrit.server.change.Abandon.Input;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.mail.AbandonedSender;
|
import com.google.gerrit.server.mail.AbandonedSender;
|
||||||
import com.google.gerrit.server.mail.ReplyToChangeSender;
|
import com.google.gerrit.server.mail.ReplyToChangeSender;
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
import com.google.gerrit.server.project.ChangeControl;
|
||||||
@@ -48,6 +49,7 @@ public class Abandon implements RestModifyView<ChangeResource, Input> {
|
|||||||
private final AbandonedSender.Factory abandonedSenderFactory;
|
private final AbandonedSender.Factory abandonedSenderFactory;
|
||||||
private final Provider<ReviewDb> dbProvider;
|
private final Provider<ReviewDb> dbProvider;
|
||||||
private final ChangeJson json;
|
private final ChangeJson json;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
|
||||||
public static class Input {
|
public static class Input {
|
||||||
@DefaultInput
|
@DefaultInput
|
||||||
@@ -58,11 +60,13 @@ public class Abandon implements RestModifyView<ChangeResource, Input> {
|
|||||||
Abandon(ChangeHooks hooks,
|
Abandon(ChangeHooks hooks,
|
||||||
AbandonedSender.Factory abandonedSenderFactory,
|
AbandonedSender.Factory abandonedSenderFactory,
|
||||||
Provider<ReviewDb> dbProvider,
|
Provider<ReviewDb> dbProvider,
|
||||||
ChangeJson json) {
|
ChangeJson json,
|
||||||
|
ChangeIndexer indexer) {
|
||||||
this.hooks = hooks;
|
this.hooks = hooks;
|
||||||
this.abandonedSenderFactory = abandonedSenderFactory;
|
this.abandonedSenderFactory = abandonedSenderFactory;
|
||||||
this.dbProvider = dbProvider;
|
this.dbProvider = dbProvider;
|
||||||
this.json = json;
|
this.json = json;
|
||||||
|
this.indexer = indexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -107,6 +111,7 @@ public class Abandon implements RestModifyView<ChangeResource, Input> {
|
|||||||
db.rollback();
|
db.rollback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
indexer.index(change);
|
||||||
try {
|
try {
|
||||||
ReplyToChangeSender cm = abandonedSenderFactory.create(change);
|
ReplyToChangeSender cm = abandonedSenderFactory.create(change);
|
||||||
cm.setFrom(caller.getAccountId());
|
cm.setFrom(caller.getAccountId());
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import com.google.gerrit.server.ApprovalsUtil;
|
|||||||
import com.google.gerrit.server.ChangeUtil;
|
import com.google.gerrit.server.ChangeUtil;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
import com.google.gerrit.server.change.Restore.Input;
|
import com.google.gerrit.server.change.Restore.Input;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.mail.ReplyToChangeSender;
|
import com.google.gerrit.server.mail.ReplyToChangeSender;
|
||||||
import com.google.gerrit.server.mail.RestoredSender;
|
import com.google.gerrit.server.mail.RestoredSender;
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
import com.google.gerrit.server.project.ChangeControl;
|
||||||
@@ -48,6 +49,7 @@ public class Restore implements RestModifyView<ChangeResource, Input> {
|
|||||||
private final RestoredSender.Factory restoredSenderFactory;
|
private final RestoredSender.Factory restoredSenderFactory;
|
||||||
private final Provider<ReviewDb> dbProvider;
|
private final Provider<ReviewDb> dbProvider;
|
||||||
private final ChangeJson json;
|
private final ChangeJson json;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
|
||||||
public static class Input {
|
public static class Input {
|
||||||
@DefaultInput
|
@DefaultInput
|
||||||
@@ -58,11 +60,13 @@ public class Restore implements RestModifyView<ChangeResource, Input> {
|
|||||||
Restore(ChangeHooks hooks,
|
Restore(ChangeHooks hooks,
|
||||||
RestoredSender.Factory restoredSenderFactory,
|
RestoredSender.Factory restoredSenderFactory,
|
||||||
Provider<ReviewDb> dbProvider,
|
Provider<ReviewDb> dbProvider,
|
||||||
ChangeJson json) {
|
ChangeJson json,
|
||||||
|
ChangeIndexer indexer) {
|
||||||
this.hooks = hooks;
|
this.hooks = hooks;
|
||||||
this.restoredSenderFactory = restoredSenderFactory;
|
this.restoredSenderFactory = restoredSenderFactory;
|
||||||
this.dbProvider = dbProvider;
|
this.dbProvider = dbProvider;
|
||||||
this.json = json;
|
this.json = json;
|
||||||
|
this.indexer = indexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -98,6 +102,7 @@ public class Restore implements RestModifyView<ChangeResource, Input> {
|
|||||||
throw new ResourceConflictException("change is "
|
throw new ResourceConflictException("change is "
|
||||||
+ status(db.changes().get(req.getChange().getId())));
|
+ status(db.changes().get(req.getChange().getId())));
|
||||||
}
|
}
|
||||||
|
indexer.index(change);
|
||||||
message = newMessage(input, caller, change);
|
message = newMessage(input, caller, change);
|
||||||
db.changeMessages().insert(Collections.singleton(message));
|
db.changeMessages().insert(Collections.singleton(message));
|
||||||
new ApprovalsUtil(db).syncChangeStatus(change);
|
new ApprovalsUtil(db).syncChangeStatus(change);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import com.google.gerrit.server.ProjectUtil;
|
|||||||
import com.google.gerrit.server.change.Submit.Input;
|
import com.google.gerrit.server.change.Submit.Input;
|
||||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||||
import com.google.gerrit.server.git.MergeQueue;
|
import com.google.gerrit.server.git.MergeQueue;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
import com.google.gerrit.server.project.ChangeControl;
|
||||||
import com.google.gwtorm.server.AtomicUpdate;
|
import com.google.gwtorm.server.AtomicUpdate;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
@@ -72,14 +73,17 @@ public class Submit implements RestModifyView<RevisionResource, Input> {
|
|||||||
private final Provider<ReviewDb> dbProvider;
|
private final Provider<ReviewDb> dbProvider;
|
||||||
private final GitRepositoryManager repoManager;
|
private final GitRepositoryManager repoManager;
|
||||||
private final MergeQueue mergeQueue;
|
private final MergeQueue mergeQueue;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
Submit(Provider<ReviewDb> dbProvider,
|
Submit(Provider<ReviewDb> dbProvider,
|
||||||
GitRepositoryManager repoManager,
|
GitRepositoryManager repoManager,
|
||||||
MergeQueue mergeQueue) {
|
MergeQueue mergeQueue,
|
||||||
|
ChangeIndexer indexer) {
|
||||||
this.dbProvider = dbProvider;
|
this.dbProvider = dbProvider;
|
||||||
this.repoManager = repoManager;
|
this.repoManager = repoManager;
|
||||||
this.mergeQueue = mergeQueue;
|
this.mergeQueue = mergeQueue;
|
||||||
|
this.indexer = indexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -187,6 +191,7 @@ public class Submit implements RestModifyView<RevisionResource, Input> {
|
|||||||
} finally {
|
} finally {
|
||||||
db.rollback();
|
db.rollback();
|
||||||
}
|
}
|
||||||
|
indexer.index(change);
|
||||||
return change;
|
return change;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import com.google.gerrit.server.ChangeUtil;
|
|||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
import com.google.gerrit.server.account.AccountResolver;
|
import com.google.gerrit.server.account.AccountResolver;
|
||||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.mail.CreateChangeSender;
|
import com.google.gerrit.server.mail.CreateChangeSender;
|
||||||
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
|
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
|
||||||
import com.google.gerrit.server.mail.ReplacePatchSetSender;
|
import com.google.gerrit.server.mail.ReplacePatchSetSender;
|
||||||
@@ -40,6 +41,7 @@ import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
|||||||
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
|
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
import com.google.gerrit.server.project.ChangeControl;
|
||||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||||
|
import com.google.gerrit.server.util.RequestScopePropagator;
|
||||||
import com.google.gwtorm.server.AtomicUpdate;
|
import com.google.gwtorm.server.AtomicUpdate;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
@@ -75,6 +77,8 @@ public class PublishDraft implements Callable<ReviewResult> {
|
|||||||
private final AccountResolver accountResolver;
|
private final AccountResolver accountResolver;
|
||||||
private final CreateChangeSender.Factory createChangeSenderFactory;
|
private final CreateChangeSender.Factory createChangeSenderFactory;
|
||||||
private final ReplacePatchSetSender.Factory replacePatchSetFactory;
|
private final ReplacePatchSetSender.Factory replacePatchSetFactory;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
private final RequestScopePropagator requestScopePropagator;
|
||||||
|
|
||||||
private final PatchSet.Id patchSetId;
|
private final PatchSet.Id patchSetId;
|
||||||
|
|
||||||
@@ -87,6 +91,8 @@ public class PublishDraft implements Callable<ReviewResult> {
|
|||||||
final AccountResolver accountResolver,
|
final AccountResolver accountResolver,
|
||||||
final CreateChangeSender.Factory createChangeSenderFactory,
|
final CreateChangeSender.Factory createChangeSenderFactory,
|
||||||
final ReplacePatchSetSender.Factory replacePatchSetFactory,
|
final ReplacePatchSetSender.Factory replacePatchSetFactory,
|
||||||
|
final ChangeIndexer indexer,
|
||||||
|
final RequestScopePropagator requestScopePropagator,
|
||||||
@Assisted final PatchSet.Id patchSetId) {
|
@Assisted final PatchSet.Id patchSetId) {
|
||||||
this.changeControlFactory = changeControlFactory;
|
this.changeControlFactory = changeControlFactory;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
@@ -97,6 +103,8 @@ public class PublishDraft implements Callable<ReviewResult> {
|
|||||||
this.accountResolver = accountResolver;
|
this.accountResolver = accountResolver;
|
||||||
this.createChangeSenderFactory = createChangeSenderFactory;
|
this.createChangeSenderFactory = createChangeSenderFactory;
|
||||||
this.replacePatchSetFactory = replacePatchSetFactory;
|
this.replacePatchSetFactory = replacePatchSetFactory;
|
||||||
|
this.indexer = indexer;
|
||||||
|
this.requestScopePropagator = requestScopePropagator;
|
||||||
|
|
||||||
this.patchSetId = patchSetId;
|
this.patchSetId = patchSetId;
|
||||||
}
|
}
|
||||||
@@ -146,6 +154,7 @@ public class PublishDraft implements Callable<ReviewResult> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!updatedPatchSet.isDraft() || updatedChange.getStatus() == Change.Status.NEW) {
|
if (!updatedPatchSet.isDraft() || updatedChange.getStatus() == Change.Status.NEW) {
|
||||||
|
indexer.index(updatedChange, requestScopePropagator);
|
||||||
hooks.doDraftPublishedHook(updatedChange, updatedPatchSet, db);
|
hooks.doDraftPublishedHook(updatedChange, updatedPatchSet, db);
|
||||||
|
|
||||||
sendNotifications(control.getChange().getStatus() == Change.Status.DRAFT,
|
sendNotifications(control.getChange().getStatus() == Change.Status.DRAFT,
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
|||||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||||
import com.google.gerrit.server.git.MergeUtil;
|
import com.google.gerrit.server.git.MergeUtil;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.mail.RebasedPatchSetSender;
|
import com.google.gerrit.server.mail.RebasedPatchSetSender;
|
||||||
import com.google.gerrit.server.mail.ReplacePatchSetSender;
|
import com.google.gerrit.server.mail.ReplacePatchSetSender;
|
||||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||||
@@ -75,6 +76,7 @@ public class RebaseChange {
|
|||||||
private final ChangeHookRunner hooks;
|
private final ChangeHookRunner hooks;
|
||||||
private final MergeUtil.Factory mergeUtilFactory;
|
private final MergeUtil.Factory mergeUtilFactory;
|
||||||
private final ProjectCache projectCache;
|
private final ProjectCache projectCache;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RebaseChange(final ChangeControl.GenericFactory changeControlFactory,
|
RebaseChange(final ChangeControl.GenericFactory changeControlFactory,
|
||||||
@@ -85,7 +87,8 @@ public class RebaseChange {
|
|||||||
final RebasedPatchSetSender.Factory rebasedPatchSetSenderFactory,
|
final RebasedPatchSetSender.Factory rebasedPatchSetSenderFactory,
|
||||||
final ChangeHookRunner hooks,
|
final ChangeHookRunner hooks,
|
||||||
final MergeUtil.Factory mergeUtilFactory,
|
final MergeUtil.Factory mergeUtilFactory,
|
||||||
final ProjectCache projectCache) {
|
final ProjectCache projectCache,
|
||||||
|
final ChangeIndexer changeIndexer) {
|
||||||
this.changeControlFactory = changeControlFactory;
|
this.changeControlFactory = changeControlFactory;
|
||||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
@@ -96,6 +99,7 @@ public class RebaseChange {
|
|||||||
this.hooks = hooks;
|
this.hooks = hooks;
|
||||||
this.mergeUtilFactory = mergeUtilFactory;
|
this.mergeUtilFactory = mergeUtilFactory;
|
||||||
this.projectCache = projectCache;
|
this.projectCache = projectCache;
|
||||||
|
this.indexer = changeIndexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -156,10 +160,10 @@ public class RebaseChange {
|
|||||||
uploader.newCommitterIdent(myIdent.getWhen(),
|
uploader.newCommitterIdent(myIdent.getWhen(),
|
||||||
myIdent.getTimeZone());
|
myIdent.getTimeZone());
|
||||||
|
|
||||||
final PatchSet newPatchSet =
|
final PatchSet newPatchSet = rebase(git, rw, inserter, patchSetId, change,
|
||||||
rebase(git, rw, inserter, patchSetId, change, uploader.getAccountId(), baseCommit,
|
uploader.getAccountId(), baseCommit, mergeUtilFactory.create(
|
||||||
mergeUtilFactory.create(
|
changeControl.getProjectControl().getProjectState(), true),
|
||||||
changeControl.getProjectControl().getProjectState(), true), committerIdent);
|
committerIdent, indexer);
|
||||||
|
|
||||||
final Set<Account.Id> oldReviewers = Sets.newHashSet();
|
final Set<Account.Id> oldReviewers = Sets.newHashSet();
|
||||||
final Set<Account.Id> oldCC = Sets.newHashSet();
|
final Set<Account.Id> oldCC = Sets.newHashSet();
|
||||||
@@ -301,6 +305,7 @@ public class RebaseChange {
|
|||||||
* @param uploader the user that creates the rebased patch set
|
* @param uploader the user that creates the rebased patch set
|
||||||
* @param baseCommit the commit that should be the new base
|
* @param baseCommit the commit that should be the new base
|
||||||
* @param mergeUtil merge utilities for the destination project
|
* @param mergeUtil merge utilities for the destination project
|
||||||
|
* @param indexer helper for indexing the change
|
||||||
* @return the new patch set which is based on the given base commit
|
* @return the new patch set which is based on the given base commit
|
||||||
* @throws NoSuchChangeException thrown if the change to which the patch set
|
* @throws NoSuchChangeException thrown if the change to which the patch set
|
||||||
* belongs does not exist or is not visible to the user
|
* belongs does not exist or is not visible to the user
|
||||||
@@ -311,7 +316,8 @@ public class RebaseChange {
|
|||||||
public PatchSet rebase(final Repository git, final RevWalk revWalk,
|
public PatchSet rebase(final Repository git, final RevWalk revWalk,
|
||||||
final ObjectInserter inserter, final PatchSet.Id patchSetId,
|
final ObjectInserter inserter, final PatchSet.Id patchSetId,
|
||||||
final Change chg, final Account.Id uploader, final RevCommit baseCommit,
|
final Change chg, final Account.Id uploader, final RevCommit baseCommit,
|
||||||
final MergeUtil mergeUtil, PersonIdent committerIdent) throws NoSuchChangeException,
|
final MergeUtil mergeUtil, PersonIdent committerIdent,
|
||||||
|
final ChangeIndexer indexer) throws NoSuchChangeException,
|
||||||
OrmException, IOException, InvalidChangeOperationException,
|
OrmException, IOException, InvalidChangeOperationException,
|
||||||
PathConflictException {
|
PathConflictException {
|
||||||
Change change = chg;
|
Change change = chg;
|
||||||
@@ -383,6 +389,7 @@ public class RebaseChange {
|
|||||||
"Change %s was modified", change.getId()));
|
"Change %s was modified", change.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
indexer.index(change);
|
||||||
ApprovalsUtil.copyLabels(db, projectCache.get(change.getProject())
|
ApprovalsUtil.copyLabels(db, projectCache.get(change.getProject())
|
||||||
.getLabelTypes(), patchSetId, change.currentPatchSetId());
|
.getLabelTypes(), patchSetId, change.currentPatchSetId());
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
package com.google.gerrit.server.git;
|
package com.google.gerrit.server.git;
|
||||||
|
|
||||||
import static com.google.gerrit.server.git.MergeUtil.getSubmitter;
|
import static com.google.gerrit.server.git.MergeUtil.getSubmitter;
|
||||||
|
|
||||||
import static java.util.concurrent.TimeUnit.DAYS;
|
import static java.util.concurrent.TimeUnit.DAYS;
|
||||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||||
@@ -43,6 +44,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
|||||||
import com.google.gerrit.server.account.AccountCache;
|
import com.google.gerrit.server.account.AccountCache;
|
||||||
import com.google.gerrit.server.config.AllProjectsName;
|
import com.google.gerrit.server.config.AllProjectsName;
|
||||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.mail.MergeFailSender;
|
import com.google.gerrit.server.mail.MergeFailSender;
|
||||||
import com.google.gerrit.server.mail.MergedSender;
|
import com.google.gerrit.server.mail.MergedSender;
|
||||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||||
@@ -153,6 +155,7 @@ public class MergeOp {
|
|||||||
private final WorkQueue workQueue;
|
private final WorkQueue workQueue;
|
||||||
private final RequestScopePropagator requestScopePropagator;
|
private final RequestScopePropagator requestScopePropagator;
|
||||||
private final AllProjectsName allProjectsName;
|
private final AllProjectsName allProjectsName;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
MergeOp(final GitRepositoryManager grm, final SchemaFactory<ReviewDb> sf,
|
MergeOp(final GitRepositoryManager grm, final SchemaFactory<ReviewDb> sf,
|
||||||
@@ -168,7 +171,8 @@ public class MergeOp {
|
|||||||
final SubmoduleOp.Factory subOpFactory,
|
final SubmoduleOp.Factory subOpFactory,
|
||||||
final WorkQueue workQueue,
|
final WorkQueue workQueue,
|
||||||
final RequestScopePropagator requestScopePropagator,
|
final RequestScopePropagator requestScopePropagator,
|
||||||
final AllProjectsName allProjectsName) {
|
final AllProjectsName allProjectsName,
|
||||||
|
final ChangeIndexer indexer) {
|
||||||
repoManager = grm;
|
repoManager = grm;
|
||||||
schemaFactory = sf;
|
schemaFactory = sf;
|
||||||
labelNormalizer = fs;
|
labelNormalizer = fs;
|
||||||
@@ -188,6 +192,7 @@ public class MergeOp {
|
|||||||
this.workQueue = workQueue;
|
this.workQueue = workQueue;
|
||||||
this.requestScopePropagator = requestScopePropagator;
|
this.requestScopePropagator = requestScopePropagator;
|
||||||
this.allProjectsName = allProjectsName;
|
this.allProjectsName = allProjectsName;
|
||||||
|
this.indexer = indexer;
|
||||||
destBranch = branch;
|
destBranch = branch;
|
||||||
toMerge = ArrayListMultimap.create();
|
toMerge = ArrayListMultimap.create();
|
||||||
potentiallyStillSubmittable = new ArrayList<CodeReviewCommit>();
|
potentiallyStillSubmittable = new ArrayList<CodeReviewCommit>();
|
||||||
@@ -758,6 +763,7 @@ public class MergeOp {
|
|||||||
} catch (OrmException err) {
|
} catch (OrmException err) {
|
||||||
log.warn("Error updating change status for " + c.getId(), err);
|
log.warn("Error updating change status for " + c.getId(), err);
|
||||||
}
|
}
|
||||||
|
indexer.index(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class RebaseIfNecessary extends SubmitStrategy {
|
|||||||
rebaseChange.rebase(args.repo, args.rw, args.inserter,
|
rebaseChange.rebase(args.repo, args.rw, args.inserter,
|
||||||
n.patchsetId, n.change,
|
n.patchsetId, n.change,
|
||||||
args.mergeUtil.getSubmitter(n.patchsetId).getAccountId(),
|
args.mergeUtil.getSubmitter(n.patchsetId).getAccountId(),
|
||||||
newMergeTip, args.mergeUtil, committerIdent);
|
newMergeTip, args.mergeUtil, committerIdent, args.indexer);
|
||||||
List<PatchSetApproval> approvals = Lists.newArrayList();
|
List<PatchSetApproval> approvals = Lists.newArrayList();
|
||||||
for (PatchSetApproval a : args.mergeUtil.getApprovalsForCommit(n)) {
|
for (PatchSetApproval a : args.mergeUtil.getApprovalsForCommit(n)) {
|
||||||
approvals.add(new PatchSetApproval(newPatchSet.getId(), a));
|
approvals.add(new PatchSetApproval(newPatchSet.getId(), a));
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ import com.google.gerrit.server.git.MultiProgressMonitor.Task;
|
|||||||
import com.google.gerrit.server.git.validators.CommitValidationException;
|
import com.google.gerrit.server.git.validators.CommitValidationException;
|
||||||
import com.google.gerrit.server.git.validators.CommitValidationMessage;
|
import com.google.gerrit.server.git.validators.CommitValidationMessage;
|
||||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.mail.CreateChangeSender;
|
import com.google.gerrit.server.mail.CreateChangeSender;
|
||||||
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
|
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
|
||||||
import com.google.gerrit.server.mail.MergedSender;
|
import com.google.gerrit.server.mail.MergedSender;
|
||||||
@@ -263,6 +264,7 @@ public class ReceiveCommits {
|
|||||||
private final WorkQueue workQueue;
|
private final WorkQueue workQueue;
|
||||||
private final ListeningExecutorService changeUpdateExector;
|
private final ListeningExecutorService changeUpdateExector;
|
||||||
private final RequestScopePropagator requestScopePropagator;
|
private final RequestScopePropagator requestScopePropagator;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
private final SshInfo sshInfo;
|
private final SshInfo sshInfo;
|
||||||
private final AllProjectsName allProjectsName;
|
private final AllProjectsName allProjectsName;
|
||||||
private final ReceiveConfig receiveConfig;
|
private final ReceiveConfig receiveConfig;
|
||||||
@@ -323,6 +325,7 @@ public class ReceiveCommits {
|
|||||||
final WorkQueue workQueue,
|
final WorkQueue workQueue,
|
||||||
@ChangeUpdateExecutor ListeningExecutorService changeUpdateExector,
|
@ChangeUpdateExecutor ListeningExecutorService changeUpdateExector,
|
||||||
final RequestScopePropagator requestScopePropagator,
|
final RequestScopePropagator requestScopePropagator,
|
||||||
|
final ChangeIndexer indexer,
|
||||||
final SshInfo sshInfo,
|
final SshInfo sshInfo,
|
||||||
final AllProjectsName allProjectsName,
|
final AllProjectsName allProjectsName,
|
||||||
ReceiveConfig config,
|
ReceiveConfig config,
|
||||||
@@ -353,6 +356,7 @@ public class ReceiveCommits {
|
|||||||
this.workQueue = workQueue;
|
this.workQueue = workQueue;
|
||||||
this.changeUpdateExector = changeUpdateExector;
|
this.changeUpdateExector = changeUpdateExector;
|
||||||
this.requestScopePropagator = requestScopePropagator;
|
this.requestScopePropagator = requestScopePropagator;
|
||||||
|
this.indexer = indexer;
|
||||||
this.sshInfo = sshInfo;
|
this.sshInfo = sshInfo;
|
||||||
this.allProjectsName = allProjectsName;
|
this.allProjectsName = allProjectsName;
|
||||||
this.receiveConfig = config;
|
this.receiveConfig = config;
|
||||||
@@ -1905,6 +1909,7 @@ public class ReceiveCommits {
|
|||||||
if (cmd.getResult() == NOT_ATTEMPTED) {
|
if (cmd.getResult() == NOT_ATTEMPTED) {
|
||||||
cmd.execute(rp);
|
cmd.execute(rp);
|
||||||
}
|
}
|
||||||
|
indexer.index(change, requestScopePropagator);
|
||||||
gitRefUpdated.fire(project.getNameKey(), newPatchSet.getRefName(),
|
gitRefUpdated.fire(project.getNameKey(), newPatchSet.getRefName(),
|
||||||
ObjectId.zeroId(), newCommit);
|
ObjectId.zeroId(), newCommit);
|
||||||
hooks.doPatchsetCreatedHook(change, newPatchSet, db);
|
hooks.doPatchsetCreatedHook(change, newPatchSet, db);
|
||||||
@@ -2207,7 +2212,7 @@ public class ReceiveCommits {
|
|||||||
|
|
||||||
private void markChangeMergedByPush(final ReviewDb db,
|
private void markChangeMergedByPush(final ReviewDb db,
|
||||||
final ReplaceRequest result) throws OrmException {
|
final ReplaceRequest result) throws OrmException {
|
||||||
final Change change = result.change;
|
Change change = result.change;
|
||||||
final String mergedIntoRef = result.mergedIntoRef;
|
final String mergedIntoRef = result.mergedIntoRef;
|
||||||
|
|
||||||
change.setCurrentPatchSet(result.info);
|
change.setCurrentPatchSet(result.info);
|
||||||
@@ -2235,7 +2240,8 @@ public class ReceiveCommits {
|
|||||||
|
|
||||||
db.changeMessages().insert(Collections.singleton(msg));
|
db.changeMessages().insert(Collections.singleton(msg));
|
||||||
|
|
||||||
db.changes().atomicUpdate(change.getId(), new AtomicUpdate<Change>() {
|
change = db.changes().atomicUpdate(
|
||||||
|
change.getId(), new AtomicUpdate<Change>() {
|
||||||
@Override
|
@Override
|
||||||
public Change update(Change change) {
|
public Change update(Change change) {
|
||||||
if (change.getStatus().isOpen()) {
|
if (change.getStatus().isOpen()) {
|
||||||
@@ -2246,6 +2252,7 @@ public class ReceiveCommits {
|
|||||||
return change;
|
return change;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
indexer.index(change, requestScopePropagator);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendMergedEmail(final ReplaceRequest result) {
|
private void sendMergedEmail(final ReplaceRequest result) {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval;
|
|||||||
import com.google.gerrit.reviewdb.client.Project.SubmitType;
|
import com.google.gerrit.reviewdb.client.Project.SubmitType;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
|
|
||||||
import org.eclipse.jgit.lib.ObjectInserter;
|
import org.eclipse.jgit.lib.ObjectInserter;
|
||||||
import org.eclipse.jgit.lib.PersonIdent;
|
import org.eclipse.jgit.lib.PersonIdent;
|
||||||
@@ -55,13 +56,15 @@ public abstract class SubmitStrategy {
|
|||||||
protected final Set<RevCommit> alreadyAccepted;
|
protected final Set<RevCommit> alreadyAccepted;
|
||||||
protected final Branch.NameKey destBranch;
|
protected final Branch.NameKey destBranch;
|
||||||
protected final MergeUtil mergeUtil;
|
protected final MergeUtil mergeUtil;
|
||||||
|
protected final ChangeIndexer indexer;
|
||||||
protected final MergeSorter mergeSorter;
|
protected final MergeSorter mergeSorter;
|
||||||
|
|
||||||
Arguments(final IdentifiedUser.GenericFactory identifiedUserFactory,
|
Arguments(final IdentifiedUser.GenericFactory identifiedUserFactory,
|
||||||
final PersonIdent myIdent, final ReviewDb db, final Repository repo,
|
final PersonIdent myIdent, final ReviewDb db, final Repository repo,
|
||||||
final RevWalk rw, final ObjectInserter inserter,
|
final RevWalk rw, final ObjectInserter inserter,
|
||||||
final RevFlag canMergeFlag, final Set<RevCommit> alreadyAccepted,
|
final RevFlag canMergeFlag, final Set<RevCommit> alreadyAccepted,
|
||||||
final Branch.NameKey destBranch, final MergeUtil mergeUtil) {
|
final Branch.NameKey destBranch, final MergeUtil mergeUtil,
|
||||||
|
final ChangeIndexer indexer) {
|
||||||
this.identifiedUserFactory = identifiedUserFactory;
|
this.identifiedUserFactory = identifiedUserFactory;
|
||||||
this.myIdent = myIdent;
|
this.myIdent = myIdent;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
@@ -73,6 +76,7 @@ public abstract class SubmitStrategy {
|
|||||||
this.alreadyAccepted = alreadyAccepted;
|
this.alreadyAccepted = alreadyAccepted;
|
||||||
this.destBranch = destBranch;
|
this.destBranch = destBranch;
|
||||||
this.mergeUtil = mergeUtil;
|
this.mergeUtil = mergeUtil;
|
||||||
|
this.indexer = indexer;
|
||||||
this.mergeSorter = new MergeSorter(rw, alreadyAccepted, canMergeFlag);
|
this.mergeSorter = new MergeSorter(rw, alreadyAccepted, canMergeFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
|||||||
import com.google.gerrit.server.changedetail.RebaseChange;
|
import com.google.gerrit.server.changedetail.RebaseChange;
|
||||||
import com.google.gerrit.server.config.CanonicalWebUrl;
|
import com.google.gerrit.server.config.CanonicalWebUrl;
|
||||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||||
|
import com.google.gerrit.server.index.ChangeIndexer;
|
||||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||||
import com.google.gerrit.server.project.NoSuchProjectException;
|
import com.google.gerrit.server.project.NoSuchProjectException;
|
||||||
import com.google.gerrit.server.project.ProjectCache;
|
import com.google.gerrit.server.project.ProjectCache;
|
||||||
@@ -54,6 +55,7 @@ public class SubmitStrategyFactory {
|
|||||||
private final RebaseChange rebaseChange;
|
private final RebaseChange rebaseChange;
|
||||||
private final ProjectCache projectCache;
|
private final ProjectCache projectCache;
|
||||||
private final MergeUtil.Factory mergeUtilFactory;
|
private final MergeUtil.Factory mergeUtilFactory;
|
||||||
|
private final ChangeIndexer indexer;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SubmitStrategyFactory(
|
SubmitStrategyFactory(
|
||||||
@@ -63,7 +65,8 @@ public class SubmitStrategyFactory {
|
|||||||
@CanonicalWebUrl @Nullable final Provider<String> urlProvider,
|
@CanonicalWebUrl @Nullable final Provider<String> urlProvider,
|
||||||
final GitReferenceUpdated gitRefUpdated, final RebaseChange rebaseChange,
|
final GitReferenceUpdated gitRefUpdated, final RebaseChange rebaseChange,
|
||||||
final ProjectCache projectCache,
|
final ProjectCache projectCache,
|
||||||
final MergeUtil.Factory mergeUtilFactory) {
|
final MergeUtil.Factory mergeUtilFactory,
|
||||||
|
final ChangeIndexer indexer) {
|
||||||
this.identifiedUserFactory = identifiedUserFactory;
|
this.identifiedUserFactory = identifiedUserFactory;
|
||||||
this.myIdent = myIdent;
|
this.myIdent = myIdent;
|
||||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||||
@@ -71,6 +74,7 @@ public class SubmitStrategyFactory {
|
|||||||
this.rebaseChange = rebaseChange;
|
this.rebaseChange = rebaseChange;
|
||||||
this.projectCache = projectCache;
|
this.projectCache = projectCache;
|
||||||
this.mergeUtilFactory = mergeUtilFactory;
|
this.mergeUtilFactory = mergeUtilFactory;
|
||||||
|
this.indexer = indexer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SubmitStrategy create(final SubmitType submitType, final ReviewDb db,
|
public SubmitStrategy create(final SubmitType submitType, final ReviewDb db,
|
||||||
@@ -82,7 +86,7 @@ public class SubmitStrategyFactory {
|
|||||||
final SubmitStrategy.Arguments args =
|
final SubmitStrategy.Arguments args =
|
||||||
new SubmitStrategy.Arguments(identifiedUserFactory, myIdent, db, repo,
|
new SubmitStrategy.Arguments(identifiedUserFactory, myIdent, db, repo,
|
||||||
rw, inserter, canMergeFlag, alreadyAccepted, destBranch,
|
rw, inserter, canMergeFlag, alreadyAccepted, destBranch,
|
||||||
mergeUtilFactory.create(project));
|
mergeUtilFactory.create(project), indexer);
|
||||||
switch (submitType) {
|
switch (submitType) {
|
||||||
case CHERRY_PICK:
|
case CHERRY_PICK:
|
||||||
return new CherryPick(args, patchSetInfoFactory, gitRefUpdated);
|
return new CherryPick(args, patchSetInfoFactory, gitRefUpdated);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableMap;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.gerrit.server.query.change.ChangeData;
|
import com.google.gerrit.server.query.change.ChangeData;
|
||||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
|
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
|
||||||
|
import com.google.gerrit.server.query.change.ChangeStatusPredicate;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@@ -49,6 +50,18 @@ public class ChangeField {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Change status string, in the same format as {@code status:}. */
|
||||||
|
public static final FieldDef<ChangeData, String> STATUS =
|
||||||
|
new FieldDef.Single<ChangeData, String>(ChangeQueryBuilder.FIELD_STATUS,
|
||||||
|
FieldType.EXACT, false) {
|
||||||
|
@Override
|
||||||
|
public String get(ChangeData input, FillArgs args)
|
||||||
|
throws OrmException {
|
||||||
|
return ChangeStatusPredicate.VALUES.get(
|
||||||
|
input.change(args.db).getStatus());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** List of filenames modified in the current patch set. */
|
/** List of filenames modified in the current patch set. */
|
||||||
public static final FieldDef<ChangeData, Iterable<String>> FILE =
|
public static final FieldDef<ChangeData, Iterable<String>> FILE =
|
||||||
new FieldDef.Repeatable<ChangeData, String>(
|
new FieldDef.Repeatable<ChangeData, String>(
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ import static com.google.common.base.Preconditions.checkArgument;
|
|||||||
import com.google.common.collect.ImmutableBiMap;
|
import com.google.common.collect.ImmutableBiMap;
|
||||||
import com.google.gerrit.reviewdb.client.Change;
|
import com.google.gerrit.reviewdb.client.Change;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.query.OperatorPredicate;
|
import com.google.gerrit.server.index.ChangeField;
|
||||||
|
import com.google.gerrit.server.index.IndexPredicate;
|
||||||
import com.google.gerrit.server.query.Predicate;
|
import com.google.gerrit.server.query.Predicate;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
import com.google.inject.Provider;
|
import com.google.inject.Provider;
|
||||||
@@ -34,8 +35,8 @@ import java.util.List;
|
|||||||
* status:} but may also be {@code is:} to help do-what-i-meanery for end-users
|
* status:} but may also be {@code is:} to help do-what-i-meanery for end-users
|
||||||
* searching for changes. Either operator name has the same meaning.
|
* searching for changes. Either operator name has the same meaning.
|
||||||
*/
|
*/
|
||||||
final class ChangeStatusPredicate extends OperatorPredicate<ChangeData> {
|
public final class ChangeStatusPredicate extends IndexPredicate<ChangeData> {
|
||||||
private static final ImmutableBiMap<Change.Status, String> VALUES;
|
public static final ImmutableBiMap<Change.Status, String> VALUES;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
ImmutableBiMap.Builder<Change.Status, String> values =
|
ImmutableBiMap.Builder<Change.Status, String> values =
|
||||||
@@ -70,14 +71,14 @@ final class ChangeStatusPredicate extends OperatorPredicate<ChangeData> {
|
|||||||
private final Change.Status status;
|
private final Change.Status status;
|
||||||
|
|
||||||
ChangeStatusPredicate(Provider<ReviewDb> dbProvider, String value) {
|
ChangeStatusPredicate(Provider<ReviewDb> dbProvider, String value) {
|
||||||
super(ChangeQueryBuilder.FIELD_STATUS, value);
|
super(ChangeField.STATUS, value);
|
||||||
this.dbProvider = dbProvider;
|
this.dbProvider = dbProvider;
|
||||||
status = VALUES.inverse().get(value);
|
status = VALUES.inverse().get(value);
|
||||||
checkArgument(status != null, "invalid change status: %s", value);
|
checkArgument(status != null, "invalid change status: %s", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
ChangeStatusPredicate(Provider<ReviewDb> dbProvider, Change.Status status) {
|
ChangeStatusPredicate(Provider<ReviewDb> dbProvider, Change.Status status) {
|
||||||
super(ChangeQueryBuilder.FIELD_STATUS, VALUES.get(status));
|
super(ChangeField.STATUS, VALUES.get(status));
|
||||||
this.dbProvider = dbProvider;
|
this.dbProvider = dbProvider;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user