[Dev tools] Fix performance issue with autocomplete suggestions#143428
Merged
mibragimov merged 9 commits intoelastic:mainfrom Oct 21, 2022
Merged
[Dev tools] Fix performance issue with autocomplete suggestions#143428mibragimov merged 9 commits intoelastic:mainfrom
mibragimov merged 9 commits intoelastic:mainfrom
Conversation
alexwizp
reviewed
Oct 17, 2022
src/plugins/console/server/routes/api/console/autocomplete_entities/register_get_route.ts
Outdated
Show resolved
Hide resolved
alexwizp
reviewed
Oct 17, 2022
src/plugins/console/server/routes/api/console/autocomplete_entities/register_get_route.ts
Outdated
Show resolved
Hide resolved
alexwizp
reviewed
Oct 18, 2022
sabarasaba
approved these changes
Oct 20, 2022
Member
sabarasaba
left a comment
There was a problem hiding this comment.
latest lgtm, tested locally and seems to work fine!
Contributor
Author
|
@elasticmachine merge upstream |
Contributor
Author
|
@elasticmachine merge upstream |
💚 Build Succeeded
Metrics [docs]Page load bundle
Unknown metric groupsESLint disabled line counts
Total ESLint disabled count
History
To update your PR or re-run it, just comment with: cc @mibragimov |
Contributor
|
Pinging @elastic/platform-deployment-management (Team:Deployment Management) |
kibanamachine
added a commit
to kibanamachine/kibana
that referenced
this pull request
Oct 21, 2022
…tic#143428) * Fix performance issue with autocomplete suggestions * Add unit tests for streamToString function * Address CR change Co-authored-by: Muhammad Ibragimov <muhammad.ibragimov@elastic.co> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit 220f867)
Contributor
💚 All backports created successfully
Note: Successful backport PRs will be merged automatically after passing CI. Questions ?Please refer to the Backport tool documentation |
kibanamachine
added a commit
that referenced
this pull request
Oct 21, 2022
) (#143813) * Fix performance issue with autocomplete suggestions * Add unit tests for streamToString function * Address CR change Co-authored-by: Muhammad Ibragimov <muhammad.ibragimov@elastic.co> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit 220f867) Co-authored-by: Muhammad Ibragimov <53621505+mibragimov@users.noreply.github.com>
jloleysens
added a commit
to jloleysens/kibana
that referenced
this pull request
Oct 24, 2022
* main: (57 commits) [Files] Filepicker (elastic#143111) [Infrastructure UI] Replace Lens table with EUI table and own api (elastic#142871) [api-docs] Daily api_docs build (elastic#143829) [api-docs] Daily api_docs build (elastic#143825) [api-docs] Daily api_docs build (elastic#143823) [Security Solution] Restructuring folders of Detection Engine + refactoring Rule Management (elastic#142950) [Dev tools] Fix performance issue with autocomplete suggestions (elastic#143428) [Security Solution] Disable ML rule's edit button link under basic license (elastic#143260) [Lens] Use the language-documentation package for formula (elastic#143649) [api-docs] Daily api_docs build (elastic#143811) [Security Solution] Fix missing title on inspect pop-up (elastic#143601) fix incorrect filters being passed to events table causing duplicate entries in our inpsect tool request tab (elastic#143239) [Security Solution][Endpoint] `get-file` response action kibana download file API (elastic#143708) Rely on refresh context to update stats independently of overview cards. (elastic#143308) [RAM] Rule event log - Fix incorrect results when filtering by message and outcome simultaneously (elastic#143119) [ML] Display link to create data view from error cases in data frame analytics results pages (elastic#143596) Update links in README :) (elastic#143675) Add more tests for ml_inference_logic (elastic#143764) skip failing test suite (elastic#143717) [DOCS] Add assignees to case APIs (elastic#143610) ...
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #132495
Summary
This PR addresses the issue of the browser event loop being blocked for a long time when retrieving autocomplete suggestions with large responses. The proposed solution is to protect against large responses by limiting the response size to 10MB. This is done by reading the response stream and accumulating the data in chunks. If the accumulated data exceeds the limit, the stream is destroyed and an error is thrown. In case of an error, an empty object for the failed request and the rest of the successful requests are returned.
Testing
To ensure that the response size limit is working, you can change the RESPONSE_SIZE_LIMIT to 1 and run the following curl command:
You should see an empty object for each key in the response.
Change the response size limit to higher than the response size, and you should see the response with autocomplete suggestions.
Test with different values for the query parameters and verify that the response is as expected. e.g.
indices=falseshould return an empty object for thealiaseskey.Release note
This PR fixes the issue of retrieving autocomplete suggestions causing the UI to freeze. It also adds a couple of improvements to better handle the error cases and optimize the performance of the autocomplete suggestions.