Skip to content

Certification change on a parent Table does not cascade to child search docs #28229

@manerow

Description

@manerow

Summary

When a Table's certification is added, changed, or removed via PATCH, the change is reflected on the table's own search doc but is never propagated to child search docs that denormalize the parent's cert (e.g. test_case_search_index, test_case_result_search_index, test_case_resolution_status_search_index, test_suite_search_index). Filters and aggregations on those child indices keep returning stale cert until a full reindex.

This is observable on the Data Quality dashboard's Certification filter. After PR #28084 the testCase index correctly inherits cert at index time, but a subsequent cert change on the parent table does not refresh the child docs.

Reproduction

  1. Create a Table and add Certification.Gold.
  2. Create a test case on it. The test case search doc carries certification.tagLabel.tagFQN = Certification.Gold (correct, denormalized at index time).
  3. PATCH the table cert from Gold to Silver.
  4. Query the test case search doc.

Expected: certification.tagLabel.tagFQN = Certification.Silver.
Actual: still Certification.Gold. A reindex is required to refresh it.

Root cause

In SearchRepository, both call sites of propagateCertificationTags sit behind requiresPropagation(...). That gate uses each entity's propagation descriptors to decide whether to propagate.

On main and 1.13:

  • EntityRepository.getSearchPropagationDescriptors() declares descriptors for owners, domains, disabled, testSuites, displayName.
  • TableRepository.getSearchPropagationDescriptors() adds tags, dataProducts.
  • No entity declares a descriptor for certification.

Result: when a Table's only change is certification, requiresPropagation() returns false, propagateCertificationTags is skipped, handleEntityCertificationUpdate never runs, and the existing cascadeCertificationToChildren method (which would do the right thing) is dead code.

On 1.12.x the gate has a different shape (hard-coded inheritableFields list) but the same outcome: the list does not include certification for non-Tag entities, so the cascade never fires.

Affected branches

In all three the cascade method exists but the propagation gate blocks it for Table cert changes.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    Done ✅

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions