[
https://issues.apache.org/jira/browse/FLINK-2111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15142668#comment-15142668
]
ASF GitHub Bot commented on FLINK-2111:
---------------------------------------
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
> Add "stop" signal to cleanly shutdown streaming jobs
> ----------------------------------------------------
>
> Key: FLINK-2111
> URL: https://issues.apache.org/jira/browse/FLINK-2111
> Project: Flink
> Issue Type: Improvement
> Components: Distributed Runtime, JobManager, Local Runtime,
> Streaming, TaskManager, Webfrontend
> Reporter: Matthias J. Sax
> Assignee: Matthias J. Sax
> Priority: Minor
>
> Currently, streaming jobs can only be stopped using "cancel" command, what is
> a "hard" stop with no clean shutdown.
> The new introduced "stop" signal, will only affect streaming source tasks
> such that the sources can stop emitting data and shutdown cleanly, resulting
> in a clean shutdown of the whole streaming job.
> This feature is a pre-requirment for
> https://issues.apache.org/jira/browse/FLINK-1929
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)