This PR changes the etl module's one-shot http servers to be handled through hyper. This comes with a huge decrease in complexity compared with the hand-rolled HTTP chunked transfer encoding state machines, as well as seemingly slightly better in terms of performance (from minimal testing).
This also provided the opportunity to properly test the retry behavior of Exasol on IMPORT queries when no data is sent. The result is that, as I initially suspected, Exasol just keeps retrying and sends new HTTP requests after each empty HTTP response. This unfortunately means that the limitation of IMPORT writers still stands: all writers must be used for a graceful data import; otherwise an error will most likely be thrown by the query polling future.
This PR changes the
etl
module's one-shot http servers to be handled throughhyper
. This comes with a huge decrease in complexity compared with the hand-rolled HTTP chunked transfer encoding state machines, as well as seemingly slightly better in terms of performance (from minimal testing).This also provided the opportunity to properly test the retry behavior of Exasol on IMPORT queries when no data is sent. The result is that, as I initially suspected, Exasol just keeps retrying and sends new HTTP requests after each empty HTTP response. This unfortunately means that the limitation of IMPORT writers still stands: all writers must be used for a graceful data import; otherwise an error will most likely be thrown by the query polling future.