tenzir / public-roadmap

The public roadmap of Tenzir
https://docs.tenzir.com/roadmap
4 stars 0 forks source link

Blocking Operators #126

Closed dominiklohmann closed 9 months ago

dominiklohmann commented 10 months ago

Some operators interact with external APIs that are blocking until data is available. In our pipeline abstraction, this may cause events not to be delivered.

There are generally three ways to solve this:

  1. Allow operators to properly await a blocking action without needing to offload that onto another thread by making our operators async generators internally.
  2. Put execution of detached operators into its own thread to decouple the potentially blocking execution from the delivery of queued previous results.
  3. Let detached operators send partial results out eagerly rather than waiting until the downstream demand is met or the demand's timeout expired. This is a performance pessimization for all detached operators.
### Definition of Done
- [x] Agree on the approach to take
- [x] Implement the required changes