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

    https://github.com/apache/flink/pull/2789#discussion_r87742870
  
    --- Diff: 
flink-streaming-connectors/flink-connector-kafka-0.9/src/main/java/org/apache/flink/streaming/connectors/kafka/internal/Kafka09Fetcher.java
 ---
    @@ -279,32 +152,37 @@ public void run() {
                                                        break;
                                                }
     
    -                                           // emit the actual record. this 
also update offset state atomically
    +                                           // emit the actual record. this 
also updates offset state atomically
                                                // and deals with timestamps 
and watermark generation
                                                emitRecord(value, partition, 
record.offset(), record);
                                        }
                                }
                        }
    -                   // end main fetch loop
    -           }
    -           catch (Throwable t) {
    -                   if (running) {
    -                           running = false;
    -                           errorHandler.reportError(t);
    -                   } else {
    -                           LOG.debug("Stopped ConsumerThread threw 
exception", t);
    -                   }
                }
                finally {
    -                   try {
    -                           consumer.close();
    -                   }
    -                   catch (Throwable t) {
    -                           LOG.warn("Error while closing Kafka 0.9 
consumer", t);
    -                   }
    +                   // this signals the consumer thread that no more work 
is to be done
    +                   consumerThread.shutdown();
    +           }
    +
    +           // on a clean exit, wait for the runner thread
    +           try {
    +                   consumerThread.join();
    +           }
    +           catch (InterruptedException e) {
    +                   // may be the result of a wake-up interruption after an 
exception.
    +                   // we ignore this here and only restore the 
interruption state
    +                   Thread.currentThread().interrupt();
                }
        }
     
    +   @Override
    +   public void cancel() {
    +           // flag the main thread to exit. A thread interrupt will come 
anyways.
    +           running = false;
    +           handover.close();
    --- End diff --
    
    We might not need to call `close()` on the handover here. Please see my 
above comments.


---
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 [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to