Skip to content

Commit 2b17902

Browse files
authored
[Remote Store] Add check for byte lag in time lag calculation (#12565)
Signed-off-by: Ashish Singh <ssashish@amazon.com>
1 parent 8a22f28 commit 2b17902

File tree

3 files changed

+5
-1
lines changed

3 files changed

+5
-1
lines changed

server/src/main/java/org/opensearch/index/remote/RemoteSegmentTransferTracker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public long getRefreshSeqNoLag() {
260260
}
261261

262262
public long getTimeMsLag() {
263-
if (remoteRefreshTimeMs == localRefreshTimeMs) {
263+
if (remoteRefreshTimeMs == localRefreshTimeMs || bytesLag == 0) {
264264
return 0;
265265
}
266266
return currentTimeMsUsingSystemNanos() - remoteRefreshStartTimeMs;

server/src/test/java/org/opensearch/index/remote/RemoteSegmentTransferTrackerTests.java

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.io.IOException;
2323
import java.util.HashMap;
24+
import java.util.List;
2425
import java.util.Map;
2526

2627
import static org.opensearch.index.remote.RemoteSegmentTransferTracker.currentTimeMsUsingSystemNanos;
@@ -149,6 +150,7 @@ public void testComputeTimeLagOnUpdate() throws InterruptedException {
149150
Thread.sleep(1);
150151
transferTracker.updateLocalRefreshTimeMs(currentTimeMsUsingSystemNanos());
151152

153+
transferTracker.updateLatestLocalFileNameLengthMap(List.of("test"), k -> 1L);
152154
// Sleep for 100ms and then the lag should be within 100ms +/- 20ms
153155
Thread.sleep(100);
154156
assertTrue(Math.abs(transferTracker.getTimeMsLag() - 100) <= 20);

server/src/test/java/org/opensearch/index/remote/RemoteStorePressureServiceTests.java

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.opensearch.threadpool.ThreadPool;
2020

2121
import java.util.HashMap;
22+
import java.util.List;
2223
import java.util.Map;
2324
import java.util.concurrent.atomic.AtomicLong;
2425
import java.util.regex.Matcher;
@@ -100,6 +101,7 @@ public void testValidateSegmentUploadLag() throws InterruptedException {
100101
while (currentTimeMsUsingSystemNanos() - localRefreshTimeMs <= 20 * avg) {
101102
Thread.sleep((long) (4 * avg));
102103
}
104+
pressureTracker.updateLatestLocalFileNameLengthMap(List.of("test"), k -> 1L);
103105
Exception e = assertThrows(OpenSearchRejectedExecutionException.class, () -> pressureService.validateSegmentsUploadLag(shardId));
104106
String regex = "^rejected execution on primary shard:\\[index]\\[0] due to remote segments lagging behind "
105107
+ "local segments.time_lag:[0-9]{2,3} ms dynamic_time_lag_threshold:95\\.0 ms$";

0 commit comments

Comments
 (0)