Skip to content

Fix - 27308: Mark Charts deleted#27309

Merged
harshsoni2024 merged 8 commits intomainfrom
mark_charts_deleted
Apr 17, 2026
Merged

Fix - 27308: Mark Charts deleted#27309
harshsoni2024 merged 8 commits intomainfrom
mark_charts_deleted

Conversation

@harshsoni2024
Copy link
Copy Markdown
Contributor

@harshsoni2024 harshsoni2024 commented Apr 13, 2026

Describe your changes:

Fixes #27308

Type of change:

  • Bug fix
  • Improvement
  • New feature
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation

Checklist:

  • I have read the CONTRIBUTING document.
  • My PR title is Fixes <issue-number>: <short explanation>
  • I have commented on my code, particularly in hard-to-understand areas.
  • For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

@harshsoni2024 harshsoni2024 requested a review from a team as a code owner April 13, 2026 06:51
Copilot AI review requested due to automatic review settings April 13, 2026 06:51
@github-actions github-actions Bot added Ingestion safe to test Add this label to run secure Github workflows on PRs labels Apr 13, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds first-class support in the dashboard ingestion topology to track ingested chart FQNs and soft-delete charts that no longer exist in the upstream source (fixing #27308).

Changes:

  • Introduces a new ingestion config flag markDeletedCharts (default true) for dashboard services.
  • Tracks scanned chart FQNs (chart_source_state) and runs a new post-process step to mark missing charts as deleted.
  • Updates multiple dashboard connectors to register each emitted CreateChartRequest into the chart source-state.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
openmetadata-spec/src/main/resources/json/schema/metadataIngestion/dashboardServiceMetadataPipeline.json Adds markDeletedCharts configuration option to dashboard ingestion pipeline schema.
ingestion/src/metadata/ingestion/source/dashboard/dashboard_service.py Adds chart source-state tracking, chart record registration, and chart deletion post-process hook.
ingestion/src/metadata/ingestion/source/dashboard/tableau/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/superset/db_source.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/superset/api_source.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/ssrs/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/sigma/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/redash/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/quicksight/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/qliksense/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/qlikcloud/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py Registers emitted charts into the shared chart source-state (but includes leftover no-op debug block).
ingestion/src/metadata/ingestion/source/dashboard/mode/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/microstrategy/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/metabase/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/looker/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/lightdash/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/grafana/metadata.py Registers emitted charts into the shared chart source-state.
ingestion/src/metadata/ingestion/source/dashboard/domodashboard/metadata.py Registers emitted charts into the shared chart source-state.

Comment thread ingestion/src/metadata/ingestion/source/dashboard/powerbi/metadata.py Outdated
@github-actions
Copy link
Copy Markdown
Contributor

✅ TypeScript Types Auto-Updated

The generated TypeScript types have been automatically updated based on JSON schema changes in this PR.

@github-actions github-actions Bot requested a review from a team as a code owner April 13, 2026 06:57
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 13, 2026

🟡 Playwright Results — all passed (31 flaky)

✅ 3597 passed · ❌ 0 failed · 🟡 31 flaky · ⏭️ 207 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 452 0 5 2
🟡 Shard 2 642 0 2 32
🟡 Shard 3 642 0 10 26
🟡 Shard 4 617 0 8 47
🟡 Shard 5 610 0 1 67
🟡 Shard 6 634 0 5 33
🟡 31 flaky test(s) (passed on retry)
  • Features/DataAssetRulesDisabled.spec.ts › Verify the Database entity item action after rules disabled (shard 1, 1 retry)
  • Flow/Tour.spec.ts › Tour should work from help section (shard 1, 1 retry)
  • Flow/Tour.spec.ts › Tour should work from welcome screen (shard 1, 1 retry)
  • Flow/Tour.spec.ts › Tour should work from URL directly (shard 1, 1 retry)
  • Pages/UserCreationWithPersona.spec.ts › Create user with persona and verify on profile (shard 1, 1 retry)
  • Features/BulkEditEntity.spec.ts › Glossary (shard 2, 1 retry)
  • Features/ChangeSummaryBadge.spec.ts › Automated badge should appear on entity description with Automated source (shard 2, 1 retry)
  • Features/Permissions/GlossaryPermissions.spec.ts › Team-based permissions work correctly (shard 3, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 3, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 3, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 3, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 3, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 3, 1 retry)
  • Features/RTL.spec.ts › Verify Following widget functionality (shard 3, 1 retry)
  • Features/UserProfileOnlineStatus.spec.ts › Should show "Active recently" for users active within last hour (shard 3, 1 retry)
  • Features/UserProfileOnlineStatus.spec.ts › Should not show online status for inactive users (shard 3, 1 retry)
  • Flow/PersonaFlow.spec.ts › Set default persona for team should work properly (shard 3, 1 retry)
  • Pages/Customproperties-part2.spec.ts › entityReferenceList shows item count, scrollable list, no expand toggle (shard 4, 1 retry)
  • Pages/DataContracts.spec.ts › Create Data Contract and validate for Dashboard (shard 4, 1 retry)
  • Pages/DataContracts.spec.ts › Create Data Contract and validate for DashboardDataModel (shard 4, 1 retry)
  • Pages/DataContracts.spec.ts › Create Data Contract and validate for Container (shard 4, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate DataProduct Rule Any_In (shard 4, 1 retry)
  • Pages/Domains.spec.ts › Multiple consecutive domain renames preserve all associations (shard 4, 1 retry)
  • Pages/DomainUIInteractions.spec.ts › Add expert to domain via UI (shard 4, 1 retry)
  • Pages/Entity.spec.ts › Tag Add, Update and Remove (shard 4, 1 retry)
  • Pages/Glossary.spec.ts › Update Glossary and Glossary Term (shard 5, 1 retry)
  • Pages/Lineage/DataAssetLineage.spec.ts › verify create lineage for entity - Table (shard 6, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify lineage schema filter selection (shard 6, 1 retry)
  • Pages/ODCSImportExport.spec.ts › Multi-object ODCS contract - object selector shows all schema objects (shard 6, 1 retry)
  • Pages/Tag.spec.ts › Verify Owner Add Delete (shard 6, 1 retry)
  • ... and 1 more

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

Copilot AI review requested due to automatic review settings April 14, 2026 04:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 19 out of 23 changed files in this pull request and generated no new comments.

@github-actions
Copy link
Copy Markdown
Contributor

Jest test Coverage

UI tests summary

Lines Statements Branches Functions
Coverage: 63%
63.92% (59768/93492) 43.63% (31251/71621) 46.73% (9395/20103)

Copilot AI review requested due to automatic review settings April 14, 2026 06:06
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 30 out of 34 changed files in this pull request and generated 1 comment.

@sonarqubecloud
Copy link
Copy Markdown

@sonarqubecloud
Copy link
Copy Markdown

@gitar-bot
Copy link
Copy Markdown

gitar-bot Bot commented Apr 14, 2026

Code Review ✅ Approved

Implements logic to correctly mark charts as deleted in the database. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

),
)
yield Either(right=chart_request)
self.register_record_chart(chart_request=chart_request)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

should we take the chance to improve the framework a bit. I think we have to keep adding this register_record_xyz when we miss it for this or that entity. Maybe we should rely on the yield Either right and the topology itself to say "entity registered" so we know we are not missing any connectors at all. thoughts?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

this improvement makes sense. since we have to manually keep that in each connector X for each entity(for e.g. 3 in case of dashboard).
We can couple this with topology manager to keep source state to maintain unchaged/changed/deleted entities & update them on ingestion based on markDeleted flag.
I am thinking of handling this in different pr something like this, wdyt ?
#27450

@harshsoni2024 harshsoni2024 merged commit b66b6ea into main Apr 17, 2026
75 of 76 checks passed
@harshsoni2024 harshsoni2024 deleted the mark_charts_deleted branch April 17, 2026 05:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ingestion safe to test Add this label to run secure Github workflows on PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Charts are not deleted when deleted from source

4 participants