Skip to content

[Dashboard] Fix panel infinite loading on error bug #257188

Merged
MiloszRadzynski merged 2 commits intoelastic:mainfrom
MiloszRadzynski:fix-infinite-loader-issue-in-discover-panel-in-dashboard
Mar 12, 2026
Merged

[Dashboard] Fix panel infinite loading on error bug #257188
MiloszRadzynski merged 2 commits intoelastic:mainfrom
MiloszRadzynski:fix-infinite-loader-issue-in-discover-panel-in-dashboard

Conversation

@MiloszRadzynski
Copy link
Copy Markdown
Contributor

@MiloszRadzynski MiloszRadzynski commented Mar 11, 2026

Summary

When buildEmbeddable threw an error, the onApiAvailable callback was never called. This meant the parent (e.g., a dashboard) never received the API reference for the failed panel, causing it to get stuck in an infinite loading state. The fix adds the missing onApiAvailable?.(errorApi) call inside the catch block so consumers always receive an API — even on failure. This PR also adds additional test cases for it.

The bug currently affects only the Serverless

Demo instance: https://miloszradzynski-pr-257188-fix-infinite-loader-issue-in-disc.kbndev.co/

Closes: #256803

Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

  • Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support
  • Documentation was added for features that require explanation or tutorials
  • Unit or functional tests were updated or added to match the most common scenarios
  • If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker list
  • This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The release_note:breaking label should be applied in these situations.
  • Flaky Test Runner was used on any tests changed
  • The PR description includes the appropriate Release Notes section, and the correct release_note:* label is applied per the guidelines
  • Review the backport guidelines and apply applicable backport:* labels.

Release notes:

Fixes an issue in Dashboard where panels could get stuck in an infinite loading state after an error, so the user now sees error messages instead of endless loading.

@MiloszRadzynski MiloszRadzynski self-assigned this Mar 11, 2026
@MiloszRadzynski MiloszRadzynski added release_note:fix Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// backport:version Backport to applied version labels v9.1.11 v9.2.7 v9.3.2 labels Mar 11, 2026
@MiloszRadzynski
Copy link
Copy Markdown
Contributor Author

/ci

@elasticmachine
Copy link
Copy Markdown
Contributor

elasticmachine commented Mar 11, 2026

💔 Build Failed

Failed CI Steps

Test Failures

  • [job] [logs] Scout: [ security / entity_store ] plugin / local-serverless-security_complete - Entity Store Logs Extraction - Should extract properly extract host
  • [job] [logs] Scout: [ security / entity_store ] plugin / local-stateful-classic - Entity Store CCS logs extraction (test against local instance) - Should run CCS extraction and write aggregated host entities to updates index
  • [job] [logs] Scout: [ security / entity_store ] plugin / local-stateful-classic - Entity Store CCS logs extraction (test against local instance) - Should run CCS extraction and write aggregated host entities to updates index
  • [job] [logs] Scout: [ security / entity_store ] plugin / local-stateful-classic - Entity Store CCS logs extraction (test against local instance) - Should run CCS extraction and write aggregated host entities to updates index

Metrics [docs]

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
embeddable 14.8KB 14.8KB +14.0B

History

cc @MiloszRadzynski

@MiloszRadzynski
Copy link
Copy Markdown
Contributor Author

/ci

@MiloszRadzynski MiloszRadzynski marked this pull request as ready for review March 11, 2026 17:33
@MiloszRadzynski MiloszRadzynski requested a review from a team as a code owner March 11, 2026 17:33
@elasticmachine
Copy link
Copy Markdown
Contributor

Pinging @elastic/kibana-presentation (Team:Presentation)

Copy link
Copy Markdown
Contributor

@nreese nreese left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - thanks for putting up a fix for this issue
code review only

@botelastic botelastic Bot added Feature:Drilldowns Embeddable panel Drilldowns Feature:Embedding Embedding content via iFrame labels Mar 11, 2026
@MiloszRadzynski MiloszRadzynski added release_note:skip Skip the PR/issue when compiling release notes and removed release_note:fix labels Mar 11, 2026
Copy link
Copy Markdown
Contributor

@davismcphee davismcphee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code changes look good, and I did some local testing with the Discover embeddable to confirm it works as expected. Thanks for the fix!

@MiloszRadzynski MiloszRadzynski added release_note:fix and removed release_note:skip Skip the PR/issue when compiling release notes labels Mar 12, 2026
@MiloszRadzynski MiloszRadzynski merged commit f308dc6 into elastic:main Mar 12, 2026
30 checks passed
@kibanamachine
Copy link
Copy Markdown
Contributor

Starting backport for target branches: 9.1, 9.2, 9.3

https://github.com/elastic/kibana/actions/runs/23004279846

@kibanamachine
Copy link
Copy Markdown
Contributor

💔 All backports failed

Status Branch Result
9.1 Backport failed because of merge conflicts
9.2 Backport failed because of merge conflicts
9.3 Backport failed because of merge conflicts

Manual backport

To create the backport manually run:

node scripts/backport --pr 257188

Questions ?

Please refer to the Backport tool documentation

nreese pushed a commit to nreese/kibana that referenced this pull request Mar 12, 2026
## Summary

When buildEmbeddable threw an error, the onApiAvailable callback was
never called. This meant the parent (e.g., a dashboard) never received
the API reference for the failed panel, causing it to get stuck in an
infinite loading state. The fix adds the missing
onApiAvailable?.(errorApi) call inside the catch block so consumers
always receive an API — even on failure. This PR also adds additional
test cases for it.

Demo instance:
https://miloszradzynski-pr-257188-fix-infinite-loader-issue-in-disc.kbndev.co/


Closes: elastic#256803

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
@MiloszRadzynski MiloszRadzynski removed backport:version Backport to applied version labels v9.1.11 labels Mar 12, 2026
@MiloszRadzynski MiloszRadzynski added backport:skip This PR does not require backporting and removed v9.2.7 v9.3.2 labels Mar 12, 2026
sorenlouv pushed a commit that referenced this pull request Mar 17, 2026
## Summary

When buildEmbeddable threw an error, the onApiAvailable callback was
never called. This meant the parent (e.g., a dashboard) never received
the API reference for the failed panel, causing it to get stuck in an
infinite loading state. The fix adds the missing
onApiAvailable?.(errorApi) call inside the catch block so consumers
always receive an API — even on failure. This PR also adds additional
test cases for it.

Demo instance:
https://miloszradzynski-pr-257188-fix-infinite-loader-issue-in-disc.kbndev.co/


Closes: #256803

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
jeramysoucy pushed a commit to jeramysoucy/kibana that referenced this pull request Mar 26, 2026
## Summary

When buildEmbeddable threw an error, the onApiAvailable callback was
never called. This meant the parent (e.g., a dashboard) never received
the API reference for the failed panel, causing it to get stuck in an
infinite loading state. The fix adds the missing
onApiAvailable?.(errorApi) call inside the catch block so consumers
always receive an API — even on failure. This PR also adds additional
test cases for it.

Demo instance:
https://miloszradzynski-pr-257188-fix-infinite-loader-issue-in-disc.kbndev.co/


Closes: elastic#256803

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting Feature:Drilldowns Embeddable panel Drilldowns Feature:Embedding Embedding content via iFrame release_note:fix Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// v9.4.0

5 participants