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());