diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9c26cda3..a3fd4b16 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,7 @@ jobs: java: - 11 - 17 + - 21 # Job name name: Build Asynchronous Search # This job runs on Linux. @@ -69,6 +70,7 @@ jobs: java: - 11 - 17 + - 21 # Job name name: Test Asynchronous Search with opensearchstaging docker # This job runs on Linux. @@ -115,16 +117,16 @@ jobs: if: env.imagePresent == 'true' run: | cd .. - docker run -p 9200:9200 -d -p 9600:9600 -e "discovery.type=single-node" opensearch-asynchronous-search:test + docker run -p 9200:9200 -d -p 9600:9600 -e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=myStrongPassword123!" -e "discovery.type=single-node" opensearch-asynchronous-search:test sleep 90 - name: Run Asynchronous Search Test if: env.imagePresent == 'true' run: | - security=`curl -XGET https://localhost:9200/_cat/plugins?v -u admin:admin --insecure |grep opensearch-security|wc -l` + security=`curl -XGET https://localhost:9200/_cat/plugins?v -u admin:myStrongPassword123! --insecure |grep opensearch-security|wc -l` if [ $security -gt 0 ] then echo "Security plugin is available" - ./gradlew integTest -Dtests.rest.cluster=localhost:9200 -Dtests.cluster=localhost:9200 -Dtests.clustername="docker-cluster" -Dhttps=true -Duser=admin -Dpassword=admin + ./gradlew integTest -Dtests.rest.cluster=localhost:9200 -Dtests.cluster=localhost:9200 -Dtests.clustername="docker-cluster" -Dhttps=true -Duser=admin -Dpassword=myStrongPassword123! else echo "Security plugin is NOT available" ./gradlew integTest -Dtests.rest.cluster=localhost:9200 -Dtests.cluster=localhost:9200 -Dtests.clustername="docker-cluster" diff --git a/.github/workflows/release-workflow.yml b/.github/workflows/release-workflow.yml index 848f345f..ae9d865a 100644 --- a/.github/workflows/release-workflow.yml +++ b/.github/workflows/release-workflow.yml @@ -13,7 +13,7 @@ jobs: build: strategy: matrix: - java: [11,17] + java: [11,17,21] # Job name name: Build Asynchronous Search with JDK ${{ matrix.java }} # This job runs on Linux diff --git a/MAINTAINERS.md b/MAINTAINERS.md index e4f4c9b4..4c4f8898 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -4,13 +4,13 @@ This document contains a list of maintainers in this repo. See [opensearch-proje ## Current Maintainers -| Maintainer | GitHub ID | Affiliation | -|-----------------|----------------------------------------------------------|-------------| -| Bharathwaj G | [bharath-techie](https://github.com/bharath-techie) | Amazon | -| Arpit Bandejiya | [Arpit-Bandejiya](https://github.com/Arpit-Bandejiya) | Amazon | -| Dhrubajyoti Das | [dhruv16dhr](https://github.com/dhruv16dhr) | Amazon | -| Pranit Kumar | [pranikum](https://github.com/pranikum) | Amazon | -| Bukhtawar Khan | [Bukhtawar](https://github.com/Bukhtawar) | Amazon | +| Maintainer | GitHub ID | Affiliation | +|-----------------|-------------------------------------------------------|-------------| +| Rishav Sagar | [RS146BIJAY](https://github.com/RS146BIJAY) | Amazon | +| Bharathwaj G | [bharath-techie](https://github.com/bharath-techie) | Amazon | +| Arpit Bandejiya | [Arpit-Bandejiya](https://github.com/Arpit-Bandejiya) | Amazon | +| Pranit Kumar | [pranikum](https://github.com/pranikum) | Amazon | +| Bukhtawar Khan | [Bukhtawar](https://github.com/Bukhtawar) | Amazon | ## Emeritus diff --git a/README.md b/README.md index 66d7bb47..933c27ff 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ The project in this package uses the [Gradle](https://docs.gradle.org/current/us 9. `./gradlew asynSearchCluster#rollingUpgradeClusterTask -Dtests.security.manager=false` launches a cluster with three nodes of bwc version of OpenSearch with async search plugin and tests backwards compatibility by performing rolling upgrade of all nodes with the current version of OpenSearch with async search plugin. 10. `./gradlew asynSearchCluster#fullRestartClusterTask -Dtests.security.manager=false` launches a cluster with three nodes of bwc version of OpenSearch with async search plugin and tests backwards compatibility by performing a full restart on the cluster upgrading all the nodes with the current version of OpenSearch with async search plugin. 11. `./gradlew bwcTestSuite -Dtests.security.manager=false` runs all the above bwc tests combined. -12. `./gradlew integTestRemote -Dtests.rest.cluster=localhost:9200 -Dtests.cluster=localhost:9200 -Dtests.clustername="docker-cluster" -Dhttps=true -Duser=admin -Dpassword=admin` launches integration tests against a local cluster and run tests with security +12. `./gradlew integTestRemote -Dtests.rest.cluster=localhost:9200 -Dtests.cluster=localhost:9200 -Dtests.clustername="docker-cluster" -Dhttps=true -Duser=admin -Dpassword=admin` launches integration tests against a local cluster and run tests with security`./gradlew integTestRemote -Dtests.rest.cluster=localhost:9200 -Dtests.cluster=localhost:9200 -Dtests.clustername="docker-cluster" -Dhttps=true -Duser=admin -Dpassword=` launches integration tests against a local cluster and run tests with security When launching a cluster using one of the above commands, logs are placed in `build/testclusters/integTest-0/logs`. Though the logs are teed to the console, in practices it's best to check the actual log file. diff --git a/build-tools/pkgbuild.gradle b/build-tools/pkgbuild.gradle index 11f22fa5..957e4100 100644 --- a/build-tools/pkgbuild.gradle +++ b/build-tools/pkgbuild.gradle @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -apply plugin: 'nebula.ospackage' +apply plugin: 'com.netflix.nebula.ospackage' // This is afterEvaluate because the bundlePlugin ZIP task is updated afterEvaluate and changes the ZIP name to match the plugin name afterEvaluate { @@ -45,9 +45,8 @@ afterEvaluate { task renameRpm(type: Copy) { from("$buildDir/distributions") into("$buildDir/distributions") - include archiveName - rename archiveName, "${packageName}-${version}.rpm" - doLast { delete file("$buildDir/distributions/$archiveName") } + rename "$archiveFileName", "${packageName}-${archiveVersion}.rpm" + doLast { delete file("$buildDir/distributions/$archiveFileName") } } } buildDeb { @@ -57,9 +56,8 @@ afterEvaluate { task renameDeb(type: Copy) { from("$buildDir/distributions") into("$buildDir/distributions") - include archiveName - rename archiveName, "${packageName}-${version}.deb" - doLast { delete file("$buildDir/distributions/$archiveName") } + rename "$archiveFileName", "${packageName}-${archiveVersion}.deb" + doLast { delete file("$buildDir/distributions/$archiveFileName") } } } } diff --git a/build-tools/plugin-coverage.gradle b/build-tools/plugin-coverage.gradle index a7ec20fa..20d59c2c 100644 --- a/build-tools/plugin-coverage.gradle +++ b/build-tools/plugin-coverage.gradle @@ -62,9 +62,9 @@ jacocoTestReport { sourceDirectories.from = "src/main/java" classDirectories.from = sourceSets.main.output reports { - html.enabled = true // human readable - csv.enabled = true - xml.enabled = true // for coverlay + html.required = true // human readable + csv.required = true + xml.required = true // for coverlay } } diff --git a/build.gradle b/build.gradle index 1103b6fd..3018878e 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { opensearch_group = "org.opensearch" isSnapshot = "true" == System.getProperty("build.snapshot", "true") opensearch_version = System.getProperty("opensearch.version", "3.0.0-SNAPSHOT") - opensearch_plugin_version = System.getProperty("bwc.version", "2.11.0.0") + opensearch_plugin_version = System.getProperty("bwc.version", "2.12.0.0") buildVersionQualifier = System.getProperty("build.version_qualifier", "") // 2.0.0-rc1-SNAPSHOT -> 2.0.0.0-rc1-SNAPSHOT version_tokens = opensearch_version.tokenize('-') @@ -34,7 +34,7 @@ buildscript { dependencies { classpath "${opensearch_group}.gradle:build-tools:${opensearch_version}" - classpath "org.jacoco:org.jacoco.agent:0.8.5" + classpath "org.jacoco:org.jacoco.agent:0.8.11" } } //****************************************************************************/ @@ -42,7 +42,7 @@ buildscript { //****************************************************************************/ plugins { - id 'nebula.ospackage' version "8.3.0" + id 'com.netflix.nebula.ospackage' version "11.6.0" id 'checkstyle' } @@ -81,8 +81,10 @@ ext { noticeFile = rootProject.file('NOTICE.txt') } -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 +java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 +} allprojects { group 'org.opensearch' @@ -134,7 +136,7 @@ dependencies { implementation "org.opensearch:common-utils:${common_utils_version}" configurations.all { resolutionStrategy { - force "com.google.guava:guava:32.0.1-jre" + force "com.google.guava:guava:32.1.1-jre" force "com.puppycrawl.tools:checkstyle:${project.checkstyle.toolVersion}" } } @@ -201,7 +203,7 @@ integTest { systemProperty 'buildDir', buildDir.path systemProperty "https", System.getProperty("https", securityEnabled.toString()) systemProperty "user", System.getProperty("user", "admin") - systemProperty "password", System.getProperty("password", "admin") + systemProperty "password", System.getProperty("password", "myStrongPassword123!") // this change is needed for >= 2.12 and should not be backported to < 2.12 // Tell the test JVM if the cluster JVM is running under a debugger so that tests can use longer timeouts for // requests. The 'doFirst' delays reading the debug setting on the cluster till execution time. doFirst { @@ -259,11 +261,11 @@ ext.getPluginResource = { download_to_folder, download_from_src -> } String baseName = "asynSearchCluster" -String bwcVersionShort = "2.11.0" +String bwcVersionShort = "2.12.0" String bwcVersion = bwcVersionShort + ".0" String bwcFilePath = "src/test/resources/org/opensearch/search/asynchronous/bwc/" String bwcRemoteFile = "https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/"+ bwcVersionShort + "/latest/linux/x64/tar/builds/opensearch/plugins/opensearch-asynchronous-search-"+ bwcVersion +".zip" -getPluginResource(bwcFilePath + bwcVersion, bwcRemoteFile) +//getPluginResource(bwcFilePath + bwcVersion, bwcRemoteFile) // Creates two test clusters of previous version and loads opensearch plugin of bwcVersion 2.times { i -> testClusters { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 774fae87..a5952066 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a58591e9..871cb86f 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,12 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +132,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +199,14 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +214,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 28690fe0..c138ebb7 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/src/test/resources/org/opensearch/search/asynchronous/bwc/2.12.0.0/opensearch-asynchronous-search-2.12.0.0.zip b/src/test/resources/org/opensearch/search/asynchronous/bwc/2.12.0.0/opensearch-asynchronous-search-2.12.0.0.zip new file mode 100644 index 00000000..e4091096 Binary files /dev/null and b/src/test/resources/org/opensearch/search/asynchronous/bwc/2.12.0.0/opensearch-asynchronous-search-2.12.0.0.zip differ