diff options
author | David Ostrovsky <david@ostrovsky.org> | 2016-02-09 08:14:45 +0100 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2016-02-10 00:23:09 +0000 |
commit | c844bc5c86ea128c672b8ed395aceaaec913cee5 (patch) | |
tree | 911446673d375ffd9ad3ba4be752d3dd2d122093 | |
parent | f679bc892965fe61eff07c85aab8fed81ba263e5 (diff) |
EqualsFilePredicate: Make it work in project watches
Secondary index underwent quite some evolution, by adding new fields
or turning search predicates that (uncorrectly) used database to
produce matches to use secondary index. When new index version is
added, the previous index version must still be supported because of
online reindexing feature. On very big site, reindexing may take hours,
clearly such a long offline time is non acceptable, that why online
reindexing feature was invented. To make online reindexing work, schema
version must be fetched to route the current search predicate to use
old (legacy) or new field. For that IndexCollection is accessed and
the current schema version is read.
It seems that not the correct instance of IndexCollection is "seen"
from the HTTPD guice module. As the consequence we are getting a NPE
when file:foo predicate is used in add project watches feature. Use
the provider instead to rectify the problem.
Test Plan:
- Add "file:foo" predicate to project watches
Confirm that the new watch is created and no NPE is thrown.
Change-Id: I750be217a34cdf97b71e726bea93b3c34ca0ceb0
-rw-r--r-- | gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java index 0da66bfe26..63ec0754d6 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountServiceImpl.java @@ -55,7 +55,7 @@ class AccountServiceImpl extends BaseServiceImplementation implements private final Provider<IdentifiedUser> currentUser; private final ProjectControl.Factory projectControlFactory; private final AgreementInfoFactory.Factory agreementInfoFactory; - private final ChangeQueryBuilder queryBuilder; + private final Provider<ChangeQueryBuilder> queryBuilder; private final SetDiffPreferences setDiff; @Inject @@ -63,7 +63,7 @@ class AccountServiceImpl extends BaseServiceImplementation implements final Provider<IdentifiedUser> identifiedUser, final ProjectControl.Factory projectControlFactory, final AgreementInfoFactory.Factory agreementInfoFactory, - final ChangeQueryBuilder queryBuilder, + final Provider<ChangeQueryBuilder> queryBuilder, SetDiffPreferences setDiff) { super(schema, identifiedUser); this.currentUser = identifiedUser; @@ -147,7 +147,7 @@ class AccountServiceImpl extends BaseServiceImplementation implements if (filter != null) { try { - queryBuilder.parse(filter); + queryBuilder.get().parse(filter); } catch (QueryParseException badFilter) { throw new InvalidQueryException(badFilter.getMessage(), filter); } |