Fix external-cluster search IT failures (external-mode + shared-cluster)#30091
Conversation
…shared-cluster assertions, page-size flake) - ServiceDeleteSearchCleanupScaleIT: resolve indexes via IndexAliasInspector — Entity.getSearchRepository() is null in external mode — and delete the service through the UI's async endpoint instead of the blocking synchronous delete. - SearchRelevancyPreviewIT: assert the seeded ids are present rather than an exact hit count that a concurrent run's ngram-colliding table inflates. - SelectiveFieldReindexUIIT: assert the seeded entity surfaces by name instead of an == 1 global Explore filter-count. - IncidentManagerPage: settle-and-retry the page-size dropdown, which the post-reindex list refetch can unmount mid-click. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
🟡 Playwright Results — all passed (33 flaky)✅ 4542 passed · ❌ 0 failed · 🟡 33 flaky · ⏭️ 95 skipped
🟡 33 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
Code Review ✅ ApprovedUpdates search and UI integration tests to prevent failures in external shared-cluster environments. Fixes include resolving search indexes via the inspector, replacing exact size assertions with existence checks, and stabilizing dropdown interactions. OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
… resolution, shared-cluster assertions, page-size flake) (#30091)
Describe your changes:
Fixes the four failing suites in the nightly Java Integration Tests (External Cluster) workflow, which runs the search/UI integration tests against an already-running cluster (no in-JVM server).
ServiceDeleteSearchCleanupScaleITNPE'd at index-name resolution because it used the in-JVMEntity.getSearchRepository(), which isnullin external mode. It now resolves indexes viaIndexAliasInspector.indexNameFor(Entity.TABLE / Entity.TABLE_COLUMN)(the external-safe passthrough every sibling test uses) and deletes the service through the UI's async endpoint (DELETE /databaseServices/async/{id}) instead of the blocking synchronous delete, which can exceed a proxied cluster's gateway timeout at 100k tables.SearchRelevancyPreviewITandSelectiveFieldReindexUIITasserted exact global hit counts (hasSize(4), filter-count== 1). On the shared cluster a concurrent run's table shares the sameRUN_IDngram prefix and fuzzy-matches the marker, inflating the count. They now assert the seeded entities are present (containsAll(ids)/firstResultByName), which still catches the real regression while ignoring foreign fuzzy hits.IncidentManagerPage.selectPageSize50now settle-and-retries the page-size dropdown, which the post-reindex list refetch can unmount mid-click (Ant panel collapse → "html intercepts pointer events").Not addressed here:
NoDuplicatesDuringReindexITis failing on a genuine product bug (reindex swaps the read alias to a staged index before_refreshing it), tracked separately.Type of change:
Tests:
Use cases covered
SearchRepository) of the search + UI integration suites, and shared-cluster isolation for the fuzzy-search assertions.Backend integration tests
ServiceDeleteSearchCleanupScaleIT,SearchRelevancyPreviewITPlaywright (UI) tests
SelectiveFieldReindexUIIT,IncidentManagerPage(page object)Manual testing performed
mvn -o -pl openmetadata-integration-tests test-compile— the four changed files compile (only pre-existing stale-local-~/.m2errors in unrelated files remain).mvn spotless:apply— clean, no formatting diff.UI screen recording / screenshots:
Not applicable — test-only changes.
Checklist:
🤖 Generated with Claude Code
Greptile Summary
This PR fixes external-cluster and shared-cluster integration test failures. The main changes are:
Confidence Score: 5/5
This looks safe to merge.
Important Files Changed
Reviews (2): Last reviewed commit: "Merge branch 'main' into fix/external-cl..." | Re-trigger Greptile
Context used (3)