Github user rmetzger commented on a diff in the pull request:

    https://github.com/apache/flink/pull/750#discussion_r38511039
  
    --- Diff: 
flink-runtime/src/main/scala/org/apache/flink/runtime/taskmanager/TaskManager.scala
 ---
    @@ -411,6 +411,23 @@ class TaskManager(
                 log.debug(s"Cannot find task to fail for execution 
${executionID})")
               }
     
    +        // stops a task
    +        case StopTask(executionID) =>
    +          val task = runningTasks.get(executionID)
    +          if (task != null) {
    +            try {
    +              task.stopExecution()
    --- End diff --
    
    I have to admit that this is the first time I'm looking into this pull 
request ;)
    Regarding the whole blocking / non-blocking discussion: I think even if we 
would write into the javadocs that the cancel()/stop() call has to be 
implemented in a non-blocking fashion, there would be still users who do it 
wrong! Its just too risky to block the entire actor system by erroneous user 
code. (Aren't our windowing threads doing some magic in the close methods as 
well?!)
    I'm think that the canceling of Tasks in the task manager is also done 
using separate cancelling threads?
    
    For the Kafka source: I believe we can move the "fetcher.close()" and 
offsetHandler.close() into the close() method as well. (We would probably need 
to add cancel() method to the Fetcher interface).
    But I would not touch the Kafka consumer and make the stop() mechanism more 
robust.



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to