* [Search] Re-add support for aborting when a connection is closed
* Fix types
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [Search] Remove long-running query pop-up
* Don't timeout if requestTimeout isn't configured
* Remove unused kibanaUtils
* Remove unused kibanaReact
* Re-add reference to kibanaUtils
* Remove unused translations and update documentation
* Add new x-pack advanced setting searchTimeout and use it in the EnhancedSearchInterceptor
* docs
* Re-add toast when queries time out
* Fix types
* Update error message with capabilities
* Update docs
* Update docs
* Move search server routes into a directory.
* Add internal/_msearch route.
* Remove legacy search API, rewrite default search strategy to use internal route.
* Remove legacy es_client code.
* Handle msearch options on server.
* Remove elasticsearch-browser dependency.
* Update generated docs.
* Rely on server timeout in OSS (?)
Use UI setting in xpack.
* Rename function
* Add features to dependencies
* Undefined check
* doc
* Code review fixes
* code review
* doc
* loading count
* simplify code review and fix jest tets
* type check
* Remove esShard from client
* cleanup request parameters from FE
* doc
* doc
* Align request parameters on server,
Remove leftover parameters from client
Shim responses for search and msearch routes
* docs
Stop using toSnakeCase
Updates jest tests
* add management docs
* docs
* Remove import
* Break circular dep + fix msearch test
* Remove deleted type
* Fix jest
* Bring toSnakeCase back
* docs
* fix jest
* Add new x-pack advanced setting searchTimeout and use it in the EnhancedSearchInterceptor
* docs
* Rely on server timeout in OSS (?)
Use UI setting in xpack.
* Rename function
* doc
* Remove esShard from client
* cleanup request parameters from FE
* doc
* doc
* Align request parameters on server,
Remove leftover parameters from client
Shim responses for search and msearch routes
* docs
Stop using toSnakeCase
Updates jest tests
* add management docs
* docs
* Remove import
* Break circular dep + fix msearch test
* Remove deleted type
* Fix jest
* Bring toSnakeCase back
* docs
* fix jest
* Fix merge
* Fix types
* Allow timeout to be undefined
* Fix jest test
* Upldate docs
* Fix msearch jest
* Merge correction
* docs
* Fix rollup search merge
* Fix merge
* Use i18n
Co-authored-by: Liza K <liza.katz@elastic.co>
Co-authored-by: Luke Elmers <luke.elmers@elastic.co>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Update AppLogic to use new data structure
* Update components to use AppLogic
* Remove unused props from logic file
* Fix failing tests
* Add tests to get 100% converage
The test added for app_logic will never happen but hey, 100 is 100.
Also added test to recent_activity for 100% coverage
* Use non-null assertion operator in logic file
TIL this is a thing
* Remove test for undefined
* Moving generator to safe type version
* Finished generator and alert
* Gzipping again
* Finishing type conversions for backend
* Trying to cast front end tests back to unsafe type for now
* Working reducer tests
* Adding more comments and fixing alert type
* Restoring resolver test data
* Updating snapshot with timestamp info
* Removing todo and fixing test
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
## Summary
closes#75862
1. Use an HTTP status code if ES client error provides one. extended https://github.com/elastic/kibana/issues/75862#issuecomment-680152475 to all 4xx-5xx errors
1. Format Error message as described in https://github.com/elastic/kibana/issues/75862#issuecomment-680916467 & agreed to https://github.com/elastic/kibana/issues/75862#issuecomment-680873298
### example Request/Response:
```
> curl --user elastic:changeme -X POST http://localhost:5601/api/ingest_manager/epm/packages/aws-0.2.7 -H 'kbn-xsrf: xyz'
{
"statusCode":400,
"error":"Bad Request",
"message":"[parse_exception] Failed to parse content to map from ES at /_ingest/pipeline/logs-aws.cloudtrail-0.2.7: {\"error\":{\"root_cause\":[{\"type\":\"parse_exception\",\"reason\":\"Failed to parse content to map\"}],\"type\":\"parse_exception\",\"reason\":\"Failed to parse content to map\",\"caused_by\":{\"type\":\"json_parse_exception\",\"reason\":\"Duplicate field 'ListGroupsForUser'\\n at [Source: (byte[])\\\"---\\ndescription: Pipeline for AWS CloudTrail Logs\\nprocessors:\\n - set:\\n field: event.ingested\\n value: '{{_ingest.timestamp}}'\\n - rename:\\n field: \\\"message\\\"\\n target_field: \\\"event.original\\\"\\n - json:\\n field: \\\"event.original\\\"\\n target_field: \\\"json\\\"\\n - date:\\n field: \\\"json.eventTime\\\"\\n target_field: \\\"@timestamp\\\"\\n ignore_failure: true\\n formats:\\n - ISO8601\\n - rename:\\n field: \\\"json.eventVersion\\\"\\n target_field: \\\"aws.cloudtrail.event_versi\\\"[truncated 16425 bytes]; line: 489, column: 26]\"}},\"status\":400}"
}
```
### example Kibana Logs:
`[parse_exception] Failed to parse content to map`
<details><summary>Used `test.each` to generate tests for each 4xx - 5xx error. Call each error 3 different ways.</summary>
```
defaultIngestErrorHandler
use the HTTP error status code provided by LegacyESErrors
✓ 400 - with path & response (12ms)
✓ 401 - with path & response (5ms)
✓ 402 - with path & response (5ms)
✓ 403 - with path & response (6ms)
✓ 404 - with path & response (5ms)
✓ 405 - with path & response (17ms)
✓ 406 - with path & response (2ms)
✓ 407 - with path & response (3ms)
✓ 408 - with path & response (6ms)
✓ 409 - with path & response (5ms)
✓ 410 - with path & response (1ms)
✓ 411 - with path & response (1ms)
✓ 412 - with path & response (1ms)
✓ 413 - with path & response (1ms)
✓ 414 - with path & response (1ms)
✓ 415 - with path & response (1ms)
✓ 416 - with path & response (1ms)
✓ 417 - with path & response (9ms)
✓ 418 - with path & response (1ms)
✓ 421 - with path & response (1ms)
✓ 426 - with path & response (1ms)
✓ 429 - with path & response (1ms)
✓ 450 - with path & response (1ms)
✓ 494 - with path & response (1ms)
✓ 497 - with path & response (1ms)
✓ 499 - with path & response (3ms)
✓ 500 - with path & response (2ms)
✓ 501 - with path & response (1ms)
✓ 502 - with path & response (2ms)
✓ 503 - with path & response (1ms)
✓ 504 - with path & response (1ms)
✓ 505 - with path & response (8ms)
✓ 506 - with path & response (2ms)
✓ 510 - with path & response (1ms)
✓ 400 - with other metadata (1ms)
✓ 401 - with other metadata (1ms)
✓ 402 - with other metadata (1ms)
✓ 403 - with other metadata (1ms)
✓ 404 - with other metadata (2ms)
✓ 405 - with other metadata (1ms)
✓ 406 - with other metadata (2ms)
✓ 407 - with other metadata (1ms)
✓ 408 - with other metadata (1ms)
✓ 409 - with other metadata (1ms)
✓ 410 - with other metadata (10ms)
✓ 411 - with other metadata (2ms)
✓ 412 - with other metadata (1ms)
✓ 413 - with other metadata (1ms)
✓ 414 - with other metadata (1ms)
✓ 415 - with other metadata (1ms)
✓ 416 - with other metadata (7ms)
✓ 417 - with other metadata (2ms)
✓ 418 - with other metadata (1ms)
✓ 421 - with other metadata (1ms)
✓ 426 - with other metadata (1ms)
✓ 429 - with other metadata (1ms)
✓ 450 - with other metadata (1ms)
✓ 494 - with other metadata (11ms)
✓ 497 - with other metadata (1ms)
✓ 499 - with other metadata (1ms)
✓ 500 - with other metadata (1ms)
✓ 501 - with other metadata (1ms)
✓ 502 - with other metadata (1ms)
✓ 503 - with other metadata (1ms)
✓ 504 - with other metadata (2ms)
✓ 505 - with other metadata (2ms)
✓ 506 - with other metadata (1ms)
✓ 510 - with other metadata (1ms)
✓ 400 - without metadata (1ms)
✓ 401 - without metadata (1ms)
✓ 402 - without metadata (10ms)
✓ 403 - without metadata (1ms)
✓ 404 - without metadata (1ms)
✓ 405 - without metadata (1ms)
✓ 406 - without metadata (1ms)
✓ 407 - without metadata (1ms)
✓ 408 - without metadata (1ms)
✓ 409 - without metadata (1ms)
✓ 410 - without metadata (1ms)
✓ 411 - without metadata (1ms)
✓ 412 - without metadata (1ms)
✓ 413 - without metadata (1ms)
✓ 414 - without metadata (1ms)
✓ 415 - without metadata (12ms)
✓ 416 - without metadata (1ms)
✓ 417 - without metadata (2ms)
✓ 418 - without metadata (1ms)
✓ 421 - without metadata (1ms)
✓ 426 - without metadata (2ms)
✓ 429 - without metadata (2ms)
✓ 450 - without metadata (3ms)
✓ 494 - without metadata (2ms)
✓ 497 - without metadata (2ms)
✓ 499 - without metadata (1ms)
✓ 500 - without metadata (1ms)
✓ 501 - without metadata (2ms)
✓ 502 - without metadata (1ms)
✓ 503 - without metadata (10ms)
✓ 504 - without metadata (2ms)
✓ 505 - without metadata (1ms)
✓ 506 - without metadata (2ms)
✓ 510 - without metadata (1ms)
```
</details>
### Checklist
- [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios
### Manual testing
<details><summary><strong>Manual testing</strong></summary>
#### Checkout the branch from https://github.com/elastic/package-storage/pull/370
```
git clone https://github.com/elastic/package-storage.git
cd package-storage/
git switch -C update-aws-0.2.7-1598281986 origin/update-aws-0.2.7-1598281986
```
#### start the stack using the registry from https://github.com/elastic/package-storage/pull/370
```
cd testing/environments/
docker-compose -f snapshot.yml pull
docker-compose -f snapshot.yml -f local.yml up --force-recreate
```
#### Try to install the broken package
```
> curl --user elastic:changeme -X POST http://localhost:5601/api/ingest_manager/epm/packages/aws-0.2.7 -H 'kbn-xsrf: xyz'
{"statusCode":500,"error":"Internal Server Error","message":"Bad Request"}
```
_observe the same error as #75862_
#### start only local registry with the broken package
```
# CTRL-C the stack (shell where you ran `docker-compose`)
cd ../.. # back to package-storage root
docker build .
docker run -p 8080:8080 id_from_prior_step
```
#### start the stack from this PR, pointing at the local registry from prior step
```
yarn start --no-base-path --xpack.ingestManager.registryUrl=http://localhost:8080
yarn es snapshot --license=trial -E xpack.security.authc.api_key.enabled=true
```
#### Try to install the broken package
```
curl --user elastic:changeme -X POST http://localhost:5601/api/ingest_manager/epm/packages/aws-0.2.7 -H 'kbn-xsrf: xyz'
{
"statusCode": 400,
"error": "Bad Request",
"message": "[parse_exception] Failed to parse content to map response from /_ingest/pipeline/logs-aws.cloudtrail-0.2.7: {\"error\":{\"root_cause\":[{\"type\":\"parse_exception\",\"reason\":\"Failed to parse content to map\"}],\"type\":\"parse_exception\",\"reason\":\"Failed to parse content to map\",\"caused_by\":{\"type\":\"json_parse_exception\",\"reason\":\"Duplicate field 'ListGroupsForUser'\\n at [Source: (byte[])\\\"---\\ndescription: Pipeline for AWS CloudTrail Logs\\nprocessors:\\n - set:\\n field: event.ingested\\n value: '{{_ingest.timestamp}}'\\n - rename:\\n field: \\\"message\\\"\\n target_field: \\\"event.original\\\"\\n - json:\\n field: \\\"event.original\\\"\\n target_field: \\\"json\\\"\\n - date:\\n field: \\\"json.eventTime\\\"\\n target_field: \\\"@timestamp\\\"\\n ignore_failure: true\\n formats:\\n - ISO8601\\n - rename:\\n field: \\\"json.eventVersion\\\"\\n target_field: \\\"aws.cloudtrail.event_versi\\\"[truncated 16425 bytes]; line: 489, column: 26]\"}},\"status\":400}"
}
```
_observe new error format_
</details>
* Add user auth check for /ent/select redirects
- Recent Enterprise Search CSRF changes have made it so redirects can occur to /ent/select and not just /login
* Fix request.query typing
- API endpoints passing in custom request.query params were seeing {} type errors - this change works around them
* Add Accept and Content-Type JSON headers to Enterprise Search requests
- Without the Accept header, Enterprise Search APIs will kick back a CSRF error
- Without the Content-Type header, APIs will not load JSON bodies as parameters per Ruby on Rails docs
* WIP: Adding in new reporting diag tool
* WIP: chrome-binary test + log capturing/error handling
* More wip on diagnostic tool
* More work adding in diagnose routes
* Alter link in description + minor rename of chrome => browser
* Wiring UI to API + some polish on UI flow
* WIP: Add in screenshot diag route
* Adding in screenshot diag route, hooking up client to it
* Add missing lib check + memory check
* Working screenshot test + config check for RAM
* Small test helper consolidation + screenshot diag test
* Delete old i18n translations
* PR feedback, browser tests, rename, re-organize import statements and lite fixes
* Lite rename for consistency
* Remove old validate check i18n
* Add config check
* i18n all the things!
* Docs on diagnostics tool
* Fixes, better readability, spelling and more for diagnostic tool
* Translate a few error messages
* Rename of test => start_logs for clarity. Move to observables
* Gathering logs even during process exit or crash
* Adds a test case for the browser exiting during the diag check
* Tap into browser logs for checking output
* Rename asciidoc diag id
* Remove duplicate shared object message
* Add better comment as to why we merge events + wait for a period of time
* Cloning logger for mirroring browser stderr to kibana output
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [public] Register Enterprise search plugin
+ move new Home strings to constants
* [server] Register plugin access/visibility
* Set up Enterprise Search Kibana Chrome
- Add SetEnterpriseSearchChrome
- Update Enterprise Search breadcrumbs to link to new overview plugin (+ update overview plugin URL per team discussion)
- Add ability to break out of React Router basename by not using history.createhref
- Update createHref mock to more closely match Kibana urls (adding /app prefix)
- Minor documentation fix
* Set up Enterprise Search plugin telemetry
- client-side: SendEnterpriseSearchTelemetry
- server-side: register saved objects, usage collector, etc.
* Enterprise search overview views (#23)
* Add formatTestSubj util
This allows us to correctly format strings into our casing for data-test-subj attrs
* Add images and stylesheet
* Add product card component
* Add index component
* Remove unused styles
* Fix inter-plugin links
- by add shouldNotCreateHref prop to RR helpers
- similiar to breadcrumb change
* Fix/clean up CSS
- Prefer EUI components over bespoke CSS (e.g. EuiCard)
- Remove unused or unspecific CSS
- Pull out product card CSS to its component
- Fix kebab-cased CSS classes to camelCased
* Clean up ProductCard props
- Prefer passing in our plugin consts instead of separate props
- Move productCardDescription to constants
- Update tests
* Add telemetry clicked actions to product buttons
+ revert data-test-subj strings to previous implementation
+ prune format_test_subj helper by using lodash util directly
* [PR feedback] Add new plugin to applicationUsageSchema per telemetry team request
* Fix failing functional navLinks test
* Fix telemetry schema test
* [Perf] Optimize assets size by switching from 300kb SVG to 25kb PNG
* Only show product cards if the user has access to that product
- adds access checks
- fixes flex/CSS to show one card at a time
Co-authored-by: Scotty Bollinger <scotty.bollinger@elastic.co>
* Refactors signal ancestry to allow multiple parents
* Fix depth calculation for 7.10+ signals on pre-7.10 signals
* Comment build_signal functions
* Rename buildAncestorsSignal to buildAncestors
* Update detection engine depth test scripts and docs
* Update halting test readme
* Match up rule ids in readme
* Continue populating signal.parent along with signal.parents
* pr comments
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>