Skip to content

Commit cacc26d

Browse files
committed
Merge remote-tracking branch 'upstream/main' into 13302
Signed-off-by: Ashish Singh <ssashish@amazon.com>
2 parents bd3ab77 + a69cd08 commit cacc26d

28 files changed

Lines changed: 2033 additions & 123 deletions

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2525
- [Streaming Indexing] Ensure support of the new transport by security plugin ([#13174](https://github.com/opensearch-project/OpenSearch/pull/13174))
2626
- Add cluster setting to dynamically configure the buckets for filter rewrite optimization. ([#13179](https://github.com/opensearch-project/OpenSearch/pull/13179))
2727
- [Remote Store] Add capability of doing refresh as determined by the translog ([#12992](https://github.com/opensearch-project/OpenSearch/pull/12992))
28+
- Batch mode for async fetching shard information in GatewayAllocator for unassigned shards ([#8746](https://github.com/opensearch-project/OpenSearch/pull/8746))
2829
- [Remote Store] Add settings for remote path type and hash algorithm ([#13225](https://github.com/opensearch-project/OpenSearch/pull/13225))
2930
- [Remote Store] Upload remote paths during remote enabled index creation ([#13386](https://github.com/opensearch-project/OpenSearch/pull/13386))
3031

@@ -48,6 +49,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
4849
- Bump `com.github.spullara.mustache.java:compiler` from 0.9.10 to 0.9.11 ([#13329](https://github.com/opensearch-project/OpenSearch/pull/13329))
4950
- Bump `jakarta.enterprise:jakarta.enterprise.cdi-api` from 4.0.1 to 4.1.0 ([#13328](https://github.com/opensearch-project/OpenSearch/pull/13328))
5051
- Bump `com.google.api.grpc:proto-google-iam-v1` from 0.12.0 to 1.33.0 ([#13332](https://github.com/opensearch-project/OpenSearch/pull/13332))
52+
- OpenJDK Update (April 2024 Patch releases), update to Eclipse Temurin 21.0.3+9 ([#13389](https://github.com/opensearch-project/OpenSearch/pull/13389))
53+
- Bump `com.squareup.okio:okio` from 3.8.0 to 3.9.0 ([#12997](https://github.com/opensearch-project/OpenSearch/pull/12997))
5154

5255
### Changed
5356
- [BWC and API enforcement] Enforcing the presence of API annotations at build time ([#12872](https://github.com/opensearch-project/OpenSearch/pull/12872))

buildSrc/src/main/java/org/opensearch/gradle/test/DistroTestPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@
7777
import java.util.stream.Stream;
7878

7979
public class DistroTestPlugin implements Plugin<Project> {
80-
private static final String SYSTEM_JDK_VERSION = "21.0.2+13";
80+
private static final String SYSTEM_JDK_VERSION = "21.0.3+9";
8181
private static final String SYSTEM_JDK_VENDOR = "adoptium";
82-
private static final String GRADLE_JDK_VERSION = "21.0.2+13";
82+
private static final String GRADLE_JDK_VERSION = "21.0.3+9";
8383
private static final String GRADLE_JDK_VENDOR = "adoptium";
8484

8585
// all distributions used by distro tests. this is temporary until tests are per distribution

buildSrc/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ opensearch = 3.0.0
22
lucene = 9.11.0-snapshot-fb97840
33

44
bundled_jdk_vendor = adoptium
5-
bundled_jdk = 21.0.2+13
5+
bundled_jdk = 21.0.3+9
66

77
# optional dependencies
88
spatial4j = 0.7

server/src/internalClusterTest/java/org/opensearch/cluster/metadata/ClusterIndexRefreshIntervalIT.java

Lines changed: 148 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -235,33 +235,19 @@ public void testDefaultRefreshIntervalWithUpdateClusterAndIndexSettings() throws
235235
}
236236

237237
public void testRefreshIntervalDisabled() throws ExecutionException, InterruptedException {
238-
TimeValue clusterMinimumRefreshInterval = client().settings()
239-
.getAsTime(IndicesService.CLUSTER_MINIMUM_INDEX_REFRESH_INTERVAL_SETTING.getKey(), TimeValue.MINUS_ONE);
240-
boolean createIndexSuccess = clusterMinimumRefreshInterval.equals(TimeValue.MINUS_ONE);
241238
String clusterManagerName = internalCluster().getClusterManagerName();
242239
List<String> dataNodes = new ArrayList<>(internalCluster().getDataNodeNames());
243240
Settings settings = Settings.builder()
244241
.put(indexSettings())
245242
.put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), IndexSettings.MINIMUM_REFRESH_INTERVAL)
246243
.build();
247-
if (createIndexSuccess) {
248-
createIndex(INDEX_NAME, settings);
249-
ensureYellowAndNoInitializingShards(INDEX_NAME);
250-
ensureGreen(INDEX_NAME);
251-
GetIndexResponse getIndexResponse = client(clusterManagerName).admin().indices().getIndex(new GetIndexRequest()).get();
252-
IndicesService indicesService = internalCluster().getInstance(IndicesService.class, randomFrom(dataNodes));
253-
String uuid = getIndexResponse.getSettings().get(INDEX_NAME).get(IndexMetadata.SETTING_INDEX_UUID);
254-
IndexService indexService = indicesService.indexService(new Index(INDEX_NAME, uuid));
255-
assertEquals(IndexSettings.MINIMUM_REFRESH_INTERVAL, indexService.getRefreshTaskInterval());
256-
} else {
257-
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> createIndex(INDEX_NAME, settings));
258-
assertEquals(
259-
"invalid index.refresh_interval [-1]: cannot be smaller than cluster.minimum.index.refresh_interval ["
260-
+ getMinRefreshIntervalForRefreshDisabled()
261-
+ "]",
262-
exception.getMessage()
263-
);
264-
}
244+
createIndex(INDEX_NAME, settings);
245+
ensureGreen(INDEX_NAME);
246+
GetIndexResponse getIndexResponse = client(clusterManagerName).admin().indices().getIndex(new GetIndexRequest()).get();
247+
IndicesService indicesService = internalCluster().getInstance(IndicesService.class, randomFrom(dataNodes));
248+
String uuid = getIndexResponse.getSettings().get(INDEX_NAME).get(IndexMetadata.SETTING_INDEX_UUID);
249+
IndexService indexService = indicesService.indexService(new Index(INDEX_NAME, uuid));
250+
assertEquals(IndexSettings.MINIMUM_REFRESH_INTERVAL, indexService.getRefreshTaskInterval());
265251
}
266252

267253
protected TimeValue getMinRefreshIntervalForRefreshDisabled() {
@@ -366,6 +352,147 @@ public void testClusterMinimumChangeOnIndexWithCustomRefreshInterval() throws Ex
366352
assertEquals(customRefreshInterval, indexService.getRefreshTaskInterval());
367353
}
368354

355+
public void testClusterMinimumRefreshIntervalOfMinusOneFails() {
356+
// This test checks that we can not set cluster minimum refresh interval as -1 (or -1ms).
357+
String clusterManagerName = internalCluster().getClusterManagerName();
358+
String refreshInterval = randomFrom("-1", "-1ms");
359+
IllegalArgumentException ex = assertThrows(
360+
IllegalArgumentException.class,
361+
() -> client(clusterManagerName).admin()
362+
.cluster()
363+
.prepareUpdateSettings()
364+
.setTransientSettings(Settings.builder().put(CLUSTER_MINIMUM_INDEX_REFRESH_INTERVAL_SETTING.getKey(), refreshInterval))
365+
.get()
366+
);
367+
assertEquals(
368+
"failed to parse value [" + refreshInterval + "] for setting [cluster.minimum.index.refresh_interval], must be >= [0ms]",
369+
ex.getMessage()
370+
);
371+
}
372+
373+
public void testClusterMinimumRefreshIntervalOfZero() {
374+
// This test checks that we can set the cluster minimum refresh interval as 0.
375+
String clusterManagerName = internalCluster().getClusterManagerName();
376+
client(clusterManagerName).admin()
377+
.cluster()
378+
.prepareUpdateSettings()
379+
.setTransientSettings(Settings.builder().put(CLUSTER_MINIMUM_INDEX_REFRESH_INTERVAL_SETTING.getKey(), "0"))
380+
.get();
381+
}
382+
383+
public void testDefaultRefreshIntervalOfMinusOneIrrespectiveOfMinimum() {
384+
// This test checks that we are able to set the cluster default refresh interval to one regardless of what the
385+
// minimum is set to. -1 corresponds to no period background refreshes.
386+
String clusterManagerName = internalCluster().getClusterManagerName();
387+
client(clusterManagerName).admin()
388+
.cluster()
389+
.prepareUpdateSettings()
390+
.setTransientSettings(
391+
Settings.builder()
392+
.put(CLUSTER_MINIMUM_INDEX_REFRESH_INTERVAL_SETTING.getKey(), randomFrom("0", "1ms", "1s", "10s"))
393+
.put(CLUSTER_DEFAULT_INDEX_REFRESH_INTERVAL_SETTING.getKey(), randomFrom("-1", "-1ms"))
394+
)
395+
.get();
396+
}
397+
398+
public void testCreateIndexWithMinusOneRefreshInterval() throws ExecutionException, InterruptedException {
399+
// This test checks that we are able to create index with -1 refresh interval using index settings and default interval both.
400+
String clusterManagerName = internalCluster().getClusterManagerName();
401+
client(clusterManagerName).admin()
402+
.cluster()
403+
.prepareUpdateSettings()
404+
.setTransientSettings(
405+
Settings.builder()
406+
.put(CLUSTER_MINIMUM_INDEX_REFRESH_INTERVAL_SETTING.getKey(), "10s")
407+
.put(CLUSTER_DEFAULT_INDEX_REFRESH_INTERVAL_SETTING.getKey(), "10s")
408+
)
409+
.get();
410+
411+
Settings indexSettings = Settings.builder()
412+
.put(indexSettings())
413+
.put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), randomFrom("-1", "-1ms"))
414+
.build();
415+
createIndex(INDEX_NAME, indexSettings);
416+
ensureGreen(INDEX_NAME);
417+
418+
IndexService indexService = getIndexServiceFromRandomDataNode(INDEX_NAME);
419+
assertEquals(-1, indexService.getRefreshTaskInterval().millis());
420+
421+
client(clusterManagerName).admin()
422+
.cluster()
423+
.prepareUpdateSettings()
424+
.setTransientSettings(Settings.builder().put(CLUSTER_DEFAULT_INDEX_REFRESH_INTERVAL_SETTING.getKey(), randomFrom("-1", "-1ms")))
425+
.get();
426+
createIndex(OTHER_INDEX_NAME);
427+
ensureGreen(OTHER_INDEX_NAME);
428+
indexService = getIndexServiceFromRandomDataNode(OTHER_INDEX_NAME);
429+
assertEquals(-1, indexService.getRefreshTaskInterval().millis());
430+
}
431+
432+
public void testUpdateIndexWithMinusOneRefreshInterval() throws ExecutionException, InterruptedException {
433+
// This test checks that we are able to update index with -1 refresh interval using index settings and default interval both.
434+
String clusterManagerName = internalCluster().getClusterManagerName();
435+
client(clusterManagerName).admin()
436+
.cluster()
437+
.prepareUpdateSettings()
438+
.setTransientSettings(
439+
Settings.builder()
440+
.put(CLUSTER_MINIMUM_INDEX_REFRESH_INTERVAL_SETTING.getKey(), "10s")
441+
.put(CLUSTER_DEFAULT_INDEX_REFRESH_INTERVAL_SETTING.getKey(), "10s")
442+
)
443+
.get();
444+
445+
createIndex(INDEX_NAME);
446+
ensureGreen(INDEX_NAME);
447+
IndexService indexService = getIndexServiceFromRandomDataNode(INDEX_NAME);
448+
assertEquals(10, indexService.getRefreshTaskInterval().seconds());
449+
450+
client(clusterManagerName).admin()
451+
.indices()
452+
.updateSettings(
453+
new UpdateSettingsRequest(INDEX_NAME).settings(
454+
Settings.builder().put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), randomFrom("-1", "-1ms"))
455+
)
456+
)
457+
.actionGet();
458+
assertEquals(-1, indexService.getRefreshTaskInterval().millis());
459+
460+
client(clusterManagerName).admin()
461+
.indices()
462+
.updateSettings(
463+
new UpdateSettingsRequest(INDEX_NAME).settings(
464+
Settings.builder().put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "100s")
465+
)
466+
)
467+
.actionGet();
468+
assertEquals(100, indexService.getRefreshTaskInterval().seconds());
469+
470+
client(clusterManagerName).admin()
471+
.cluster()
472+
.prepareUpdateSettings()
473+
.setTransientSettings(Settings.builder().put(CLUSTER_DEFAULT_INDEX_REFRESH_INTERVAL_SETTING.getKey(), randomFrom("-1", "-1ms")))
474+
.get();
475+
476+
client(clusterManagerName).admin()
477+
.indices()
478+
.updateSettings(
479+
new UpdateSettingsRequest(INDEX_NAME).settings(
480+
Settings.builder().putNull(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey())
481+
)
482+
)
483+
.actionGet();
484+
assertEquals(-1, indexService.getRefreshTaskInterval().millis());
485+
}
486+
487+
private IndexService getIndexServiceFromRandomDataNode(String indexName) throws ExecutionException, InterruptedException {
488+
String clusterManagerName = internalCluster().getClusterManagerName();
489+
List<String> dataNodes = new ArrayList<>(internalCluster().getDataNodeNames());
490+
GetIndexResponse getIndexResponse = client(clusterManagerName).admin().indices().getIndex(new GetIndexRequest()).get();
491+
IndicesService indicesService = internalCluster().getInstance(IndicesService.class, randomFrom(dataNodes));
492+
String uuid = getIndexResponse.getSettings().get(indexName).get(IndexMetadata.SETTING_INDEX_UUID);
493+
return indicesService.indexService(new Index(indexName, uuid));
494+
}
495+
369496
protected TimeValue getDefaultRefreshInterval() {
370497
return IndexSettings.DEFAULT_REFRESH_INTERVAL;
371498
}

server/src/internalClusterTest/java/org/opensearch/discovery/ClusterManagerDisruptionIT.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,15 @@ public void testIsolateClusterManagerAndVerifyClusterStateConsensus() throws Exc
198198
+ nodeState
199199
);
200200
}
201-
202201
}
203-
ClusterStateStats clusterStateStats = internalCluster().clusterService().getClusterManagerService().getClusterStateStats();
204-
assertTrue(clusterStateStats.getUpdateFailed() > 0);
202+
205203
});
204+
205+
ClusterStateStats clusterStateStats = internalCluster().clusterService(isolatedNode)
206+
.getClusterManagerService()
207+
.getClusterStateStats();
208+
assertTrue(clusterStateStats.getUpdateFailed() > 0);
209+
206210
}
207211

208212
/**

0 commit comments

Comments
 (0)