diff options
author | Shawn O. Pearce <sop@google.com> | 2010-08-04 12:03:33 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2010-08-04 12:03:33 -0700 |
commit | 828f041895138b32df95988ea86e80e078858d17 (patch) | |
tree | 4314cdb65cf8396d0cf35483cd68e5c71108223a | |
parent | dfabc92a95d086370d43cffa5e0a1295858a18e0 (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>
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 { |