Make MergeSuperSet not a singleton

The plan is to add per-instance caching to improve performance.

Change-Id: I5f086adf4cc24eb2075091641d24f751d8f816be
This commit is contained in:
Dave Borowitz
2016-09-12 11:52:13 -04:00
parent 14183e0557
commit 688fc7f7fb
4 changed files with 9 additions and 10 deletions

View File

@@ -30,6 +30,7 @@ import com.google.gerrit.server.query.change.ChangeData;
import com.google.gerrit.testutil.ConfigSuite;
import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
@@ -47,7 +48,7 @@ import java.util.List;
@NoHttpd
public class SubmitResolvingMergeCommitIT extends AbstractDaemonTest {
@Inject
private MergeSuperSet mergeSuperSet;
private Provider<MergeSuperSet> mergeSuperSet;
@Inject
private Submit submit;
@@ -293,7 +294,7 @@ public class SubmitResolvingMergeCommitIT extends AbstractDaemonTest {
throws MissingObjectException, IncorrectObjectTypeException, IOException,
OrmException {
ChangeSet cs =
mergeSuperSet.completeChangeSet(db, change.change(), user(admin));
mergeSuperSet.get().completeChangeSet(db, change.change(), user(admin));
assertThat(submit.unmergeableChanges(cs).isEmpty()).isEqualTo(expected);
}

View File

@@ -134,7 +134,7 @@ public class Submit implements RestModifyView<RevisionResource, SubmitInput>,
private final ChangeMessagesUtil cmUtil;
private final ChangeNotes.Factory changeNotesFactory;
private final Provider<MergeOp> mergeOpProvider;
private final MergeSuperSet mergeSuperSet;
private final Provider<MergeSuperSet> mergeSuperSet;
private final AccountsCollection accounts;
private final ChangesCollection changes;
private final String label;
@@ -154,7 +154,7 @@ public class Submit implements RestModifyView<RevisionResource, SubmitInput>,
ChangeMessagesUtil cmUtil,
ChangeNotes.Factory changeNotesFactory,
Provider<MergeOp> mergeOpProvider,
MergeSuperSet mergeSuperSet,
Provider<MergeSuperSet> mergeSuperSet,
AccountsCollection accounts,
ChangesCollection changes,
@GerritServerConfig Config cfg,
@@ -345,7 +345,7 @@ public class Submit implements RestModifyView<RevisionResource, SubmitInput>,
ChangeSet cs;
try {
cs = mergeSuperSet.completeChangeSet(
cs = mergeSuperSet.get().completeChangeSet(
db, cd.change(), resource.getControl().getUser());
} catch (OrmException | IOException e) {
throw new OrmRuntimeException("Could not determine complete set of " +

View File

@@ -54,7 +54,7 @@ public class SubmittedTogether implements RestReadView<ChangeResource> {
private final ChangeJson.Factory json;
private final Provider<ReviewDb> dbProvider;
private final Provider<InternalChangeQuery> queryProvider;
private final MergeSuperSet mergeSuperSet;
private final Provider<MergeSuperSet> mergeSuperSet;
private final Provider<WalkSorter> sorter;
@Option(name = "-o", usage = "Output options")
@@ -66,7 +66,7 @@ public class SubmittedTogether implements RestReadView<ChangeResource> {
SubmittedTogether(ChangeJson.Factory json,
Provider<ReviewDb> dbProvider,
Provider<InternalChangeQuery> queryProvider,
MergeSuperSet mergeSuperSet,
Provider<MergeSuperSet> mergeSuperSet,
Provider<WalkSorter> sorter) {
this.json = json;
this.dbProvider = dbProvider;
@@ -96,7 +96,7 @@ public class SubmittedTogether implements RestReadView<ChangeResource> {
if (c.getStatus().isOpen()) {
ChangeSet cs =
mergeSuperSet.completeChangeSet(
mergeSuperSet.get().completeChangeSet(
dbProvider.get(), c, resource.getControl().getUser());
cds = cs.changes().asList();
hidden = cs.nonVisibleChanges().size();

View File

@@ -39,7 +39,6 @@ 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.Singleton;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
@@ -69,7 +68,6 @@ import java.util.Set;
* If change.submitWholeTopic is enabled, also all changes of the topic
* and their parents are included.
*/
@Singleton
public class MergeSuperSet {
private static final Logger log = LoggerFactory.getLogger(MergeOp.class);