GitHub user NicoK opened a pull request: https://github.com/apache/flink/pull/4761
[FLINK-7748][network] properly use the TaskEventDispatcher for subscribing to events ## What is the purpose of the change `ResultPartitionWriter` currently implements the `EventListener` interface and is used for event registration, although event publishing is already handled via the `TaskEventDispatcher`. Instead of using two different places, this should be unified by using `TaskEventDispatcher` only which is done by this PR. Please note that this PR builds upon #4759. ## Brief change log - make `TaskEventDispatcher` more generic to register result partitions via `ResultPartitionID` with one `TaskEventHandler` per partition (handled by `TaskEventDispatcher`, not inside `ResultPartitionWriter`) - remove the `EventListener<TaskEvent>` implementation from `ResultPartitionWriter` - add the `TaskEventDispatcher` to the `Environment` information for a task to be able to work with it (only `IterationHeadTask` is using this as of now) - adapt all places to use `TaskEventDispatcher` instead of `ResultPartitionWriter` ## Verifying this change This change added tests and can be verified as follows: - a new `TaskEventDispatcherTest` verifies that `TaskEventDispatcher` works as expected - indirectly, tests under `org.apache.flink.runtime.iterative` may verify the use of the `IterationHeadTask` which is the only user so far ## Does this pull request potentially affect one of the following parts: - Dependencies (does it add or upgrade a dependency): (no) - The public API, i.e., is any changed class annotated with `@Public(Evolving)`: (no) - The serializers: (no) - The runtime per-record code paths (performance sensitive): (no) - Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no) ## Documentation - Does this pull request introduce a new feature? (no) - If yes, how is the feature documented? (JavaDocs) You can merge this pull request into a Git repository by running: $ git pull https://github.com/NicoK/flink flink-7748 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/flink/pull/4761.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #4761 ---- commit d0cf483e0fb21010ed996935ffb14d62b34ee8ed Author: Nico Kruber <n...@data-artisans.com> Date: 2017-08-29T15:32:52Z [FLINK-7746][network] move ResultPartitionWriter#writeBufferToAllChannels implementation up into ResultPartition commit cfea094aa214612eaafef14554bc68626a6ff948 Author: Nico Kruber <n...@data-artisans.com> Date: 2017-08-29T16:24:00Z [FLINK-7748][network] properly use the TaskEventDispatcher for subscribing to events Previously, the ResultPartitionWriter implemented the EventListener interface and was used for event registration, although event publishing was already handled via the TaskEventDispatcher. Now, we use the TaskEventDispatcher for both, event registration and publishing. It also adds the TaskEventDispatcher to the Environment information for a task to be able to work with it (only IterationHeadTask so far). ---- ---