Do not reuse ChangeQueryProcessor across repos
When importing Pull Requests from multiple repositories
the ChangeQueryProcessor cannot be reused because it is a
one-shot only instance.
Prefer the use of Provider so that every query runs on its
own ChangeQueryProcessor.
Bug: Issue 9976
Change-Id: I6cfb0d14afe47bcd0016a397b4ac515441c59755
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
index a93ef9e..9ac3324 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
@@ -74,7 +74,7 @@
private final GenericFactory userFactory;
private final Provider<InternalChangeQuery> queryProvider;
private final BatchUpdate.Factory updateFactory;
- private final QueryProcessor<ChangeData> qp;
+ private final Provider<ChangeQueryProcessor> qp;
private final ChangeQueryBuilder changeQuery;
@Inject
@@ -85,7 +85,7 @@
IdentifiedUser.GenericFactory userFactory,
Provider<InternalChangeQuery> queryProvider,
BatchUpdate.Factory batchUpdateFactory,
- ChangeQueryProcessor qp,
+ Provider<ChangeQueryProcessor> qp,
ChangeQueryBuilder changeQuery) {
this.changeInserterFactory = changeInserterFactory;
this.patchSetInserterFactory = patchSetInserterFactory;
@@ -225,7 +225,7 @@
private List<ChangeData> queryChangesForSha1(String pullRequestSha1) {
QueryResult<ChangeData> results;
try {
- results = qp.query(changeQuery.commit(pullRequestSha1));
+ results = qp.get().query(changeQuery.commit(pullRequestSha1));
return results.entities();
} catch (OrmException | QueryParseException e) {
LOG.error(
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java
index 60beccd..b2998f5 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java
@@ -62,7 +62,7 @@
private final ProjectCache projectsCache;
private final GitRepositoryManager repoMgr;
private final Provider<ReviewDb> schema;
- private final ChangeQueryProcessor qp;
+ private final Provider<ChangeQueryProcessor> qp;
private final ChangeQueryBuilder changeQuery;
@Inject
@@ -71,7 +71,7 @@
GitRepositoryManager repoMgr,
Provider<ReviewDb> schema,
GitHubConfig config,
- ChangeQueryProcessor qp,
+ Provider<ChangeQueryProcessor> qp,
ChangeQueryBuilder changeQuery) {
this.projectsCache = projectsCache;
this.repoMgr = repoMgr;
@@ -196,7 +196,7 @@
try {
for (GHPullRequestCommitDetail pullRequestCommit : ghPullRequest.listCommits()) {
pullRequestToImport |=
- qp.query(changeQuery.commit(pullRequestCommit.getSha())).entities().isEmpty();
+ qp.get().query(changeQuery.commit(pullRequestCommit.getSha())).entities().isEmpty();
}
return pullRequestToImport;
} catch (OrmException | QueryParseException e) {