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
- Create a Table and add
Certification.Gold.
- Create a test case on it. The test case search doc carries
certification.tagLabel.tagFQN = Certification.Gold (correct, denormalized at index time).
- PATCH the table cert from Gold to Silver.
- 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.
Summary
When a Table's
certificationis 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
Certification.Gold.certification.tagLabel.tagFQN = Certification.Gold(correct, denormalized at index time).Expected:
certification.tagLabel.tagFQN = Certification.Silver.Actual: still
Certification.Gold. A reindex is required to refresh it.Root cause
In
SearchRepository, both call sites ofpropagateCertificationTagssit behindrequiresPropagation(...). That gate uses each entity's propagation descriptors to decide whether to propagate.On
mainand1.13:EntityRepository.getSearchPropagationDescriptors()declares descriptors forowners,domains,disabled,testSuites,displayName.TableRepository.getSearchPropagationDescriptors()addstags,dataProducts.certification.Result: when a Table's only change is
certification,requiresPropagation()returns false,propagateCertificationTagsis skipped,handleEntityCertificationUpdatenever runs, and the existingcascadeCertificationToChildrenmethod (which would do the right thing) is dead code.On
1.12.xthe gate has a different shape (hard-codedinheritableFieldslist) but the same outcome: the list does not includecertificationfor non-Tag entities, so the cascade never fires.Affected branches
1.12.x(including 1.12.9 after PR fix(dq-dashboard): denormalize certification onto testCase index + filter plumbing #28084 cherry-pick)1.13mainIn all three the cascade method exists but the propagation gate blocks it for Table cert changes.