summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2010-08-04 12:03:33 -0700
committerShawn O. Pearce <sop@google.com>2010-08-04 12:03:33 -0700
commit828f041895138b32df95988ea86e80e078858d17 (patch)
tree4314cdb65cf8396d0cf35483cd68e5c71108223a
parentdfabc92a95d086370d43cffa5e0a1295858a18e0 (diff)
Fix CurrentUser reference on merge thread
The merge thread was running ChangeMail to send out messages, but that may need to run queries with the visibleto: predicate, which incorrectly relied on the ChangeControl.Factory. Using the GenericFactory instead permits us to get the ChangeControl for a given user without needing a current user on the calling thread. Change-Id: I9eb83b4f04665042182b37c4951966d1540248ff Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java2
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java6
2 files changed, 4 insertions, 4 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
index 1b9f051e6a..828a12658f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
@@ -335,7 +335,7 @@ public class ChangeQueryBuilder extends QueryBuilder<ChangeData> {
public Predicate<ChangeData> visibleto(CurrentUser user) {
return new IsVisibleToPredicate(args.dbProvider, //
- args.changeControlFactory, //
+ args.changeControlGenericFactory, //
user);
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java
index 020e709514..1e9d405d72 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/IsVisibleToPredicate.java
@@ -37,11 +37,11 @@ class IsVisibleToPredicate extends OperatorPredicate<ChangeData> {
}
private final Provider<ReviewDb> db;
- private final ChangeControl.Factory changeControl;
+ private final ChangeControl.GenericFactory changeControl;
private final CurrentUser user;
IsVisibleToPredicate(Provider<ReviewDb> db,
- ChangeControl.Factory changeControlFactory, CurrentUser user) {
+ ChangeControl.GenericFactory changeControlFactory, CurrentUser user) {
super(ChangeQueryBuilder.FIELD_VISIBLETO, describe(user));
this.db = db;
this.changeControl = changeControlFactory;
@@ -55,7 +55,7 @@ class IsVisibleToPredicate extends OperatorPredicate<ChangeData> {
}
try {
Change c = cd.change(db);
- if (c != null && changeControl.controlFor(c).forUser(user).isVisible()) {
+ if (c != null && changeControl.controlFor(c, user).isVisible()) {
cd.cacheVisibleTo(user);
return true;
} else {