EventFactory: Don't require change notes, but only change
EventFactory only needed the change notes to load the patch set. But the patch set was only used to retrieve the author from it. Instead of loading the patch set, get the author directly from the patch set commit that is already available. As result of this ChangeHookRunner no longer needs to load the change notes. Change-Id: I6181788a2a76ac1d3359228757cc98818015f15f Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
		| @@ -58,7 +58,6 @@ import com.google.gerrit.server.events.ReviewerAddedEvent; | ||||
| import com.google.gerrit.server.events.TopicChangedEvent; | ||||
| import com.google.gerrit.server.git.GitRepositoryManager; | ||||
| import com.google.gerrit.server.git.WorkQueue; | ||||
| import com.google.gerrit.server.notedb.ChangeNotes; | ||||
| import com.google.gerrit.server.project.ProjectCache; | ||||
| import com.google.gerrit.server.project.ProjectControl; | ||||
| import com.google.gerrit.server.project.ProjectState; | ||||
| @@ -228,8 +227,6 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     /** Repository Manager. */ | ||||
|     private final GitRepositoryManager repoManager; | ||||
|  | ||||
|     private final ChangeNotes.Factory notesFactory; | ||||
|  | ||||
|     /** Queue of hooks that need to run. */ | ||||
|     private final WorkQueue.Executor hookQueue; | ||||
|  | ||||
| @@ -259,7 +256,6 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     @Inject | ||||
|     public ChangeHookRunner(WorkQueue queue, | ||||
|       GitRepositoryManager repoManager, | ||||
|       ChangeNotes.Factory notesFactory, | ||||
|       @GerritServerConfig Config config, | ||||
|       @AnonymousCowardName String anonymousCowardName, | ||||
|       SitePaths sitePath, | ||||
| @@ -269,7 +265,6 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|       DynamicSet<EventListener> unrestrictedListeners) { | ||||
|         this.anonymousCowardName = anonymousCowardName; | ||||
|         this.repoManager = repoManager; | ||||
|         this.notesFactory = notesFactory; | ||||
|         this.hookQueue = queue.createQueue(1, "hook"); | ||||
|         this.projectCache = projectCache; | ||||
|         this.accountCache = accountCache; | ||||
| @@ -309,11 +304,6 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|               .build()); | ||||
|     } | ||||
|  | ||||
|     private ChangeNotes newNotes(ReviewDb db, Change change) | ||||
|         throws OrmException { | ||||
|       return notesFactory.create(db, change.getProject(), change.getId()); | ||||
|     } | ||||
|  | ||||
|     private static Optional<Path> hook(Config config, Path path, String name) { | ||||
|       String setting = name.replace("-", "") + "hook"; | ||||
|       String value = config.getString("hooks", null, setting); | ||||
| @@ -404,14 +394,13 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     @Override | ||||
|     public void doPatchsetCreatedHook(Change change, | ||||
|         PatchSet patchSet, ReviewDb db) throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       PatchSetCreatedEvent event = new PatchSetCreatedEvent(change); | ||||
|       Supplier<AccountState> uploader = | ||||
|           getAccountSupplier(patchSet.getUploader()); | ||||
|       Supplier<AccountState> owner = getAccountSupplier(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.uploader = accountAttributeSupplier(uploader); | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -442,14 +431,13 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     @Override | ||||
|     public void doDraftPublishedHook(Change change, PatchSet patchSet, | ||||
|           ReviewDb db) throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       DraftPublishedEvent event = new DraftPublishedEvent(change); | ||||
|       Supplier<AccountState> uploader = | ||||
|           getAccountSupplier(patchSet.getUploader()); | ||||
|       Supplier<AccountState> owner = getAccountSupplier(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.uploader = accountAttributeSupplier(uploader); | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -479,13 +467,12 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     public void doCommentAddedHook(final Change change, Account account, | ||||
|           PatchSet patchSet, String comment, final Map<String, Short> approvals, | ||||
|           ReviewDb db) throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       CommentAddedEvent event = new CommentAddedEvent(change); | ||||
|       Supplier<AccountState> owner = getAccountSupplier(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.author =  accountAttributeSupplier(account); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.comment = comment; | ||||
|       event.approvals = Suppliers.memoize( | ||||
|           new Supplier<ApprovalAttribute[]>() { | ||||
| @@ -541,13 +528,12 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     public void doChangeMergedHook(Change change, Account account, | ||||
|         PatchSet patchSet, ReviewDb db, String mergeResultRev) | ||||
|         throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       ChangeMergedEvent event = new ChangeMergedEvent(change); | ||||
|       Supplier<AccountState> owner = getAccountSupplier(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.submitter = accountAttributeSupplier(account); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.newRev = mergeResultRev; | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -577,13 +563,12 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     public void doMergeFailedHook(Change change, Account account, | ||||
|           PatchSet patchSet, String reason, | ||||
|           ReviewDb db) throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       MergeFailedEvent event = new MergeFailedEvent(change); | ||||
|       Supplier<AccountState> owner = getAccountSupplier(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.submitter = accountAttributeSupplier(account); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.reason = reason; | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -613,13 +598,12 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     public void doChangeAbandonedHook(Change change, Account account, | ||||
|           PatchSet patchSet, String reason, ReviewDb db) | ||||
|           throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       ChangeAbandonedEvent event = new ChangeAbandonedEvent(change); | ||||
|       AccountState owner = accountCache.get(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.abandoner = accountAttributeSupplier(account); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.reason = reason; | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -649,13 +633,12 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     public void doChangeRestoredHook(Change change, Account account, | ||||
|           PatchSet patchSet, String reason, ReviewDb db) | ||||
|           throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       ChangeRestoredEvent event = new ChangeRestoredEvent(change); | ||||
|       AccountState owner = accountCache.get(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.restorer = accountAttributeSupplier(account); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.reason = reason; | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -726,12 +709,11 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     @Override | ||||
|     public void doReviewerAddedHook(Change change, Account account, | ||||
|         PatchSet patchSet, ReviewDb db) throws OrmException { | ||||
|       ChangeNotes notes = newNotes(db, change); | ||||
|       ReviewerAddedEvent event = new ReviewerAddedEvent(change); | ||||
|       Supplier<AccountState> owner = getAccountSupplier(change.getOwner()); | ||||
|  | ||||
|       event.change = changeAttributeSupplier(change); | ||||
|       event.patchSet = patchSetAttributeSupplier(notes, patchSet); | ||||
|       event.patchSet = patchSetAttributeSupplier(change, patchSet); | ||||
|       event.reviewer = accountAttributeSupplier(account); | ||||
|  | ||||
|       fireEvent(change, event, db); | ||||
| @@ -898,16 +880,16 @@ public class ChangeHookRunner implements ChangeHooks, EventDispatcher, | ||||
|     } | ||||
|  | ||||
|     private Supplier<PatchSetAttribute> patchSetAttributeSupplier( | ||||
|         final ChangeNotes notes, final PatchSet patchSet) { | ||||
|         final Change change, final PatchSet patchSet) { | ||||
|       return Suppliers.memoize( | ||||
|           new Supplier<PatchSetAttribute>() { | ||||
|             @Override | ||||
|             public PatchSetAttribute get() { | ||||
|               try (Repository repo = | ||||
|                     repoManager.openRepository(notes.getProjectName()); | ||||
|                     repoManager.openRepository(change.getProject()); | ||||
|                   RevWalk revWalk = new RevWalk(repo)) { | ||||
|                 return eventFactory.asPatchSetAttribute( | ||||
|                     revWalk, notes, patchSet); | ||||
|                     revWalk, change, patchSet); | ||||
|               } catch (IOException e) { | ||||
|                 throw Throwables.propagate(e); | ||||
|               } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Edwin Kempin
					Edwin Kempin