westonpace opened a new pull request, #15253: URL: https://github.com/apache/arrow/pull/15253
Simplifies error handling in exec plans. There were several different places that exec plan failures could be reported. Now there is just one. The `ExecNode::ErrorReceived` mechanism was removed. Now `InputReceived` and `InputFinished` return a `Status` instead. This allows for use of the existing macros instead of things like `ErrorNotOk` and removes the burden of error propagation from nodes and removes the burden of error handling from sink nodes. `ExecNode::finished` has now been removed. This could lead to deadlock if nodes failed to mark the future complete (this was easy to do in error scenarios). In addition, it served no real purpose. A plan is done when all of its tasks have finished. BREAKING CHANGE: ExecPlan::StartProducing now returns void. Errors that were returned from this method will now be returned from `ExecPlan::finished`. BREAKING CHANGE: If a plan is stopped early (with `ExecPlan::StopProducing`) then it will complete with a cancelled status instead of an ok status (assuming no other errors). This is to reflect the fact that the plan did not produce complete data. BREAKING CHANGE: Previously the sink node would push some plan errors onto the generator. Now, all errors will be output on `ExecPlan::finished`. The sink node will never push an error, only batches. Readers should make sure to check `ExecPlan::finished`. BREAKING CHANGE: When a plan is cancelled it will no longer attempt to flush output. For example, a plan with an aggregate node will not produce an aggregation based on partial results after a cancel. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
