Skip to content

Commit 4a659c0

Browse files
authored
Merge branch 'main' into main
Signed-off-by: Tommy Shao <[email protected]>
2 parents 736696c + e73ffdf commit 4a659c0

File tree

228 files changed

+5485
-5275
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

228 files changed

+5485
-5275
lines changed

.github/benchmark-configs.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,5 +239,22 @@
239239
"data_instance_config": "4vCPU, 32G Mem, 16G Heap"
240240
},
241241
"baseline_cluster_config": "x64-r5.xlarge-1-shard-0-replica-snapshot-baseline"
242+
},
243+
"id_15": {
244+
"description": "Search only test-procedure for big5, uses lucene-10 index snapshot to restore the data for OS-3.0.0",
245+
"supported_major_versions": ["3"],
246+
"cluster-benchmark-configs": {
247+
"SINGLE_NODE_CLUSTER": "true",
248+
"MIN_DISTRIBUTION": "true",
249+
"TEST_WORKLOAD": "big5",
250+
"WORKLOAD_PARAMS": "{\"snapshot_repo_name\":\"benchmark-workloads-repo-3x\",\"snapshot_bucket_name\":\"benchmark-workload-snapshots\",\"snapshot_region\":\"us-east-1\",\"snapshot_base_path\":\"workload-snapshots-3x\",\"snapshot_name\":\"big5_1_shard_single_client\"}",
251+
"CAPTURE_NODE_STAT": "true",
252+
"TEST_PROCEDURE": "restore-from-snapshot"
253+
},
254+
"cluster_configuration": {
255+
"size": "Single-Node",
256+
"data_instance_config": "4vCPU, 32G Mem, 16G Heap"
257+
},
258+
"baseline_cluster_config": "x64-r5.xlarge-1-shard-0-replica-snapshot-baseline"
242259
}
243260
}

.github/workflows/benchmark-pull-request.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ on:
44
types: [created]
55
jobs:
66
run-performance-benchmark-on-pull-request:
7-
if: ${{ (github.event.issue.pull_request) && (contains(github.event.comment.body, '"run-benchmark-test"')) }}
7+
if: |
8+
github.repository == 'opensearch-project/OpenSearch' &&
9+
github.event.issue.pull_request &&
10+
contains(github.event.comment.body, '"run-benchmark-test"')
811
runs-on: ubuntu-latest
912
permissions:
1013
id-token: write
@@ -111,7 +114,7 @@ jobs:
111114
uses: actions/github-script@v7
112115
with:
113116
github-token: ${{ secrets.GITHUB_TOKEN }}
114-
result-encoding: string
117+
result-encoding: json
115118
script: |
116119
// Get the collaborators - filtered to maintainer permissions
117120
const maintainersResponse = await github.request('GET /repos/{owner}/{repo}/collaborators', {
@@ -121,12 +124,12 @@ jobs:
121124
affiliation: 'all',
122125
per_page: 100
123126
});
124-
return maintainersResponse.data.map(item => item.login).join(', ');
127+
return maintainersResponse.data.map(item => item.login);
125128
- uses: trstringer/manual-approval@v1
126-
if: (!contains(steps.get_approvers.outputs.result, github.event.comment.user.login))
129+
if: ${{ !contains(fromJSON(steps.get_approvers.outputs.result), github.event.comment.user.login) }}
127130
with:
128131
secret: ${{ github.TOKEN }}
129-
approvers: ${{ steps.get_approvers.outputs.result }}
132+
approvers: ${{ join(fromJSON(steps.get_approvers.outputs.result), ', ') }}
130133
minimum-approvals: 1
131134
issue-title: 'Request to approve/deny benchmark run for PR #${{ env.PR_NUMBER }}'
132135
issue-body: "Please approve or deny the benchmark run for PR #${{ env.PR_NUMBER }}"

.github/workflows/dco.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

.github/workflows/links.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
- uses: actions/checkout@v4
1414
- name: lychee Link Checker
1515
id: lychee
16-
uses: lycheeverse/lychee-action@v2.1.0
16+
uses: lycheeverse/lychee-action@v2.2.0
1717
with:
1818
args: --accept=200,403,429 --exclude-mail **/*.html **/*.md **/*.txt **/*.json --exclude-file .lychee.excludes
1919
fail: true

CHANGELOG.md

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,52 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1818
- Support for keyword fields in star-tree index ([#16233](https://github.com/opensearch-project/OpenSearch/pull/16233))
1919
- Add a flag in QueryShardContext to differentiate inner hit query ([#16600](https://github.com/opensearch-project/OpenSearch/pull/16600))
2020
- Add vertical scaling and SoftReference for snapshot repository data cache ([#16489](https://github.com/opensearch-project/OpenSearch/pull/16489))
21+
- [Workload Management] Add Workload Management IT ([#16359](https://github.com/opensearch-project/OpenSearch/pull/16359))
2122
- Support prefix list for remote repository attributes([#16271](https://github.com/opensearch-project/OpenSearch/pull/16271))
2223
- Add new configuration setting `synonym_analyzer`, to the `synonym` and `synonym_graph` filters, enabling the specification of a custom analyzer for reading the synonym file ([#16488](https://github.com/opensearch-project/OpenSearch/pull/16488)).
2324
- Add stats for remote publication failure and move download failure stats to remote methods([#16682](https://github.com/opensearch-project/OpenSearch/pull/16682/))
25+
- Update script supports java.lang.String.sha1() and java.lang.String.sha256() methods ([#16923](https://github.com/opensearch-project/OpenSearch/pull/16923))
26+
- Added a precaution to handle extreme date values during sorting to prevent `arithmetic_exception: long overflow` ([#16812](https://github.com/opensearch-project/OpenSearch/pull/16812)).
27+
- Add search replica stats to segment replication stats API ([#16678](https://github.com/opensearch-project/OpenSearch/pull/16678))
28+
- Introduce a setting to disable download of full cluster state from remote on term mismatch([#16798](https://github.com/opensearch-project/OpenSearch/pull/16798/))
29+
- Added ability to retrieve value from DocValues in a flat_object filed([#16802](https://github.com/opensearch-project/OpenSearch/pull/16802))
30+
- Introduce framework for auxiliary transports and an experimental gRPC transport plugin ([#16534](https://github.com/opensearch-project/OpenSearch/pull/16534))
31+
- Changes to support IP field in star tree indexing([#16641](https://github.com/opensearch-project/OpenSearch/pull/16641/))
32+
- Support object fields in star-tree index([#16728](https://github.com/opensearch-project/OpenSearch/pull/16728/))
2433

2534
### Dependencies
2635
- Bump `com.google.cloud:google-cloud-core-http` from 2.23.0 to 2.47.0 ([#16504](https://github.com/opensearch-project/OpenSearch/pull/16504))
2736
- Bump `google-auth-library-oauth2-http` from 1.7.0 to 1.29.0 in /plugins/repository-gcs ([#16520](https://github.com/opensearch-project/OpenSearch/pull/16520))
28-
- Bump `com.azure:azure-storage-common` from 12.25.1 to 12.27.1 ([#16521](https://github.com/opensearch-project/OpenSearch/pull/16521))
37+
- Bump `com.azure:azure-storage-common` from 12.25.1 to 12.28.0 ([#16521](https://github.com/opensearch-project/OpenSearch/pull/16521), [#16808](https://github.com/opensearch-project/OpenSearch/pull/16808))
2938
- Bump `com.google.apis:google-api-services-compute` from v1-rev20240407-2.0.0 to v1-rev20241105-2.0.0 ([#16502](https://github.com/opensearch-project/OpenSearch/pull/16502), [#16548](https://github.com/opensearch-project/OpenSearch/pull/16548), [#16613](https://github.com/opensearch-project/OpenSearch/pull/16613))
3039
- Bump `com.azure:azure-storage-blob` from 12.23.0 to 12.28.1 ([#16501](https://github.com/opensearch-project/OpenSearch/pull/16501))
3140
- Bump `org.apache.hadoop:hadoop-minicluster` from 3.4.0 to 3.4.1 ([#16550](https://github.com/opensearch-project/OpenSearch/pull/16550))
32-
- Bump `org.apache.xmlbeans:xmlbeans` from 5.2.1 to 5.2.2 ([#16612](https://github.com/opensearch-project/OpenSearch/pull/16612))
33-
- Bump `com.nimbusds:nimbus-jose-jwt` from 9.41.1 to 9.46 ([#16611](https://github.com/opensearch-project/OpenSearch/pull/16611))
34-
- Bump `lycheeverse/lychee-action` from 2.0.2 to 2.1.0 ([#16610](https://github.com/opensearch-project/OpenSearch/pull/16610))
41+
- Bump `org.apache.xmlbeans:xmlbeans` from 5.2.1 to 5.3.0 ([#16612](https://github.com/opensearch-project/OpenSearch/pull/16612), [#16854](https://github.com/opensearch-project/OpenSearch/pull/16854))
42+
- Bump `com.nimbusds:nimbus-jose-jwt` from 9.41.1 to 9.47 ([#16611](https://github.com/opensearch-project/OpenSearch/pull/16611), [#16807](https://github.com/opensearch-project/OpenSearch/pull/16807))
43+
- Bump `lycheeverse/lychee-action` from 2.0.2 to 2.2.0 ([#16610](https://github.com/opensearch-project/OpenSearch/pull/16610), [#16897](https://github.com/opensearch-project/OpenSearch/pull/16897))
3544
- Bump `me.champeau.gradle.japicmp` from 0.4.4 to 0.4.5 ([#16614](https://github.com/opensearch-project/OpenSearch/pull/16614))
3645
- Bump `mockito` from 5.14.1 to 5.14.2, `objenesis` from 3.2 to 3.3 and `bytebuddy` from 1.15.4 to 1.15.10 ([#16655](https://github.com/opensearch-project/OpenSearch/pull/16655))
3746
- Bump `Netty` from 4.1.114.Final to 4.1.115.Final ([#16661](https://github.com/opensearch-project/OpenSearch/pull/16661))
3847
- Bump `org.xerial.snappy:snappy-java` from 1.1.10.6 to 1.1.10.7 ([#16665](https://github.com/opensearch-project/OpenSearch/pull/16665))
3948
- Bump `codecov/codecov-action` from 4 to 5 ([#16667](https://github.com/opensearch-project/OpenSearch/pull/16667))
40-
- Bump `org.apache.logging.log4j:log4j-core` from 2.24.1 to 2.24.2 ([#16718](https://github.com/opensearch-project/OpenSearch/pull/16718))
49+
- Bump `org.apache.logging.log4j:log4j-core` from 2.24.1 to 2.24.3 ([#16718](https://github.com/opensearch-project/OpenSearch/pull/16718), [#16858](https://github.com/opensearch-project/OpenSearch/pull/16858))
4150
- Bump `jackson` from 2.17.2 to 2.18.2 ([#16733](https://github.com/opensearch-project/OpenSearch/pull/16733))
42-
- Bump `ch.qos.logback:logback-classic` from 1.2.13 to 1.5.12 ([#16716](https://github.com/opensearch-project/OpenSearch/pull/16716))
51+
- Bump `ch.qos.logback:logback-classic` from 1.2.13 to 1.5.15 ([#16716](https://github.com/opensearch-project/OpenSearch/pull/16716), [#16898](https://github.com/opensearch-project/OpenSearch/pull/16898))
4352
- Bump `com.azure:azure-identity` from 1.13.2 to 1.14.2 ([#16778](https://github.com/opensearch-project/OpenSearch/pull/16778))
53+
- Bump Apache Lucene from 9.12.0 to 9.12.1 ([#16846](https://github.com/opensearch-project/OpenSearch/pull/16846))
54+
- Bump `com.gradle.develocity` from 3.18.2 to 3.19 ([#16855](https://github.com/opensearch-project/OpenSearch/pull/16855))
55+
- Bump `org.jline:jline` from 3.27.1 to 3.28.0 ([#16857](https://github.com/opensearch-project/OpenSearch/pull/16857))
56+
- Bump `com.azure:azure-core` from 1.51.0 to 1.54.1 ([#16856](https://github.com/opensearch-project/OpenSearch/pull/16856))
57+
- Bump `com.nimbusds:oauth2-oidc-sdk` from 11.19.1 to 11.20.1 ([#16895](https://github.com/opensearch-project/OpenSearch/pull/16895))
58+
- Bump `com.netflix.nebula.ospackage-base` from 11.10.0 to 11.10.1 ([#16896](https://github.com/opensearch-project/OpenSearch/pull/16896))
59+
- Bump `com.microsoft.azure:msal4j` from 1.17.2 to 1.18.0 ([#16918](https://github.com/opensearch-project/OpenSearch/pull/16918))
60+
- Bump `org.apache.commons:commons-text` from 1.12.0 to 1.13.0 ([#16919](https://github.com/opensearch-project/OpenSearch/pull/16919))
61+
- Bump `ch.qos.logback:logback-core` from 1.5.12 to 1.5.16 ([#16951](https://github.com/opensearch-project/OpenSearch/pull/16951))
4462

4563
### Changed
4664
- Indexed IP field supports `terms_query` with more than 1025 IP masks [#16391](https://github.com/opensearch-project/OpenSearch/pull/16391)
4765
- Make entries for dependencies from server/build.gradle to gradle version catalog ([#16707](https://github.com/opensearch-project/OpenSearch/pull/16707))
66+
- Allow extended plugins to be optional ([#16909](https://github.com/opensearch-project/OpenSearch/pull/16909))
4867

4968
### Deprecated
5069
- Performing update operation with default pipeline or final pipeline is deprecated ([#16712](https://github.com/opensearch-project/OpenSearch/pull/16712))
@@ -64,7 +83,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6483
- [Tiered Caching] Fix bug in cache stats API ([#16560](https://github.com/opensearch-project/OpenSearch/pull/16560))
6584
- Bound the size of cache in deprecation logger ([16702](https://github.com/opensearch-project/OpenSearch/issues/16702))
6685
- Ensure consistency of system flag on IndexMetadata after diff is applied ([#16644](https://github.com/opensearch-project/OpenSearch/pull/16644))
67-
- Fixing the bug to prevent updating the index.knn setting during restore snapshot(#)[]
86+
- Skip remote-repositories validations for node-joins when RepositoriesService is not in sync with cluster-state ([#16763](https://github.com/opensearch-project/OpenSearch/pull/16763))
87+
- Fix _list/shards API failing when closed indices are present ([#16606](https://github.com/opensearch-project/OpenSearch/pull/16606))
88+
- Fix remote shards balance ([#15335](https://github.com/opensearch-project/OpenSearch/pull/15335))
89+
- Fixing the bug to prevent updating the index.knn setting during restore snapshot(#16957)[https://github.com/opensearch-project/OpenSearch/pull/16957]
90+
6891

6992
### Security
7093

buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java

Lines changed: 60 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -105,16 +105,15 @@ public DockerAvailability getDockerAvailability() {
105105
Result lastResult = null;
106106
Version version = null;
107107
boolean isVersionHighEnough = false;
108-
boolean isComposeAvailable = false;
109-
boolean isComposeV2Available = false;
108+
DockerComposeAvailability dockerComposeAvailability = null;
110109

111110
// Check if the Docker binary exists
112111
final Optional<String> dockerBinary = getDockerPath();
113112
if (isExcludedOs() == false && dockerBinary.isPresent()) {
114113
dockerPath = dockerBinary.get();
115114

116115
// Since we use a multi-stage Docker build, check the Docker version meets minimum requirement
117-
lastResult = runCommand(dockerPath, "version", "--format", "{{.Server.Version}}");
116+
lastResult = runCommand(execOperations, dockerPath, "version", "--format", "{{.Server.Version}}");
118117

119118
if (lastResult.isSuccess()) {
120119
version = Version.fromString(lastResult.stdout.trim(), Version.Mode.RELAXED);
@@ -123,15 +122,11 @@ public DockerAvailability getDockerAvailability() {
123122

124123
if (isVersionHighEnough) {
125124
// Check that we can execute a privileged command
126-
lastResult = runCommand(dockerPath, "images");
127-
125+
lastResult = runCommand(execOperations, dockerPath, "images");
128126
// If docker all checks out, see if docker-compose is available and working
129-
Optional<String> composePath = getDockerComposePath();
130-
if (lastResult.isSuccess() && composePath.isPresent()) {
131-
isComposeAvailable = runCommand(composePath.get(), "version").isSuccess();
127+
if (lastResult.isSuccess()) {
128+
dockerComposeAvailability = DockerComposeAvailability.detect(execOperations, dockerPath).orElse(null);
132129
}
133-
134-
isComposeV2Available = runCommand(dockerPath, "compose", "version").isSuccess();
135130
}
136131
}
137132
}
@@ -140,8 +135,7 @@ public DockerAvailability getDockerAvailability() {
140135

141136
this.dockerAvailability = new DockerAvailability(
142137
isAvailable,
143-
isComposeAvailable,
144-
isComposeV2Available,
138+
dockerComposeAvailability,
145139
isVersionHighEnough,
146140
dockerPath,
147141
version,
@@ -291,17 +285,6 @@ private Optional<String> getDockerPath() {
291285
return Arrays.asList(DOCKER_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
292286
}
293287

294-
/**
295-
* Searches the entries in {@link #DOCKER_COMPOSE_BINARIES} for the Docker Compose CLI. This method does
296-
* not check whether the installation appears usable, see {@link #getDockerAvailability()} instead.
297-
*
298-
* @return the path to a CLI, if available.
299-
*/
300-
private Optional<String> getDockerComposePath() {
301-
// Check if the Docker binary exists
302-
return Arrays.asList(DOCKER_COMPOSE_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
303-
}
304-
305288
private void throwDockerRequiredException(final String message) {
306289
throwDockerRequiredException(message, null);
307290
}
@@ -321,7 +304,7 @@ private void throwDockerRequiredException(final String message, Exception e) {
321304
* while running the command, or the process was killed after reaching the 10s timeout,
322305
* then the exit code will be -1.
323306
*/
324-
private Result runCommand(String... args) {
307+
private static Result runCommand(ExecOperations execOperations, String... args) {
325308
if (args.length == 0) {
326309
throw new IllegalArgumentException("Cannot execute with no command");
327310
}
@@ -356,14 +339,9 @@ public static class DockerAvailability {
356339
public final boolean isAvailable;
357340

358341
/**
359-
* True if docker-compose is available.
342+
* Non-null if docker-compose v1 or v2 is available.
360343
*/
361-
public final boolean isComposeAvailable;
362-
363-
/**
364-
* True if docker compose is available.
365-
*/
366-
public final boolean isComposeV2Available;
344+
public final DockerComposeAvailability dockerComposeAvailability;
367345

368346
/**
369347
* True if the installed Docker version is &gt;= 17.05
@@ -387,23 +365,70 @@ public static class DockerAvailability {
387365

388366
DockerAvailability(
389367
boolean isAvailable,
390-
boolean isComposeAvailable,
391-
boolean isComposeV2Available,
368+
DockerComposeAvailability dockerComposeAvailability,
392369
boolean isVersionHighEnough,
393370
String path,
394371
Version version,
395372
Result lastCommand
396373
) {
397374
this.isAvailable = isAvailable;
398-
this.isComposeAvailable = isComposeAvailable;
399-
this.isComposeV2Available = isComposeV2Available;
375+
this.dockerComposeAvailability = dockerComposeAvailability;
400376
this.isVersionHighEnough = isVersionHighEnough;
401377
this.path = path;
402378
this.version = version;
403379
this.lastCommand = lastCommand;
404380
}
381+
382+
public boolean isDockerComposeAvailable() {
383+
return dockerComposeAvailability != null;
384+
}
385+
}
386+
387+
/**
388+
* Marker interface for Docker Compose availability
389+
*/
390+
private interface DockerComposeAvailability {
391+
/**
392+
* Detects Docker Compose V1/V2 availability
393+
*/
394+
private static Optional<DockerComposeAvailability> detect(ExecOperations execOperations, String dockerPath) {
395+
Optional<String> composePath = getDockerComposePath();
396+
if (composePath.isPresent()) {
397+
if (runCommand(execOperations, composePath.get(), "version").isSuccess()) {
398+
return Optional.of(new DockerComposeV1Availability());
399+
}
400+
}
401+
402+
if (runCommand(execOperations, dockerPath, "compose", "version").isSuccess()) {
403+
return Optional.of(new DockerComposeV2Availability());
404+
}
405+
406+
return Optional.empty();
407+
}
408+
409+
/**
410+
* Searches the entries in {@link #DOCKER_COMPOSE_BINARIES} for the Docker Compose CLI. This method does
411+
* not check whether the installation appears usable, see {@link #getDockerAvailability()} instead.
412+
*
413+
* @return the path to a CLI, if available.
414+
*/
415+
private static Optional<String> getDockerComposePath() {
416+
// Check if the Docker binary exists
417+
return Arrays.asList(DOCKER_COMPOSE_BINARIES).stream().filter(path -> new File(path).exists()).findFirst();
418+
}
419+
405420
}
406421

422+
/**
423+
* Docker Compose V1 availability
424+
*/
425+
public static class DockerComposeV1Availability implements DockerComposeAvailability {}
426+
427+
/**
428+
* Docker Compose V2 availability
429+
*/
430+
public static class DockerComposeV2Availability implements DockerComposeAvailability {}
431+
407432
/**
408433
* This class models the result of running a command. It captures the exit code, standard output and standard error.
409434
*/

0 commit comments

Comments
 (0)