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

    https://github.com/apache/flink/pull/750#discussion_r52597099
  
    --- Diff: 
flink-core/src/main/java/org/apache/flink/api/common/functions/StoppableFunction.java
 ---
    @@ -0,0 +1,33 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE
    + * file distributed with this work for additional information regarding 
copyright ownership. The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the "License"); you may 
not use this file except in compliance with the
    + * License. You may obtain a copy of the License at
    + * 
    + * http://www.apache.org/licenses/LICENSE-2.0
    + * 
    + * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on
    + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied. See the License for the
    + * specific language governing permissions and limitations under the 
License.
    + */
    +package org.apache.flink.api.common.functions;
    +
    +/**
    + * Must be implemented by stoppable functions, eg, source functions of 
streaming jobs. The method {@link #stop()} will
    + * be called when the job received the STOP signal. On this signal, the 
source function must stop emitting new data and
    + * terminate gracefully.
    + */
    +public interface StoppableFunction {
    +   /**
    +    * Stops the source. In contrast to {@code cancel()} this is a request 
to the source function to shut down
    +    * gracefully. Pending data can still be emitted and it is not required 
to stop immediately -- however, in the near
    +    * future. The job will keep running until all emitted data is 
processed completely.
    +    * <p>
    +    * Most streaming sources will have a while loop inside the {@code 
run()} method. You need to ensure that the source
    +    * will break out of this loop. This can be achieved by having a 
volatile field "isRunning" that is checked in the
    +    * loop and that is set to false in this method.
    +    * <p>
    +    * <strong>The call to {@code stop()} should not block and not throw 
any exception.</strong>
    +    */
    +   public void stop();
    --- End diff --
    
    interface methods are always public


---
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