Skip to content
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

[Maps] Upgraded maps panel displays Cannot create AbstractESSourceDescriptor when indexPatternId is not provided error and no data #191777

Open
bhavyarm opened this issue Aug 29, 2024 · 5 comments · May be fixed by #199690
Assignees
Labels
bug Fixes for quality problems that affect the customer experience Feature:Maps project:embeddableRebuild regression Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas

Comments

@bhavyarm
Copy link
Contributor

Kibana version: 8.15.1

Browser version: chrome latest

Browser OS version: OS X

Original install method (e.g. download page, yum, from source, etc.): from staging

Describe the bug: I upgraded from 7.17.23->8.15.1 BC1 with a bunch of saved objects. In a dashboard, one of the maps panel doesn't display any data instead displays this error - "Unable to create layer. Cannot create AbstractESSourceDescriptor when indexPatternId is not provided"

Same error when I exported the dashboard saved object from 7.17.23 and imported it to 8.15.1.

Image

Here is the attached saved object file from 7.17.23 -

7.17.x_dashboard.ndjson.zip

Saved object file from 8.15.1 BC1

8.15.1_dashboard.ndjson.zip

@bhavyarm bhavyarm added bug Fixes for quality problems that affect the customer experience Feature:Maps Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas labels Aug 29, 2024
@elasticmachine
Copy link
Contributor

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

@Heenawter
Copy link
Contributor

This looks like a reference error to me - the other panels on the dashboard are built on the same data view, and their references are being converted properly. Looking at the saved object - it seems like we are creating the reference (layer_1_source_index_pattern) and it's getting translated properly (43fcac20-ca27-11eb-bf5e-3de94e83d4f0 -> 25161e69-51aa-56dd-aa91-21c1f82be976) - but I'm not sure that it is getting applied in 8.15? Could there be a reference problem with the new React Map @nreese?

This is just my guess as a Maps layman 🙈

@nreese
Copy link
Contributor

nreese commented Aug 29, 2024

This looks like a reference error to me - the other panels on the dashboard are built on the same data view, and their references are being converted properly. Looking at the saved object - it seems like we are creating the reference (layer_1_source_index_pattern) and it's getting translated properly (43fcac20-ca27-11eb-bf5e-3de94e83d4f0 -> 25161e69-51aa-56dd-aa91-21c1f82be976) - but I'm not sure that it is getting applied in 8.15? Could there be a reference problem with the new React Map @elastic/incident-response

You are right, its a reference problem. The error message is similar to one in canvas, #190994, which was a result of a reference problem.

@nreese
Copy link
Contributor

nreese commented Nov 11, 2024

@bhavyarm Where did you get these dashboard exports from (which version, how where they made)? The references do not contain the expected shape.

Provided reference for data view used in the map. Notice the name key. This value should be panelId:layer_1_source_index_pattern

   {
      "id": "43fcac20-ca27-11eb-bf5e-3de94e83d4f0",
      "name": "layer_1_source_index_pattern",
      "type": "index-pattern"
    },

@nreese
Copy link
Contributor

nreese commented Nov 11, 2024

In 8.15, map embeddable was migrated from a legacy embeddable to a react embeddable. This changed reference injection. See below for details. TLDR is that legacy embeddables pass all references to the embeddable factory when no references for the panel exist. React embeddables just pass an empty reference list regardless of if panel references exist or not.

Reference injection with legacy embeddables

workingState.panels[key] = { ...panel };
const filteredReferences = getReferencesForPanelId(key, references);
const panelReferences = filteredReferences.length === 0 ? references : filteredReferences;

Reference injection with react embeddables

    const rawState = this.getInput().panels[childId].explicitInput;
    const { id, ...serializedState } = rawState;
    if (!rawState || Object.keys(serializedState).length === 0) return;
    const references = getReferencesForPanelId(childId, this.savedObjectReferences);
    return {
      rawState,
      references,
    };

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Fixes for quality problems that affect the customer experience Feature:Maps project:embeddableRebuild regression Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas
Projects
None yet
4 participants