From e56abb80d5307188edc73d283337fa3f7e8fbe97 Mon Sep 17 00:00:00 2001 From: Mohit Yadav <105265192+mohityadav766@users.noreply.github.com> Date: Wed, 6 May 2026 18:50:49 +0530 Subject: [PATCH] Fix Entity Promotion issue (#27930) --- .../distributed/DistributedSearchIndexExecutor.java | 7 +++++++ .../service/search/DefaultRecreateHandler.java | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedSearchIndexExecutor.java b/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedSearchIndexExecutor.java index dc382fb0a26..427cc4ad462 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedSearchIndexExecutor.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/apps/bundles/searchIndex/distributed/DistributedSearchIndexExecutor.java @@ -1102,6 +1102,13 @@ public class DistributedSearchIndexExecutor { // Set up per-entity promotion callback if recreating indices if (recreateIndex && recreateContext != null) { this.recreateIndexHandler = Entity.getSearchRepository().createReindexHandler(); + // Wire job configuration so applyLiveServingSettings can revert bulk-build overrides + // (refresh=-1, replicas=0, async translog) before the per-entity alias swap. + if (recreateIndexHandler instanceof DefaultRecreateHandler defaultHandler + && currentJob != null + && currentJob.getJobConfiguration() != null) { + defaultHandler.withJobData(currentJob.getJobConfiguration()); + } entityTracker.setOnEntityComplete(this::promoteEntityIndex); LOG.info( "Per-entity promotion callback SET for job {} (recreateIndex={}, recreateContext entities={})", diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/DefaultRecreateHandler.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/DefaultRecreateHandler.java index 53fb62db5de..daba88d3374 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/DefaultRecreateHandler.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/DefaultRecreateHandler.java @@ -323,6 +323,12 @@ public class DefaultRecreateHandler implements RecreateIndexHandler { // Always clear staged-index routing on the way out — see the rationale in finalizeReindex. try { + // Restore live serving settings on the staged index before alias swap. The bulk-build + // overrides (refresh=-1, replicas=0, async translog) must NOT be the new live settings, + // or newly indexed docs are buffered indefinitely until a manual _refresh. + applyLiveServingSettings(searchClient, stagedIndex, entityType); + maybeForceMerge(searchClient, stagedIndex, entityType); + Set aliasesToAttach = getAliasesFromMapping(indexMapping, searchRepository.getClusterAlias());