You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
QA sub-epic for the ES → OpenSearch migration pipeline under #34164. Covers end-to-end validation of the dual-write pipeline across Phases 0–3, plus acceptance criteria for PR #35632 (startup hardening), PR #35735 (TLS/HTTPS connectivity fix), and PR #35609 (vendor-neutral SearchAPI — Phase 2/3 reads now testable).
Index lifecycle operations (activate, deactivate, delete, reindex) — including ES-only vs OS-only name variants
Content Type and contentlet create/delete sync between ES and OS shadow index
Multi-node cluster startup consistency in Phase 1
Invalid OS_ENDPOINTS graceful degradation
REST API security: DELETE /v1/esindex requires admin authentication
Complex query equivalence between Kibana and OpenSearch Dashboards
DB Validation Queries
-- All index rowsSELECT*FROM indicies ORDER BY index_name;
-- OS rows only (os:: prefix = DB artifact, never visible to callers)SELECT*FROM indicies WHERE index_name LIKE'os::%';
-- Count per providerSELECT CASE WHEN index_name LIKE'os::%' THEN 'OS' ELSE 'ES' END AS provider, COUNT(*) FROM indicies GROUP BY1;
-- Expected Phase 0: 2 rows (ES only). Expected Phase 1 fresh: 4 rows (2 ES + 2 OS).
Description
QA sub-epic for the ES → OpenSearch migration pipeline under #34164. Covers end-to-end validation of the dual-write pipeline across Phases 0–3, plus acceptance criteria for PR #35632 (startup hardening), PR #35735 (TLS/HTTPS connectivity fix), and PR #35609 (vendor-neutral SearchAPI — Phase 2/3 reads now testable).
Parent epic: #34164 — Migrate Mapping Layer classes
Fix PRs:
haltMigration(), phase-aware index init, thread-safe formatterOS_TLS_CERT_REQUIREDproperty addedSearchAPIand phase-aware router: Phase 2/3 read path now migratedTest plans:
docs/backend/OPENSEARCH_MIGRATION_TEST_PLAN.md— base scenarios A–L, F (Phases 0–3, TC-001–TC-035)Environment Setup
# Start migration stack (ES 7.10 + Kibana + OpenSearch 3.x + Dashboards) docker compose -f docker/docker-compose-examples/os-migration/docker-compose.yml up -dMigration Phase Reference
Scope
haltMigration()auto-resets phase to 0 when OS is unreachable or has the wrong version at startuphasEmptyIndices()is phase-aware — empty OS index in Phase 1 does not trigger a false ES reindexthreadSafeTimestampFormatterprevents corrupted index names under concurrent requestsOS_TLS_CERT_REQUIRED=falsedefault; strict cert validation opt-insearch()/searchRaw()route toOSSearchAPIImpl; ES fallback on OS failureSearchAPIImplrouting correctness per phase (0→ES, 1→ES, 2→OS, 3→OS)ContentSearchResults<T>,ContentSearchResponse,AggregationBucketOS_ENDPOINTSgraceful degradationDELETE /v1/esindexrequires admin authenticationDB Validation Queries
Child Tasks
PR #35632 Acceptance & Startup Hardening
DOT_OS_ENDPOINTSValues (TC-006–TC-008)Cluster & Infrastructure
Content Lifecycle Sync
Index Lifecycle
Security & Query Validation
SearchAPI Query Layer Migration (PR #35609 — previously blocked)
TLS / HTTPS Connectivity (PR #35735)
PKIXerror whenOS_TLS_CERT_REQUIREDis not set (defaultfalse)certRequired=falseconfirming the fix is activeOS_TLS_CERT_REQUIRED=truerejects untrusted certs as expectedAcceptance Criteria
SearchAPIImpl→ OS (G9)SearchAPIImplrouting correctness confirmed for all 4 phases (G10)match_phrase_prefixdivergence (TC-023) filed as a separate bugAdditional Context
Depends on: #34164
Fix PRs: #35632, #35735, #35609