05189fdb00
Prior to this change background tasks that we feed into `AdapterStream` can panic but that would just end the stream without any user-visible error (except for the panic message on stdout/stderr). This was found while developing #4964. I have proposed another fix in #4966 but found that I actually developed an existing solution a 2nd time: `watch_task`. But I also see a major issue with the existing API: one can create `AdapterStream` with ordinary tokio tasks that are not watched at all, leaving the burden to the implementor to check for that (and actually we forgot that in `parquet_file`). So this change takes a slightly different approach: The `AdapterStream` does NOT accept ordinary join handles any longer but requires that you pass a "watched task". The newly introduced `WatchedTask` does the same as we did manually before: wrapping a future into a tokio task, watch it and wrap the watcher into a task. It is now way more difficult to do anything stupid (sure you can still mix up the tasks and the channels, but we need at least some flexibility here to allow for "split" and potential future fan-in/out constructs). Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |