diff --git a/server/src/main/java/org/opensearch/action/bulk/TransportShardBulkAction.java b/server/src/main/java/org/opensearch/action/bulk/TransportShardBulkAction.java index e9e9cb7f37532..e84d36702d31c 100644 --- a/server/src/main/java/org/opensearch/action/bulk/TransportShardBulkAction.java +++ b/server/src/main/java/org/opensearch/action/bulk/TransportShardBulkAction.java @@ -567,7 +567,7 @@ private void finishRequest() { @Override protected Releasable checkPrimaryLimits(BulkShardRequest request, boolean rerouteWasLocal, boolean localRerouteInitiatedByNodeClient) { - if (force(request) == false) { + if (force(request) == false && isWarmNode == false) { if (segmentReplicationPressureService.isSegmentReplicationBackpressureEnabled()) { segmentReplicationPressureService.isSegrepLimitBreached(request.shardId()); } diff --git a/server/src/main/java/org/opensearch/action/support/replication/TransportReplicationAction.java b/server/src/main/java/org/opensearch/action/support/replication/TransportReplicationAction.java index f6fe930e5ce20..36a7345141b11 100644 --- a/server/src/main/java/org/opensearch/action/support/replication/TransportReplicationAction.java +++ b/server/src/main/java/org/opensearch/action/support/replication/TransportReplicationAction.java @@ -100,6 +100,8 @@ import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; +import static org.opensearch.cluster.node.DiscoveryNode.isWarmNode; + /** * Base class for requests that should be executed on a primary copy followed by replica copies. * Subclasses can resolve the target shard and provide implementation for primary and replica operations. @@ -151,6 +153,7 @@ public abstract class TransportReplicationAction< protected final TransportRequestOptions transportOptions; protected final String executor; protected final boolean forceExecutionOnPrimary; + protected final boolean isWarmNode; // package private for testing protected final String transportReplicaAction; @@ -253,6 +256,7 @@ protected TransportReplicationAction( this.initialRetryBackoffBound = REPLICATION_INITIAL_RETRY_BACKOFF_BOUND.get(settings); this.retryTimeout = getRetryTimeoutSetting().get(settings); this.forceExecutionOnPrimary = forceExecutionOnPrimary; + this.isWarmNode = isWarmNode(settings); transportService.registerRequestHandler(actionName, ThreadPool.Names.SAME, requestReader, this::handleOperationRequest);