From 553bfd591af362d5465a75acb00a7ffcfbbfe27b Mon Sep 17 00:00:00 2001 From: Ajaykumar Movva Date: Thu, 27 Nov 2025 12:14:36 +0530 Subject: [PATCH] Ignoring Recovery ratelimiter for the warm indexes while download Signed-off-by: Ajaykumar Movva --- .../RemoteSegmentStoreDirectoryFactory.java | 20 ++++++++++++++++--- .../blobstore/BlobStoreRepository.java | 9 +++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java b/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java index 4c4e0d141a2cc..53e8566ca8c90 100644 --- a/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java +++ b/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java @@ -68,14 +68,14 @@ public Directory newFSDirectory(Path location, LockFactory lockFactory, IndexSet public Directory newDirectory(IndexSettings indexSettings, ShardPath path) throws IOException { String repositoryName = indexSettings.getRemoteStoreRepository(); String indexUUID = indexSettings.getIndex().getUUID(); - return newDirectory( repositoryName, indexUUID, path.getShardId(), indexSettings.getRemoteStorePathStrategy(), null, - RemoteStoreUtils.isServerSideEncryptionEnabledIndex(indexSettings.getIndexMetadata()) + RemoteStoreUtils.isServerSideEncryptionEnabledIndex(indexSettings.getIndexMetadata()), + indexSettings.isWarmIndex() ); } @@ -101,6 +101,18 @@ public Directory newDirectory( RemoteStorePathStrategy pathStrategy, String indexFixedPrefix, boolean isServerSideEncryptionEnabled + ) throws IOException { + return newDirectory(repositoryName, indexUUID, shardId, pathStrategy, indexFixedPrefix, isServerSideEncryptionEnabled, false); + } + + public Directory newDirectory( + String repositoryName, + String indexUUID, + ShardId shardId, + RemoteStorePathStrategy pathStrategy, + String indexFixedPrefix, + boolean isServerSideEncryptionEnabled, + boolean isWarmIndex ) throws IOException { assert Objects.nonNull(pathStrategy); // We should be not calling close for repository. @@ -128,7 +140,9 @@ public Directory newDirectory( blobStoreRepository.blobStore(isServerSideEncryptionEnabled).blobContainer(dataPath), blobStoreRepository::maybeRateLimitRemoteUploadTransfers, blobStoreRepository::maybeRateLimitLowPriorityRemoteUploadTransfers, - blobStoreRepository::maybeRateLimitRemoteDownloadTransfers, + isWarmIndex + ? blobStoreRepository::maybeRateLimitRemoteDownloadTransfersForWarm + : blobStoreRepository::maybeRateLimitRemoteDownloadTransfers, blobStoreRepository::maybeRateLimitLowPriorityDownloadTransfers, pendingDownloadMergedSegments ); diff --git a/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java b/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java index fa2c9c247439a..7fc622619e9d6 100644 --- a/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java +++ b/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java @@ -4426,6 +4426,15 @@ public InputStream maybeRateLimitRemoteDownloadTransfers(InputStream inputStream ); } + public InputStream maybeRateLimitRemoteDownloadTransfersForWarm(InputStream inputStream) { + return maybeRateLimit( + inputStream, + () -> remoteDownloadRateLimiter, + remoteDownloadRateLimitingTimeInNanos, + BlobStoreTransferContext.REMOTE_DOWNLOAD + ); + } + public InputStream maybeRateLimitLowPriorityDownloadTransfers(InputStream inputStream) { return maybeRateLimit( maybeRateLimit(