diff --git a/.github/workflows/yetus-jdk17-hadoop3-check.yml b/.github/workflows/yetus-jdk17-hadoop3-check.yml
new file mode 100644
index 000000000000..6caefcaffc51
--- /dev/null
+++ b/.github/workflows/yetus-jdk17-hadoop3-check.yml
@@ -0,0 +1,124 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# yamllint disable rule:line-length
+---
+name: Yetus JDK17 Hadoop3 Check
+
+"on":
+ pull_request:
+ types: [opened, synchronize, reopened]
+
+permissions:
+ contents: read
+ statuses: write
+
+jobs:
+ jdk17-hadoop3-check:
+ runs-on: ubuntu-latest
+ timeout-minutes: 360
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: "small-medium"
+ test_profile: "runDevTests"
+ test_pattern: ""
+ - name: "large-server-1"
+ test_profile: "runLargeTests"
+ test_pattern: "**/Test[BDEFJKQSU]*"
+ - name: "large-server-2"
+ test_profile: "runLargeTests"
+ test_pattern: "**/Test[CGHMNOT]*"
+ - name: "large-server-3"
+ test_profile: "runLargeTests"
+ test_pattern: "**/Test[AILPRVWXYZ]*"
+
+ name: ${{ matrix.name }}
+
+ env:
+ YETUS_VERSION: '0.15.0'
+
+ steps:
+ - name: Checkout HBase
+ uses: actions/checkout@v4
+ with:
+ path: src
+ fetch-depth: 0
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+
+ - name: Maven cache
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2
+ key: hbase-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ hbase-m2-
+
+ - name: Download Yetus
+ run: |
+ mkdir -p yetus
+ cd yetus
+ bash "${{ github.workspace }}/src/dev-support/jenkins-scripts/cache-apache-project-artifact.sh" \
+ --keys 'https://downloads.apache.org/yetus/KEYS' \
+ --verify-tar-gz \
+ ./apache-yetus-${{ env.YETUS_VERSION }}-bin.tar.gz \
+ yetus/${{ env.YETUS_VERSION }}/apache-yetus-${{ env.YETUS_VERSION }}-bin.tar.gz
+ tar --strip-components=1 -xzf apache-yetus-${{ env.YETUS_VERSION }}-bin.tar.gz
+ rm apache-yetus-${{ env.YETUS_VERSION }}-bin.tar.gz
+
+ - name: Run Yetus JDK17 Hadoop3 Check
+ env:
+ ARCHIVE_PATTERN_LIST: "TEST-*.xml,org.apache.h*.txt,*.dumpstream,*.dump"
+ DOCKERFILE: "${{ github.workspace }}/src/dev-support/docker/Dockerfile"
+ GITHUB_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
+ GITHUB_USER: ${{ github.actor }}
+ PATCHDIR: "${{ github.workspace }}/yetus-jdk17-hadoop3-check/output"
+ PLUGINS: "compile,github,htmlout,javac,javadoc,maven,mvninstall,shadedjars,unit"
+ SET_JAVA_HOME: "/usr/lib/jvm/java-17"
+ SOURCEDIR: "${{ github.workspace }}/src"
+ TESTS_FILTER: "checkstyle,javac,javadoc,pylint,shellcheck,shelldocs,blanks,perlcritic,ruby-lint,rubocop"
+ YETUSDIR: "${{ github.workspace }}/yetus"
+ AUTHOR_IGNORE_LIST: "src/main/asciidoc/_chapters/developer.adoc"
+ BLANKS_EOL_IGNORE_FILE: "dev-support/blanks-eol-ignore.txt"
+ BLANKS_TABS_IGNORE_FILE: "dev-support/blanks-tabs-ignore.txt"
+ EXCLUDE_TESTS_URL: "https://ci-hbase.apache.org/job/HBase-Find-Flaky-Tests/job/${{ github.base_ref }}/lastSuccessfulBuild/artifact/output/excludes"
+ BUILD_THREAD: "4"
+ SUREFIRE_FIRST_PART_FORK_COUNT: "1.0C"
+ SUREFIRE_SECOND_PART_FORK_COUNT: "0.5C"
+ BRANCH_NAME: "${{ github.base_ref }}"
+ SKIP_ERRORPRONE: 'true'
+ DEBUG: 'true'
+ TEST_PROFILE: ${{ matrix.test_profile }}
+ TEST_INCLUDE_PATTERN: ${{ matrix.test_pattern }}
+ run: |
+ cd "${{ github.workspace }}"
+ bash src/dev-support/jenkins_precommit_github_yetus.sh
+
+ - name: Publish Test Results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: yetus-jdk17-hadoop3-check-${{ matrix.name }}
+ path: ${{ github.workspace }}/yetus-jdk17-hadoop3-check/output
+ retention-days: 7
diff --git a/dev-support/hbase-personality.sh b/dev-support/hbase-personality.sh
index 5900bab072e0..54300f53170c 100755
--- a/dev-support/hbase-personality.sh
+++ b/dev-support/hbase-personality.sh
@@ -107,6 +107,10 @@ function personality_parse_args
delete_parameter "${i}"
INCLUDE_TESTS_URL=${i#*=}
;;
+ --include-tests-pattern=*)
+ delete_parameter "${i}"
+ INCLUDE_TESTS_PATTERN=${i#*=}
+ ;;
--hadoop-profile=*)
delete_parameter "${i}"
HADOOP_PROFILE=${i#*=}
@@ -335,7 +339,12 @@ function get_include_exclude_tests_arg
local __resultvar=$1
yetus_info "EXCLUDE_TESTS_URL=${EXCLUDE_TESTS_URL}"
yetus_info "INCLUDE_TESTS_URL=${INCLUDE_TESTS_URL}"
- if [[ -n "${EXCLUDE_TESTS_URL}" ]]; then
+ yetus_info "INCLUDE_TESTS_PATTERN=${INCLUDE_TESTS_PATTERN}"
+ # Direct pattern takes precedence over URL-based includes/excludes
+ if [[ -n "${INCLUDE_TESTS_PATTERN}" ]]; then
+ yetus_debug "Using include pattern: ${INCLUDE_TESTS_PATTERN}"
+ eval "${__resultvar}='-Dtest=${INCLUDE_TESTS_PATTERN}'"
+ elif [[ -n "${EXCLUDE_TESTS_URL}" ]]; then
if wget "${EXCLUDE_TESTS_URL}" -O "excludes"; then
excludes=$(cat excludes)
yetus_debug "excludes=${excludes}"
@@ -520,12 +529,13 @@ function shadedjars_rebuild
count=$(${GREP} -c '\[ERROR\]' "${logfile}")
if [[ ${count} -gt 0 ]]; then
- add_vote_table -1 shadedjars "${repostatus} has ${count} errors when building our shaded downstream artifacts."
- add_footer_table shadedjars "@@BASE@@/${repostatus}-shadedjars.txt"
+ add_vote_table_v2 -1 shadedjars \
+ "@@BASE@@/${repostatus}-shadedjars.txt" \
+ "${repostatus} has ${count} errors when building our shaded downstream artifacts."
return 1
fi
- add_vote_table +1 shadedjars "${repostatus} has no errors when building our shaded downstream artifacts."
+ add_vote_table_v2 +1 shadedjars "" "${repostatus} has no errors when building our shaded downstream artifacts."
return 0
}
diff --git a/dev-support/jenkins_precommit_github_yetus.sh b/dev-support/jenkins_precommit_github_yetus.sh
index c447dee3b5f8..7ef21c2570d8 100755
--- a/dev-support/jenkins_precommit_github_yetus.sh
+++ b/dev-support/jenkins_precommit_github_yetus.sh
@@ -167,6 +167,14 @@ fi
if [[ -n "${JAVA8_HOME}" ]]; then
YETUS_ARGS+=("--java8-home=${JAVA8_HOME}")
fi
+# Test profile for running specific test categories (e.g., runSmallTests, runLargeTests)
+if [[ -n "${TEST_PROFILE}" ]]; then
+ YETUS_ARGS+=("--test-profile=${TEST_PROFILE}")
+fi
+# Test include pattern for filtering which tests run (e.g., '**/Test[ABC]*')
+if [[ -n "${TEST_INCLUDE_PATTERN}" ]]; then
+ YETUS_ARGS+=("--include-tests-pattern=${TEST_INCLUDE_PATTERN}")
+fi
echo "Launching yetus with command line:"
echo "${TESTPATCHBIN} ${YETUS_ARGS[*]}"
diff --git a/pom.xml b/pom.xml
index 13062ead5920..998025139c15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
https://issues.apache.org/jira/browse/HBASE-6795.
-->
+
4.0.0
org.apache