Hi guys, I'm using Flink 1.9.2 I have a question about uses case where I would like to use FLink's managed keyed state with Async IO [1]
Lets take as a base line below example taken from [1] and lets assume that we are executing this on a keyed stream. final Future<String> result = client.query(key); CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { try { return result.get(); } catch (InterruptedException | ExecutionException e) { // Normally handled explicitly. return null; } } }).thenAccept( (String dbResult) -> { resultFuture.complete(Collections.singleton(new Tuple2<>(key, dbResult))); }); Imagine that instead passing key to client.query(..) we will pass some value taken from Flinks Managed, keyed state. Later the supplier's get method will return a value that should be stored in that state. In other words, we use previous results as inputs for next computations. Is this achievable with Flinks AsyncIo? I can have many pending requests on client.query which can finished in a random order. The AsyncDataStream.orderedWait will not help he here since this affects only the way how Flink "releases" the messages from it's internal queue for Async operators. What is more, this scenario can result with multiple concurrent writes/reads to/from Flink's managed state for same key values. Is this thread safe? [1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/asyncio.html -- Sent from: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/