apache / apache/beam

Migrate SnsIO.write to async implementation

Open
#21,366 1 comment 0 reactions 0 assignees View on GitHub
aws improvement io java P2
Dominant language
Java
Stars
8.7k
Forks
4.7k
Avg merge
1d 20h
Merged PRs (30d)
196

Description

In  BEAM-13203 `SnsIO.writeAsync` was deprecated to address the risk of data loss in that transform. Unfortunately, it has considerable issues in design and implementation with respect to the beam programming model as well as general async programming:
* Output for a bundle may be emitted even after the bundle is finished (lack of join / waiting for pending futures), additionally output is emitted from multiple threads risking concurrent modification issues on underlying data structures.
* Exceptions disappear into the void (respective tests are implemented incorrectly as they don't throw asynchronously and could make one think this works).
* Parallelism is unlimited causing the writer to instantly accumulate everything into memory.

With BEAM-13563 it will be possible to change `SnsIO.write` into a more performant async implementation without any breaking changes to the public user facing API making `SnsIO.writeAsync` obsolete.

Imported from Jira [BEAM-13824](https://issues.apache.org/jira/browse/BEAM-13824). Original Jira may contain additional context.
Reported by: mosche.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.