-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Dev tools] Fix performance issue with autocomplete suggestions #143428
[Dev tools] Fix performance issue with autocomplete suggestions #143428
Conversation
src/plugins/console/server/routes/api/console/autocomplete_entities/register_get_route.ts
Outdated
Show resolved
Hide resolved
src/plugins/console/server/routes/api/console/autocomplete_entities/register_get_route.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
latest lgtm, tested locally and seems to work fine!
@elasticmachine merge upstream |
@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 |
Pinging @elastic/platform-deployment-management (Team:Deployment Management) |
…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)
💚 All backports created successfully
Note: Successful backport PRs will be merged automatically after passing CI. Questions ?Please refer to the Backport tool documentation |
) (#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>
* 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) ...
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=false
should return an empty object for thealiases
key.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.