flink-extended/flink-scala-api

[Feature request] Add 'unorderedWaitWithRetry' method to `AsyncDataStream`

Closed this issue · 9 comments

Current version of flink-scala-api seems to not support all featuires of Java's Async I/O API. Implementing unorderedWaitWithRetry would allow to use retry support in asyncronous operations.

As far I can see only unorderedWait and orderedWait are currently implemented.

I would like to tackle this, I'll need retriable async operators implemented too for the migration.

My only question is whether should I reuse the AsyncRetryStrategy from the Java API or create a wrapper like rest of the async interfaces this library implements.

It is new area for me in Flink.
I would follow the existing approach for sake of consistency, however we are open for any meaningful refactoring. Feel free to come up with a proposal to add more operations.

There's one minor detail that makes this difficult, async i/o retry strategy was implemented in 1.16.0 (ref https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211883963) and this library supports flink 1.15 and upwards. Is there a way to implement features conditionally based on Flink version?

A build for 1.15 version is already dropped from release script: https://github.com/flink-extended/flink-scala-api/blob/master/release.sh

https://github.com/flink-extended/flink-scala-api/blob/master/.github/workflows/ci.yml#L19 does it mean this CI build is outdated? If so, there are no blockers and I'll implement this.

Yes, it needs to be fixed to match the release script.

Great, I've submitted two changes:

  • one to deprecate 1.15 in CI builds
  • another one to implement async i/o with retries, adds missing spec.

@piotrwieckiewicz I think I'm done and it's only a matter of release.

@buinauskas Thank you very much! Now my terrible Flink code will be just bad with these retries!