Merge branch 'stable-2.14'

* stable-2.14:
  Fix firing change related event for deleted change

Change-Id: I6cadb61f7ee2e5579afb2a038d42bb4379375c52
This commit is contained in:
David Pursehouse
2017-05-19 08:43:49 +09:00

View File

@@ -32,6 +32,7 @@ import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.permissions.ProjectPermission;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.project.ProjectControl;
import com.google.gerrit.server.project.ProjectState;
@@ -39,10 +40,13 @@ import com.google.gwtorm.server.OrmException;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Distributes Events to listeners if they are allowed to see them */
@Singleton
public class EventBroker implements EventDispatcher {
private static final Logger log = LoggerFactory.getLogger(EventBroker.class);
public static class Module extends LifecycleModule {
@Override
@@ -180,9 +184,15 @@ public class EventBroker implements EventDispatcher {
String ref = refEvent.getRefName();
if (PatchSet.isChangeRef(ref)) {
Change.Id cid = PatchSet.Id.fromRef(ref).getParentKey();
Change change =
notesFactory.create(dbProvider.get(), refEvent.getProjectNameKey(), cid).getChange();
return isVisibleTo(change, user);
try {
Change change =
notesFactory
.createChecked(dbProvider.get(), refEvent.getProjectNameKey(), cid)
.getChange();
return isVisibleTo(change, user);
} catch (NoSuchChangeException e) {
log.debug("Change {} cannot be found, falling back on ref visibility check", cid.id);
}
}
return isVisibleTo(refEvent.getBranchNameKey(), user);
} else if (event instanceof ProjectEvent) {