Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Harden remote exchange flow (ESQL-1339)
Today, we initiate the computation on a remote node by concurrently sending the data-node request and fetch-page requests. The aims to minimize latency of ESQL requests by avoiding round trips. However, this approach proves to be overly complex and heroic. It requires us to handle pending fetch-page requests that arrive before the data-node request. Additionally, we also need to leave the already-completed sink on the remote node for some time to serve on-the-fly fetch-page requests; otherwise, the requests won't be returned until they time out. To address these issues, this pull request proposes a simpler flow. For each computation on a remote node, we will first send a request to open an exchange. Upon receiving the response, we will concurrently send both the data-node requests and fetch-pages. This approach eliminates the above problems. Furthermore, I have added a disruption test (see EsqlDisruptionIT.java) to ensure that ESQL doesn't produce unexpected results or resource leaks when the cluster experiences issues, such as a network partition.
- Loading branch information
Showing
15 changed files
with
505 additions
and
377 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
268 changes: 112 additions & 156 deletions
268
...ql/compute/src/main/java/org/elasticsearch/compute/operator/exchange/ExchangeService.java
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.