Conversation
🔍 CI failure analysis for 016ac85: Multiple CI failures across 11 jobs: 2 infrastructure, 3 Playwright with flaky tests, 2 Python with timing issues, 4 Maven/Test Report jobs with 3 different test failures - all unrelated to backend search index PR changes.IssueMultiple CI jobs failed with different types of failures:
Root CauseIntegration TestsGitHub Actions runner disk space exhaustion: CI runners ran out of disk space. Playwright Tests - 3 Shards
Python Tests - Identical Across Both Versions
Maven PostgreSQL CI + Test Report2 test failures in FeedResourceTest (7919 tests run, 99.97% pass rate):
Analysis: Feed/Thread resource tests with count mismatches - tests Feeds API functionality unrelated to search index management. Maven SonarCloud CI + Test Report1 test failure in GlossaryTermResourceTest (7919 tests run, 99.99% pass rate):
Analysis: Glossary Term workflow test verifying state transitions during approval. Failure suggests timing issues with workflow task resolution or async state updates. Glossary term workflow functionality is completely unrelated to search index alias management. DetailsRelationship to PR Changes: This PR modifies
Overall CI Status
Code Review 👍 Approved with suggestions 0 resolved / 1 findingsCorrect fix for the alias name conflict bug during index recreation. One minor suggestion about the brief downtime window and error handling around the new deletion step. 💡 Edge Case: Brief search downtime window during canonical index deletion📄 openmetadata-service/src/main/java/org/openmetadata/service/search/DefaultRecreateHandler.java:91 Between This is likely an acceptable tradeoff (the alternative is a complete alias swap failure), but the code comment above ("zero-downtime") should be updated to reflect the reality, e.g.: // Canonical index must be removed before it can be used as an alias name.
// Note: This creates a brief window where the canonical name is unavailable.Also, consider wrapping the deletion in its own try-catch so that a failure here still allows falling back to the existing behavior (even if the alias swap will likely fail too): if (oldIndicesToDelete.contains(canonicalIndex)) {
if (searchClient.indexExists(canonicalIndex)) {
try {
searchClient.deleteIndexWithBackoff(canonicalIndex);
oldIndicesToDelete.remove(canonicalIndex);
LOG.info("Cleaned up old index '{}' for entity '{}'.", canonicalIndex, entityType);
} catch (Exception ex) {
LOG.warn("Failed to clean up canonical index '{}' before alias swap for entity '{}'.", canonicalIndex, entityType, ex);
}
}
}Tip Comment OptionsAuto-apply is off → Gitar will not commit updates to this branch. Comment with these commands to change:
Was this helpful? React with 👍 / 👎 | Gitar |
Describe your changes:
Fixes
I worked on ... because ...
Type of change:
Checklist:
Fixes <issue-number>: <short explanation>Summary by Gitar
DefaultRecreateHandlertable_search_index) must be removed as physical indices before being attached as aliases to timestamped indicesfinalizeReindex()andpromoteEntityIndex()methods to ensure consistent behavior during batch and single-entity index recreation