[
https://issues.apache.org/jira/browse/FLINK-4391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15581097#comment-15581097
]
ASF GitHub Bot commented on FLINK-4391:
---------------------------------------
Github user bjlovegithub commented on a diff in the pull request:
https://github.com/apache/flink/pull/2629#discussion_r83573944
--- Diff:
flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/async/AsyncCollector.java
---
@@ -0,0 +1,85 @@
+/*
+ * 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.streaming.api.operators.async;
+
+import org.apache.flink.annotation.Internal;
+
+import java.util.List;
+
+/**
+ * {@link AsyncCollector} collects data / error in user codes while
processing async i/o.
+ *
+ * @param <IN> Input type
+ * @param <OUT> Output type
+ */
+@Internal
+public class AsyncCollector<IN, OUT> {
+ private List<OUT> result;
+ private Throwable error;
+
+ private boolean isDone = false;
+
+ private AsyncCollectorBuffer<IN, OUT> buffer;
+
+ public AsyncCollector(AsyncCollectorBuffer<IN, OUT> buffer) {
+ this.buffer = buffer;
+ }
+
+ public AsyncCollector(AsyncCollectorBuffer<IN, OUT> buffer, boolean
isDone) {
+ this(buffer);
+ this.isDone = isDone;
+ }
+
+ /**
+ * Set result
+ * @param result A list of results.
+ */
+ public void collect(List<OUT> result) {
+ this.result = result;
+ isDone = true;
+ buffer.mark(this);
+ }
+
+ /**
+ * Set error
+ * @param error A Throwable object.
+ */
+ public void collect(Throwable error) {
+ this.error = error;
+ isDone = true;
+ buffer.mark(this);
+ }
+
+ /**
+ * Get result. Throw RuntimeException while encountering an error.
+ *
+ * @return A List of result.
+ * @throws RuntimeException RuntimeException wrapping errors from user
codes.
+ */
+ public List<OUT> getResult() throws RuntimeException {
--- End diff --
That makes me clarify about how to use RuntimeException ;D
I prefer using IOException, since the error is from I/O process. I will
change RuntimeException into IOException in the codes.
> Provide support for asynchronous operations over streams
> --------------------------------------------------------
>
> Key: FLINK-4391
> URL: https://issues.apache.org/jira/browse/FLINK-4391
> Project: Flink
> Issue Type: New Feature
> Components: DataStream API
> Reporter: Jamie Grier
> Assignee: david.wang
>
> Many Flink users need to do asynchronous processing driven by data from a
> DataStream. The classic example would be joining against an external
> database in order to enrich a stream with extra information.
> It would be nice to add general support for this type of operation in the
> Flink API. Ideally this could simply take the form of a new operator that
> manages async operations, keeps so many of them in flight, and then emits
> results to downstream operators as the async operations complete.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)