Skip to content

Conversation

@mohityadav766
Copy link
Member

@mohityadav766 mohityadav766 commented Jan 18, 2026

Describe your changes:

Fix #24246

I worked on ... because ...

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.

Summary by Gitar

  • Fixed column filtering in lineage impact analysis:
  • New translation keys:
    • column-filter, column-filter-placeholder, column-filter-help-text across 18 languages
  • Filter functionality:
    • Supports tag-based filtering (tag:PII) and column name filtering for column-level lineage
  • State management integration:
    • Wired columnFilter state from LineageProvider to LineageTable and export APIs

This will update automatically on new commits.


@mohityadav766 mohityadav766 self-assigned this Jan 18, 2026
@mohityadav766 mohityadav766 added the UI UI specific issues label Jan 18, 2026
@mohityadav766 mohityadav766 requested a review from a team as a code owner January 18, 2026 06:03
@mohityadav766 mohityadav766 added the To release Will cherry-pick this PR into the release branch label Jan 18, 2026
@mohityadav766 mohityadav766 requested a review from a team as a code owner January 18, 2026 06:03
@github-actions github-actions bot added the safe to test Add this label to run secure Github workflows on PRs label Jan 18, 2026
harshach
harshach previously approved these changes Jan 18, 2026
Comment on lines +677 to 679
Boolean preservePaths)
throws IOException {
if (nullOrEmpty(direction)) {
Copy link

Choose a reason for hiding this comment

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

⚠️ Bug: Inconsistent query param naming: preservePaths vs column_filter

Details

The PR changes the columnFilter parameter to column_filter (snake_case) for consistency, but the newly added preservePaths parameter uses camelCase. This creates an inconsistent API interface.

Impact: API consumers may be confused by the inconsistent naming convention. This violates the principle of least astonishment and creates technical debt.

Suggested fix: Rename preservePaths to preserve_paths for consistency:

@QueryParam("preserve_paths")
@DefaultValue("false")
Boolean preservePaths

Was this helpful? React with 👍 / 👎

@gitar-bot
Copy link

gitar-bot bot commented Jan 19, 2026

🔍 CI failure analysis for fd8d30b: Playwright E2E tests fail in multiple unrelated areas (domains, API endpoints, tables) - appears to be flaky tests or environmental issues, not caused by PR's lineage changes.

CI Failure Analysis: playwright-ci-postgresql (4, 6)

Issue

The playwright-ci-postgresql E2E test job failed with multiple test failures across different areas:

  • Domain rename tests
  • API Endpoint detail panel tests
  • Table entity tests (description, tags, glossary)

Root Cause

Multiple Playwright test failures with various error patterns:

Error: expect(locator).toContainText(expected) failed - element(s) not found
Error: expect(locator).toBeVisible() failed - element(s) not found
Error: locator.click: Target page, context or browser has been closed
Error: locator.click: strict mode violation: getByTestId('edit-button') resolved to 9 elements

Relationship to PR Changes

UNRELATED - The PR modifies lineage filtering functionality:

  • LineageResource.java - lineage API endpoint
  • LineagePathPreserver.java, Elasticsearch/OpenSearch lineage graph builders
  • UI components: CustomControls.component.tsx, LineageProvider.tsx
  • Translation files

The failing tests are for:

  • Domains - domain rename functionality
  • API Endpoints - column detail panels
  • Tables - description updates, tags, glossary operations

None of these test areas involve lineage or the files modified by this PR.

Analysis

These appear to be flaky or pre-existing E2E test failures:

  1. Element not found errors: Timing issues where UI elements aren't rendered before tests interact with them
  2. Closed browser: Test cleanup or navigation issues
  3. Strict mode violations: Multiple elements match selectors - test locator specificity issue
  4. Unrelated functionality: Tests are for domains, API endpoints, and table operations, not lineage

The failures span multiple unrelated features, suggesting environmental/infrastructure issues rather than code changes.

Code Review 👍 Approved with suggestions 0 resolved / 2 findings

Solid bug fix for column filtering on lineage with comprehensive i18n support and good test coverage. Two previous findings remain unresolved: pagination edge case and inconsistent query param naming.

⚠️ Bug: Inconsistent query param naming: `preservePaths` vs `column_filter`

📄 openmetadata-service/src/main/java/org/openmetadata/service/resources/lineage/LineageResource.java:668-678

The PR changes the columnFilter parameter to column_filter (snake_case) for consistency, but the newly added preservePaths parameter uses camelCase. This creates an inconsistent API interface.

Impact: API consumers may be confused by the inconsistent naming convention. This violates the principle of least astonishment and creates technical debt.

Suggested fix: Rename preservePaths to preserve_paths for consistency:

@QueryParam("preserve_paths")
@DefaultValue("false")
Boolean preservePaths
More details 💡 1 suggestion
💡 Edge Case: Pagination edge case returns inconsistent results

📄 openmetadata-service/src/main/java/org/openmetadata/service/search/lineage/AbstractLineageGraphBuilder.java:380-392

When from >= sortedFqns.size(), the method returns only the root node without edges. However, this could lead to unexpected behavior where calling with an out-of-bounds from value returns a graph with just the root and no edges, even when there might be valid edges connected to the root.

Impact: Users paginating past the end of results will receive a minimal result containing only the root node. While the root is preserved, the lack of edges might be confusing if the user expects to see at least the root's immediate connections.

Suggested fix: Consider documenting this behavior clearly in the API, or alternatively return an empty edges map only when there truly are no edges (not just when pagination is out of bounds).

What Works Well

Good fix for ColumnMetadataCache using fullyQualifiedName instead of name for proper column matching. The new test test_columnFilterOnlyReturnsMatchingEdges provides excellent coverage of the column filter behavior. Comprehensive i18n support with translations across 18 languages.

Tip

Comment Gitar fix CI or enable auto-apply: gitar auto-apply:on

Options

Auto-apply is off Gitar will not commit updates to this branch.
Display: compact Hiding non-applicable rules.

Comment with these commands to change:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | This comment will update automatically (Docs)

@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend safe to test Add this label to run secure Github workflows on PRs UI UI specific issues

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Lineage - Impact Analysis column level filters are not taking effect

5 participants