From eedd9c3c37c2108f15ff632b35cc67e3741a501c Mon Sep 17 00:00:00 2001
From: rohit-kb <115476286+rohit-kb@users.noreply.github.com>
Date: Wed, 7 Jan 2026 13:37:03 +0530
Subject: [PATCH 01/35] HDDS-14366. Bump log4j2 to 2.25.3 (#9597)
(cherry picked from commit 064012a0d4ff7fa67f7806197617599f7bece0c3)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 38d51ff8cdb6..9230c64ac89b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -141,7 +141,7 @@
1.0.1
1.9.25
2.7.0
- 2.25.0
+ 2.25.3
1.0-beta-1
3.1.0
3.7.1
From 5e186e1b64cf1256466b409b4e219019f9cb7921 Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Mon, 16 Feb 2026 17:46:31 +0100
Subject: [PATCH 02/35] HDDS-14633. ozonescripts/test.sh fails with image
already exists (#9762)
(cherry picked from commit 135d58a061dcf71e104aa0479e78ddb0d081faaf)
---
.../dist/src/main/compose/ozone-om-ha/docker-compose.yaml | 5 -----
.../dist/src/main/compose/ozonescripts/docker-compose.yaml | 3 ---
2 files changed, 8 deletions(-)
diff --git a/hadoop-ozone/dist/src/main/compose/ozone-om-ha/docker-compose.yaml b/hadoop-ozone/dist/src/main/compose/ozone-om-ha/docker-compose.yaml
index 097d99c6b7a1..273cedb4ad81 100644
--- a/hadoop-ozone/dist/src/main/compose/ozone-om-ha/docker-compose.yaml
+++ b/hadoop-ozone/dist/src/main/compose/ozone-om-ha/docker-compose.yaml
@@ -21,7 +21,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-om-ha:${OZONE_RUNNER_VERSION}
privileged: true #required by the profiler
volumes:
- ../..:/opt/hadoop
@@ -36,7 +35,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-om-ha:${OZONE_RUNNER_VERSION}
privileged: true #required by the profiler
volumes:
- ../..:/opt/hadoop
@@ -54,7 +52,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-om-ha:${OZONE_RUNNER_VERSION}
privileged: true #required by the profiler
volumes:
- ../..:/opt/hadoop
@@ -72,7 +69,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-om-ha:${OZONE_RUNNER_VERSION}
privileged: true #required by the profiler
volumes:
- ../..:/opt/hadoop
@@ -90,7 +86,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-om-ha:${OZONE_RUNNER_VERSION}
privileged: true #required by the profiler
volumes:
- ../..:/opt/hadoop
diff --git a/hadoop-ozone/dist/src/main/compose/ozonescripts/docker-compose.yaml b/hadoop-ozone/dist/src/main/compose/ozonescripts/docker-compose.yaml
index 9176739471cd..4f56f39ed5fc 100644
--- a/hadoop-ozone/dist/src/main/compose/ozonescripts/docker-compose.yaml
+++ b/hadoop-ozone/dist/src/main/compose/ozonescripts/docker-compose.yaml
@@ -21,7 +21,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-scripts:${OZONE_RUNNER_VERSION}
volumes:
- ../..:/opt/hadoop
ports:
@@ -34,7 +33,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-scripts:${OZONE_RUNNER_VERSION}
volumes:
- ../..:/opt/hadoop
ports:
@@ -48,7 +46,6 @@ services:
args:
- OZONE_RUNNER_IMAGE
- OZONE_RUNNER_VERSION
- image: ozone-runner-scripts:${OZONE_RUNNER_VERSION}
volumes:
- ../..:/opt/hadoop
ports:
From ca390c6d80aaace8b3968a9191f06ffc753be58d Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Tue, 17 Feb 2026 09:44:49 +0100
Subject: [PATCH 03/35] HDDS-14635. kubernetes check fails after restarting
datanodes (#9772)
(cherry picked from commit c3b39807755d0b0ce608655bab7249f70cd62c84)
---
.../src/main/k8s/definitions/ozone/config.yaml | 11 +++++++----
.../dist/src/main/k8s/examples/ozone/test.sh | 1 +
.../dist/src/main/k8s/examples/testlib.sh | 17 +++++++++++++++++
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml
index e646b1c0af88..87ff48038a7d 100644
--- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml
+++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/config.yaml
@@ -38,7 +38,10 @@ data:
OZONE-SITE.XML_ozone.scm.client.address: "scm-0.scm"
OZONE-SITE.XML_ozone.scm.datanode.id.dir: "/data/metadata"
OZONE-SITE.XML_ozone.scm.names: "scm-0.scm"
- LOG4J.PROPERTIES_log4j.rootLogger: "INFO, stdout"
- LOG4J.PROPERTIES_log4j.appender.stdout: "org.apache.log4j.ConsoleAppender"
- LOG4J.PROPERTIES_log4j.appender.stdout.layout: "org.apache.log4j.PatternLayout"
- LOG4J.PROPERTIES_log4j.appender.stdout.layout.ConversionPattern: "%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
+ OZONE-SITE.XML_ozone.client.max.retries: "15"
+ OZONE-SITE.XML_ozone.client.retry.interval: "1"
+ LOG4J.PROPERTIES_hadoop.root.logger: "INFO,console"
+ LOG4J.PROPERTIES_log4j.rootLogger: "${hadoop.root.logger}"
+ LOG4J.PROPERTIES_log4j.appender.console: "org.apache.log4j.ConsoleAppender"
+ LOG4J.PROPERTIES_log4j.appender.console.layout: "org.apache.log4j.PatternLayout"
+ LOG4J.PROPERTIES_log4j.appender.console.layout.ConversionPattern: "%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/test.sh b/hadoop-ozone/dist/src/main/k8s/examples/ozone/test.sh
index d1006a3fc862..91a352d7b9a4 100755
--- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/test.sh
+++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/test.sh
@@ -35,6 +35,7 @@ execute_robot_test ${SCM} -v PREFIX:pre smoketest/freon/validate.robot
kubectl delete pod datanode-0 datanode-1 datanode-2
wait_for_startup
+wait_for_pipeline
execute_robot_test ${SCM} -v PREFIX:pre smoketest/freon/validate.robot
execute_robot_test ${SCM} -v PREFIX:post smoketest/freon/generate.robot
diff --git a/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh b/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh
index 1ae4dd98485f..5d03235a2f03 100644
--- a/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh
+++ b/hadoop-ozone/dist/src/main/k8s/examples/testlib.sh
@@ -50,6 +50,23 @@ wait_for_startup(){
fi
}
+wait_for_pipeline() {
+ retry assert_pipeline_exists
+}
+
+execute_command_in_container() {
+ CONTAINER="$1"
+ shift 1 #Remove first argument which was the container name
+
+ kubectl exec "${CONTAINER}" -- "$@"
+}
+
+assert_pipeline_exists() {
+ local count
+ count=$(execute_command_in_container scm-0 ozone admin pipeline list --state OPEN --filter-by-factor THREE --json | jq -r 'length')
+ [[ $count -gt 0 ]]
+}
+
all_pods_are_running() {
local -i running=$(kubectl get pod --field-selector status.phase=Running | grep -v 'STATUS' | wc -l)
local -i all=$(kubectl get pod | grep -v 'STATUS' | wc -l)
From 69fc278996fc16c39979c192786762d5577607cb Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Wed, 18 Feb 2026 05:11:10 +0100
Subject: [PATCH 04/35] HDDS-13069. Error stopping S3 Gateway admin webserver
(#9776)
(cherry picked from commit 6de40ff6d946b70d6d4b0548870a8a11bff6ae6c)
---
.../org/apache/hadoop/hdds/server/http/BaseHttpServer.java | 7 ++++++-
.../src/main/java/org/apache/hadoop/ozone/s3/Gateway.java | 4 ++--
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/http/BaseHttpServer.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/http/BaseHttpServer.java
index 30f31c3093d3..aacbd2188d79 100644
--- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/http/BaseHttpServer.java
+++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/server/http/BaseHttpServer.java
@@ -63,7 +63,7 @@
/**
* Base class for HTTP server of the Ozone related components.
*/
-public abstract class BaseHttpServer {
+public abstract class BaseHttpServer implements AutoCloseable {
private static final Logger LOG =
LoggerFactory.getLogger(BaseHttpServer.class);
@@ -343,6 +343,11 @@ public void stop() throws Exception {
}
}
+ @Override
+ public void close() throws Exception {
+ stop();
+ }
+
/**
* Update the configured listen address based on the real port
*
diff --git a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
index 9126d8ed4a2b..e1951126aaad 100644
--- a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
+++ b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
@@ -33,6 +33,7 @@
import org.apache.hadoop.hdds.server.http.BaseHttpServer;
import org.apache.hadoop.hdds.tracing.TracingUtil;
import org.apache.hadoop.hdds.utils.HddsServerUtil;
+import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.ozone.OzoneSecurityUtil;
import org.apache.hadoop.ozone.s3.metrics.S3GatewayMetrics;
import org.apache.hadoop.ozone.util.OzoneNetUtils;
@@ -108,8 +109,7 @@ public void start() throws IOException {
public void stop() throws Exception {
LOG.info("Stopping Ozone S3 gateway");
- httpServer.stop();
- contentServer.stop();
+ IOUtils.closeQuietly(httpServer, contentServer);
jvmPauseMonitor.stop();
S3GatewayMetrics.unRegister();
}
From 3c03e0fb06c3c33aa23e3071ef0cd496f038049f Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Mon, 24 Nov 2025 20:54:23 +0100
Subject: [PATCH 05/35] HDDS-13977. Bump Netty to 4.1.128, gRPC to 1.77.0
(#9349)
(cherry picked from commit cc479a8679d0f2cb1daa2132d59e6e253d7094a6)
---
pom.xml | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9230c64ac89b..3bc71c45b015 100644
--- a/pom.xml
+++ b/pom.xml
@@ -107,7 +107,7 @@
2.6.1
4.5.14
4.4.16
- 1.71.0
+ 1.77.0
2.16.2
0.8.13
2.1.1
@@ -173,9 +173,7 @@
1.11
4.11.0
-
-
- 4.1.119.Final
+ 4.1.128.Final
16.14.2
4.12.0
From 38cb06e01fc9e00acfe66a5edb397930a319bc7a Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Thu, 29 Jan 2026 20:06:33 +0100
Subject: [PATCH 06/35] HDDS-14522. Bump Netty to 4.1.130, gRPC to 1.77.1
(#9691)
(cherry picked from commit 593d7ea413401cbb12ec0e22eafeb5d94b18eb9a)
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index 3bc71c45b015..ca48743aecb8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -107,7 +107,7 @@
2.6.1
4.5.14
4.4.16
- 1.77.0
+ 1.77.1
2.16.2
0.8.13
2.1.1
@@ -173,7 +173,7 @@
1.11
4.11.0
- 4.1.128.Final
+ 4.1.130.Final
16.14.2
4.12.0
From b7995a2867a56241a0526849c39bbbc25785e26b Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Tue, 16 Dec 2025 11:11:23 +0100
Subject: [PATCH 07/35] HDDS-14171. Use workflow inputs in run command via
environment variable (#9498)
(cherry picked from commit 03cc8fa863019aaf4b449e10b76ac2af0da7a97e)
---
.github/workflows/check.yml | 22 +++++++++++++------
.github/workflows/intermittent-test-check.yml | 12 +++++-----
.github/workflows/repeat-acceptance.yml | 3 ++-
3 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index a94508b7c6cd..edd64fe69a3a 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -136,6 +136,7 @@ env:
OZONE_IMAGE: ghcr.io/apache/ozone
OZONE_RUNNER_IMAGE: ghcr.io/apache/ozone-runner
OZONE_VOLUME_OWNER: 1000
+ SCRIPT: ${{ inputs.script }}
jobs:
check:
@@ -222,32 +223,39 @@ jobs:
- name: Execute pre-test steps
if: ${{ inputs.pre-script }}
run: |
- ${{ inputs.pre-script }}
+ $COMMAND
+ env:
+ COMMAND: ${{ inputs.pre-script }}
- name: Execute tests
run: |
- hadoop-ozone/dev-support/checks/${{ inputs.script }}.sh ${{ inputs.script-args }} ${{ inputs.ratis-args }}
+ $COMMAND
env:
+ COMMAND: hadoop-ozone/dev-support/checks/${{ inputs.script }}.sh ${{ inputs.script-args }} ${{ inputs.ratis-args }}
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
OZONE_WITH_COVERAGE: ${{ inputs.with-coverage }}
- name: Execute post-failure steps
if: ${{ failure() && inputs.post-failure }}
run: |
- ${{ inputs.post-failure }}
+ $COMMAND
+ env:
+ COMMAND: ${{ inputs.post-failure }}
- name: Execute post-success steps
if: ${{ !failure() && inputs.post-success }}
run: |
- ${{ inputs.post-success }}
+ $COMMAND
+ env:
+ COMMAND: ${{ inputs.post-success }}
- name: Summary of failures
if: ${{ failure() }}
run: |
- if [[ -s "target/${{ inputs.script }}/summary.md" ]]; then
- cat target/${{ inputs.script }}/summary.md >> $GITHUB_STEP_SUMMARY
+ if [[ -s "target/$SCRIPT/summary.md" ]]; then
+ cat target/$SCRIPT/summary.md >> $GITHUB_STEP_SUMMARY
fi
- hadoop-ozone/dev-support/checks/_summary.sh target/${{ inputs.script }}/summary.txt
+ hadoop-ozone/dev-support/checks/_summary.sh target/$SCRIPT/summary.txt
- name: Archive build results
if: ${{ !cancelled() }}
diff --git a/.github/workflows/intermittent-test-check.yml b/.github/workflows/intermittent-test-check.yml
index 1263bcfdc908..797a2d4ee963 100644
--- a/.github/workflows/intermittent-test-check.yml
+++ b/.github/workflows/intermittent-test-check.yml
@@ -65,6 +65,8 @@ env:
RATIS_REPO: ${{ github.event.inputs.ratis-repo }}
RATIS_VERSION: ${{ github.event.inputs.ratis-ref }}
JAVA_VERSION: ${{ github.event.inputs.java-version }}
+ SPLITS: ${{ github.event.inputs.splits }}
+ SUBMODULE: ${{ github.event.inputs.submodule }}
# Surefire 3.0.0-M4 is used because newer versions do not reliably kill the fork on timeout
# SUREFIRE-1722, SUREFIRE-1815
SUREFIRE_VERSION: 3.0.0-M4
@@ -82,7 +84,7 @@ jobs:
name: Generate test matrix
run: |
splits=()
- for ((i = 1; i <= ${{ github.event.inputs.splits }}; i++)); do
+ for ((i = 1; i <= $SPLITS; i++)); do
splits+=("$i")
done
printf -v x "%s," "${splits[@]}"
@@ -130,7 +132,7 @@ jobs:
- name: Build (most) of Ozone
run: |
args="-DskipRecon -DskipShade -Dmaven.javadoc.skip=true"
- if [[ "${{ github.event.inputs.ratis-ref }}" != "" ]]; then
+ if [[ "$RATIS_VERSION" != "" ]]; then
args="$args -Dratis.version=${{ needs.ratis.outputs.ratis-version }}"
args="$args -Dratis.thirdparty.version=${{ needs.ratis.outputs.thirdparty-version }}"
args="$args -Dio.grpc.version=${{ needs.ratis.outputs.grpc-version }}"
@@ -138,7 +140,7 @@ jobs:
args="$args -Dgrpc.protobuf-compile.version=${{ needs.ratis.outputs.protobuf-version }}"
fi
- args="$args -am -pl :${{ github.event.inputs.submodule }}"
+ args="$args -am -pl :$SUBMODULE"
hadoop-ozone/dev-support/checks/build.sh $args
- name: Store Maven repo for tests
@@ -200,7 +202,7 @@ jobs:
fi
args="-DexcludedGroups=native|slow|unhealthy -DskipShade"
- if [[ "${{ github.event.inputs.ratis-ref }}" != "" ]]; then
+ if [[ "$RATIS_VERSION" != "" ]]; then
args="$args -Dratis.version=${{ needs.ratis.outputs.ratis-version }}"
args="$args -Dratis.thirdparty.version=${{ needs.ratis.outputs.thirdparty-version }}"
args="$args -Dio.grpc.version=${{ needs.ratis.outputs.grpc-version }}"
@@ -208,7 +210,7 @@ jobs:
args="$args -Dgrpc.protobuf-compile.version=${{ needs.ratis.outputs.protobuf-version }}"
fi
- args="$args -pl :${{ github.event.inputs.submodule }}"
+ args="$args -pl :$SUBMODULE"
if [ "$TEST_METHOD" = "ALL" ]; then
echo "Running all tests from $TEST_CLASS"
diff --git a/.github/workflows/repeat-acceptance.yml b/.github/workflows/repeat-acceptance.yml
index 252e93518cc6..8640f9fd94b3 100644
--- a/.github/workflows/repeat-acceptance.yml
+++ b/.github/workflows/repeat-acceptance.yml
@@ -48,6 +48,7 @@ env:
OZONE_TEST_SELECTOR: ${{ github.event.inputs.test-filter }}
FAIL_FAST: ${{ github.event.inputs.fail-fast }}
JAVA_VERSION: 8
+ SPLITS: ${{ github.event.inputs.splits }}
run-name: ${{ github.event_name == 'workflow_dispatch' && format('{0}[{1}]-{2}', inputs.test-suite || inputs.test-filter, inputs.ref, inputs.splits) || '' }}
jobs:
prepare-job:
@@ -67,7 +68,7 @@ jobs:
name: Generate test matrix
run: |
splits=()
- for ((i = 1; i <= ${{ github.event.inputs.splits }}; i++)); do
+ for ((i = 1; i <= $SPLITS; i++)); do
splits+=("$i")
done
printf -v x "%s," "${splits[@]}"
From 66253fa33b6db92ad38ddb345b17e1dd58d9331d Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Sat, 14 Mar 2026 11:56:01 +0100
Subject: [PATCH 08/35] HDDS-14833. Bump GitHub action versions (#9916)
(cherry picked from commit 3f47fa732873fb9a5e22c79bbb4ba7bdd347309f)
---
.github/workflows/build-ratis.yml | 10 +++----
.github/workflows/check.yml | 24 ++++++++---------
.github/workflows/ci.yml | 16 ++++++------
.github/workflows/intermittent-test-check.yml | 26 +++++++++----------
.github/workflows/label-pr.yml | 2 +-
.github/workflows/populate-cache.yml | 10 +++----
.github/workflows/pull-request.yml | 2 +-
.github/workflows/repeat-acceptance.yml | 18 ++++++-------
8 files changed, 54 insertions(+), 54 deletions(-)
diff --git a/.github/workflows/build-ratis.yml b/.github/workflows/build-ratis.yml
index b54d7ec6d55d..811aa0fbdd2a 100644
--- a/.github/workflows/build-ratis.yml
+++ b/.github/workflows/build-ratis.yml
@@ -65,19 +65,19 @@ jobs:
thirdparty-version: ${{ steps.versions.outputs.thirdparty }}
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
repository: ${{ inputs.repo }}
ref: ${{ inputs.ref }}
- name: Cache for maven dependencies
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.m2/repository
!~/.m2/repository/org/apache/ratis
key: ratis-dependencies-${{ hashFiles('**/pom.xml') }}
- name: Setup java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 8
@@ -95,7 +95,7 @@ jobs:
mvn -B --no-transfer-progress -Dscan=false versions:set -DnewVersion=${{ steps.versions.outputs.ratis }}
dev-support/checks/build.sh
- name: Store Maven repo for tests
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ratis-jars
path: |
@@ -112,7 +112,7 @@ jobs:
protobuf-version: ${{ steps.versions.outputs.protobuf }}
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
repository: apache/ratis-thirdparty
ref: ${{ needs.ratis.outputs.thirdparty-version }}
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index edd64fe69a3a..37877917c499 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -146,14 +146,14 @@ jobs:
steps:
- name: Checkout project
if: ${{ !inputs.needs-ozone-source-tarball }}
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
ref: ${{ inputs.sha }}
fetch-depth: ${{ inputs.checkout-fetch-depth }}
- name: Download Ozone source tarball
if: ${{ inputs.needs-ozone-source-tarball }}
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ozone-src
@@ -164,7 +164,7 @@ jobs:
- name: Cache for NPM dependencies
if: ${{ inputs.needs-npm-cache }}
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.pnpm-store
@@ -174,7 +174,7 @@ jobs:
- name: Cache for Maven dependencies
if: ${{ inputs.needs-maven-cache }}
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@v5
with:
path: |
~/.m2/repository/*/*/*
@@ -186,7 +186,7 @@ jobs:
- name: Download Ozone repo
id: download-ozone-repo
if: ${{ inputs.needs-ozone-repo }}
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ozone-repo
path: |
@@ -194,7 +194,7 @@ jobs:
- name: Download Ratis repo
if: ${{ inputs.ratis-args != '' }}
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ratis-jars
path: |
@@ -202,7 +202,7 @@ jobs:
- name: Download Ozone binary tarball
if: ${{ inputs.needs-ozone-binary-tarball }}
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ozone-bin
@@ -215,7 +215,7 @@ jobs:
- name: Setup java ${{ inputs.java-version }}
if: ${{ inputs.java-version }}
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ inputs.java-version }}
@@ -259,7 +259,7 @@ jobs:
- name: Archive build results
if: ${{ !cancelled() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ${{ (inputs.split && format('{0}-{1}', inputs.script, inputs.split)) || inputs.script }}
# please keep path as a single item; move to that directory all files needed in the artifact
@@ -270,7 +270,7 @@ jobs:
# to avoid the need for 3 more inputs.
- name: Store binaries for tests
if: ${{ inputs.script == 'build' && !cancelled() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ozone-bin
path: |
@@ -280,7 +280,7 @@ jobs:
- name: Store source tarball for compilation
if: ${{ inputs.script == 'build' && !cancelled() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ozone-src
path: |
@@ -289,7 +289,7 @@ jobs:
- name: Store Maven repo for tests
if: ${{ inputs.script == 'build' && !cancelled() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ozone-repo
path: |
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 28e6aafff38c..52a0665acc4e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -57,19 +57,19 @@ jobs:
with-coverage: ${{ env.OZONE_WITH_COVERAGE }}
steps:
- name: "Checkout ${{ github.ref }} / ${{ github.sha }} (push)"
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
persist-credentials: false
if: github.event_name == 'push'
- name: "Checkout ${{ github.sha }} with its parent (pull request)"
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
ref: ${{ github.sha }}
fetch-depth: 2
persist-credentials: false
if: github.event_name == 'pull_request'
- name: "Checkout ${{ inputs.ref }} given in workflow input (manual dispatch)"
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
ref: ${{ inputs.ref }}
persist-credentials: false
@@ -310,12 +310,12 @@ jobs:
- integration
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ needs.build-info.outputs.sha }}
- name: Cache for maven dependencies
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@v5
with:
path: |
~/.m2/repository/*/*/*
@@ -324,7 +324,7 @@ jobs:
restore-keys: |
maven-repo-
- name: Download artifacts
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
path: target/artifacts
- name: Untar binaries
@@ -332,7 +332,7 @@ jobs:
mkdir -p hadoop-ozone/dist/target
tar xzvf target/artifacts/ozone-bin/ozone*.tar.gz -C hadoop-ozone/dist/target
- name: Setup java ${{ env.TEST_JAVA_VERSION }}
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ env.TEST_JAVA_VERSION }}
@@ -346,7 +346,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: Archive build results
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: coverage
path: target/coverage
diff --git a/.github/workflows/intermittent-test-check.yml b/.github/workflows/intermittent-test-check.yml
index 797a2d4ee963..28b0d6b55924 100644
--- a/.github/workflows/intermittent-test-check.yml
+++ b/.github/workflows/intermittent-test-check.yml
@@ -77,7 +77,7 @@ jobs:
outputs:
matrix: ${{steps.generate.outputs.matrix}}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.ref }}
- id: generate
@@ -105,11 +105,11 @@ jobs:
timeout-minutes: 60
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.ref }}
- name: Cache for maven dependencies
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@v5
with:
path: |
~/.m2/repository/*/*/*
@@ -119,13 +119,13 @@ jobs:
maven-repo-
- name: Download Ratis repo
if: ${{ github.event.inputs.ratis-ref != '' }}
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ratis-jars
path: |
~/.m2/repository/org/apache/ratis
- name: Setup java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ github.event.inputs.java-version }}
@@ -144,7 +144,7 @@ jobs:
hadoop-ozone/dev-support/checks/build.sh $args
- name: Store Maven repo for tests
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ozone-repo
path: |
@@ -163,11 +163,11 @@ jobs:
split: ${{fromJson(needs.prepare-job.outputs.matrix)}} # Define splits
fail-fast: ${{ fromJson(github.event.inputs.fail-fast) }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.ref }}
- name: Cache for maven dependencies
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@v5
with:
path: |
~/.m2/repository/*/*/*
@@ -177,21 +177,21 @@ jobs:
maven-repo-
- name: Download Ratis repo
if: ${{ github.event.inputs.ratis-ref != '' }}
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ratis-jars
path: |
~/.m2/repository/org/apache/ratis
- name: Download Ozone repo
id: download-ozone-repo
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ozone-repo
path: |
~/.m2/repository/org/apache/ozone
continue-on-error: true
- name: Setup java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ github.event.inputs.java-version }}
@@ -228,7 +228,7 @@ jobs:
run: hadoop-ozone/dev-support/checks/_summary.sh target/unit/summary.txt
if: ${{ !cancelled() }}
- name: Archive build results
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
if: ${{ failure() }}
with:
name: result-${{ github.run_number }}-${{ github.run_id }}-split-${{ matrix.split }}
@@ -239,7 +239,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download build results
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
- name: Count failures
run: |
failures=$(find . -name 'summary.txt' | grep --text -v 'iteration' | xargs grep --text -v 'exit code: 0' | wc -l)
diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml
index abc620b7ef09..d233c37138a6 100644
--- a/.github/workflows/label-pr.yml
+++ b/.github/workflows/label-pr.yml
@@ -25,5 +25,5 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@v5
+ - uses: actions/labeler@v6
diff --git a/.github/workflows/populate-cache.yml b/.github/workflows/populate-cache.yml
index f2a6843f6912..25cf6f959212 100644
--- a/.github/workflows/populate-cache.yml
+++ b/.github/workflows/populate-cache.yml
@@ -34,11 +34,11 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Restore cache for Maven dependencies
id: restore-cache
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@v5
with:
path: |
~/.m2/repository/*/*/*
@@ -47,7 +47,7 @@ jobs:
- name: Setup Java
if: steps.restore-cache.outputs.cache-hit != 'true'
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 8
@@ -60,7 +60,7 @@ jobs:
- name: Restore NodeJS tarballs
id: restore-nodejs
if: steps.restore-cache.outputs.cache-hit != 'true'
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: ~/.m2/repository/com/github/eirslett/node
key: nodejs-${{ steps.nodejs-version.outputs.nodejs-version }}
@@ -85,7 +85,7 @@ jobs:
- name: Save cache for Maven dependencies
if: steps.restore-cache.outputs.cache-hit != 'true'
- uses: actions/cache/save@v4
+ uses: actions/cache/save@v5
with:
path: |
~/.m2/repository/*/*/*
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 7ccbb9ef20a8..9527d3069c97 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
- name: Check pull request title
env:
TITLE: ${{ github.event.pull_request.title }}
diff --git a/.github/workflows/repeat-acceptance.yml b/.github/workflows/repeat-acceptance.yml
index 8640f9fd94b3..0f031b379cf0 100644
--- a/.github/workflows/repeat-acceptance.yml
+++ b/.github/workflows/repeat-acceptance.yml
@@ -56,7 +56,7 @@ jobs:
outputs:
matrix: ${{steps.generate.outputs.matrix}}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.ref }}
- name: Verify Test Filter
@@ -81,11 +81,11 @@ jobs:
timeout-minutes: 60
steps:
- name: Checkout project
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.ref }}
- name: Cache for npm dependencies
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: |
~/.pnpm-store
@@ -94,7 +94,7 @@ jobs:
restore-keys: |
${{ runner.os }}-pnpm-
- name: Cache for maven dependencies
- uses: actions/cache/restore@v4
+ uses: actions/cache/restore@v5
with:
path: |
~/.m2/repository/*/*/*
@@ -104,7 +104,7 @@ jobs:
maven-repo-${{ hashFiles('**/pom.xml') }}
maven-repo-
- name: Setup java
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
@@ -113,7 +113,7 @@ jobs:
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: Store binaries for tests
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
with:
name: ozone-bin
path: |
@@ -131,11 +131,11 @@ jobs:
split: ${{ fromJson(needs.prepare-job.outputs.matrix) }}
fail-fast: ${{ fromJson(github.event.inputs.fail-fast) }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.ref }}
- name: Download compiled Ozone binaries
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v8
with:
name: ozone-bin
- name: Untar binaries
@@ -154,7 +154,7 @@ jobs:
run: hadoop-ozone/dev-support/checks/_summary.sh target/${{ github.job }}/summary.txt
if: ${{ !cancelled() }}
- name: Archive build results
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v7
if: always()
with:
name: acceptance-${{ matrix.split }}
From 0d690b7ed4ddc1604a11c7d5edc39110346e3c98 Mon Sep 17 00:00:00 2001
From: Sarveksha Yeshavantha Raju
<79865743+sarvekshayr@users.noreply.github.com>
Date: Mon, 10 Nov 2025 16:27:05 +0530
Subject: [PATCH 09/35] HDDS-11370. Use GitHub's stale action to auto-close
inactive pull requests (#9259)
(cherry picked from commit 78490e99592d2498d957e44e4c49246dce5b5a89)
(cherry picked from commit cceae05e13098916d5b84108d41acc144a4541c7)
---
.github/ci.md | 4 +-
.github/close-pending.sh | 41 -------------------
.github/closing-message.txt | 7 ----
...lose-pending.yaml => close-stale-prs.yaml} | 30 ++++++++------
4 files changed, 20 insertions(+), 62 deletions(-)
delete mode 100755 .github/close-pending.sh
delete mode 100644 .github/closing-message.txt
rename .github/workflows/{close-pending.yaml => close-stale-prs.yaml} (50%)
diff --git a/.github/ci.md b/.github/ci.md
index fda4983d10ae..4c8182a28779 100644
--- a/.github/ci.md
+++ b/.github/ci.md
@@ -73,8 +73,8 @@ If they don't match, it describes how to make the updates to include the changes
- basic
- integration
-### close-prs Workflow
-[This](./workflows/close-pending.yaml) workflow is scheduled each night at midnight; it closes PR's that have not been updated in the last 21 days, while letting the author know they are free to reopen.
+### close-stale-prs Workflow
+[This](./workflows/close-stale-prs.yml) workflow is scheduled each night at midnight and uses the [actions/stale](https://github.com/actions/stale) to automatically manage inactive PRs. It marks PRs as stale after 21 days of inactivity and closes them 7 days later. If a stale PR receives any updates or comments, the stale label is automatically removed.
### comment-commands Workflow
[This](./workflows/comments.yaml) workflow is triggered each time a comment is added/edited to a PR. It checks to see if the body of the comment begins with one of the following strings and, if so, invokes the corresponding command.
diff --git a/.github/close-pending.sh b/.github/close-pending.sh
deleted file mode 100755
index 5ed27d31a10c..000000000000
--- a/.github/close-pending.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-set -e
-
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
-MESSAGE=$(cat $SCRIPT_DIR/closing-message.txt)
-
-while IFS= read -r number &&
- IFS= read -r title; do
- echo "Closing PR ($number): $title"
- curl -s -o /dev/null \
- -X POST \
- --data "$(jq --arg body "$MESSAGE" -n '{body: $body}')" \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- --header 'content-type: application/json' \
- "https://api.github.com/repos/apache/ozone/issues/$number/comments"
-
- curl -s -o /dev/null \
- -X PATCH \
- --data '{"state": "close"}' \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- --header 'content-type: application/json' \
- "https://api.github.com/repos/apache/ozone/pulls/$number"
-done < <(curl -H "Content-Type: application/json" \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- "https://api.github.com/search/issues?q=repo:apache/ozone+type:pr+updated:<$(date -d "-21 days" +%Y-%m-%d)+label:pending+is:open" \
- | jq -r '.items[] | (.number,.title)')
diff --git a/.github/closing-message.txt b/.github/closing-message.txt
deleted file mode 100644
index 261eac275e0e..000000000000
--- a/.github/closing-message.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Thank you very much for the patch. I am closing this PR __temporarily__ as there was no activity recently and it is waiting for response from its author.
-
-It doesn't mean that this PR is not important or ignored: feel free to reopen the PR at any time.
-
-It only means that attention of committers is not required. We prefer to keep the review queue clean. This ensures PRs in need of review are more visible, which results in faster feedback for all PRs.
-
-If you need ANY help to finish this PR, please [contact the community](https://github.com/apache/hadoop-ozone#contact) on the mailing list or the slack channel."
diff --git a/.github/workflows/close-pending.yaml b/.github/workflows/close-stale-prs.yaml
similarity index 50%
rename from .github/workflows/close-pending.yaml
rename to .github/workflows/close-stale-prs.yaml
index 3dfe736cd39d..6e4ef57f88fe 100644
--- a/.github/workflows/close-pending.yaml
+++ b/.github/workflows/close-stale-prs.yaml
@@ -12,21 +12,27 @@
# 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.
-name: close-prs
+name: close-stale-prs
on:
schedule:
- - cron: '0 0 * * *'
+ - cron: '0 0 * * *'
jobs:
- close-pending:
- name: close-pending
- runs-on: ubuntu-24.04
+ close-stale-prs:
+ permissions:
+ pull-requests: write
+ runs-on: ubuntu-latest
steps:
- - name: Checkout code
- uses: actions/checkout@v4
- - name: Execute close-pending script
- if: github.repository == 'apache/ozone'
- run: ./.github/close-pending.sh
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Close Stale PRs
+ uses: actions/stale@v10
+ with:
+ stale-pr-label: 'stale'
+ exempt-draft-pr: false
+ days-before-issue-stale: -1
+ days-before-pr-stale: 21
+ days-before-pr-close: 7
+ remove-pr-stale-when-updated: true
+ operations-per-run: 150
+ stale-pr-message: 'This PR has been marked as stale due to 21 days of inactivity. Please comment or remove the stale label to keep it open. Otherwise, it will be automatically closed in 7 days.'
+ close-pr-message: 'Thank you for your contribution. This PR is being closed due to inactivity. If needed, feel free to reopen it.'
From 90583bc4a31ce9cd5b08b3362e2884a568b7e22c Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Thu, 13 Nov 2025 18:34:13 +0100
Subject: [PATCH 10/35] HDDS-13923. Remove leftover references to custom
pending label (#9290)
(cherry picked from commit d480dd2dde036b3ad77bd1f5afb78f83bb3fe8c1)
---
.github/ci.md | 3 ---
.github/comment-commands/close.sh | 35 --------------------------
.github/comment-commands/pending.sh | 39 -----------------------------
.github/comment-commands/ready.sh | 35 --------------------------
4 files changed, 112 deletions(-)
delete mode 100755 .github/comment-commands/close.sh
delete mode 100755 .github/comment-commands/pending.sh
delete mode 100755 .github/comment-commands/ready.sh
diff --git a/.github/ci.md b/.github/ci.md
index 4c8182a28779..75b0ad38a9ea 100644
--- a/.github/ci.md
+++ b/.github/ci.md
@@ -78,11 +78,8 @@ If they don't match, it describes how to make the updates to include the changes
### comment-commands Workflow
[This](./workflows/comments.yaml) workflow is triggered each time a comment is added/edited to a PR. It checks to see if the body of the comment begins with one of the following strings and, if so, invokes the corresponding command.
-- /close : [Close](./comment-commands/close.sh) pending pull request (with message saying author is free to reopen.)
- /help : [Show](./comment-commands/help.sh) all the available comment commands
- /label : [Add](./comment-commands/label.sh) new label to the issue: /label "label"
-- /pending : [Add](./comment-commands/pending.sh) a REQUESTED_CHANGE type review to mark issue non-mergeable: /pending "reason"
-- /ready : [Dismiss](./comment-commands/ready.sh) all the blocking reviews
- /retest : [Provide](./comment-commands/retest.sh) help on how to trigger new CI build
diff --git a/.github/comment-commands/close.sh b/.github/comment-commands/close.sh
deleted file mode 100755
index cb57b7192138..000000000000
--- a/.github/comment-commands/close.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-#doc: Close pending pull request temporary
-# shellcheck disable=SC2124
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
-MESSAGE=$(cat $SCRIPT_DIR/../closing-message.txt)
-
-set +x #GITHUB_TOKEN
-curl -s -o /dev/null \
- -X POST \
- --data "$(jq --arg body "$MESSAGE" -n '{body: $body}')" \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- --header 'content-type: application/json' \
- "$(jq -r '.issue.comments_url' "$GITHUB_EVENT_PATH")"
-
-curl -s -o /dev/null \
- -X PATCH \
- --data '{"state": "close"}' \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- --header 'content-type: application/json' \
- "$(jq -r '.issue.pull_request.url' "$GITHUB_EVENT_PATH")"
diff --git a/.github/comment-commands/pending.sh b/.github/comment-commands/pending.sh
deleted file mode 100755
index 840ed82889d2..000000000000
--- a/.github/comment-commands/pending.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-#doc: Add a REQUESTED_CHANGE type review to mark issue non-mergeable: `/pending `
-# shellcheck disable=SC2124
-MESSAGE="Marking this issue as un-mergeable as requested.
-
-Please use \`/ready\` comment when it's resolved.
-
-Please note that the PR will be closed after 21 days of inactivity from now. (But can be re-opened anytime later...)
-> $@"
-
-URL="$(jq -r '.issue.pull_request.url' "$GITHUB_EVENT_PATH")/reviews"
-set +x #GITHUB_TOKEN
-curl -s -o /dev/null \
- --data "$(jq --arg body "$MESSAGE" -n '{event: "REQUEST_CHANGES", body: $body}')" \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- --header 'content-type: application/json' \
- "$URL"
-
-curl -s -o /dev/null \
- -X POST \
- --data '{"labels": [ "pending" ]}' \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- "$(jq -r '.issue.url' "$GITHUB_EVENT_PATH")/labels"
-
diff --git a/.github/comment-commands/ready.sh b/.github/comment-commands/ready.sh
deleted file mode 100755
index 0abbc3e02a22..000000000000
--- a/.github/comment-commands/ready.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-#doc: Dismiss all the blocking reviews by github-actions bot
-MESSAGE="Blocking review request is removed."
-URL="$(jq -r '.issue.pull_request.url' "$GITHUB_EVENT_PATH")/reviews"
-set +x #GITHUB_TOKEN
-curl -s "$URL" |
- jq -r '.[] | [.user.login, .id] | @tsv' |
- grep github-actions |
- awk '{print $2}' |
- xargs -n1 -IISSUE_ID curl -s -o /dev/null \
- -X PUT \
- --data "$(jq --arg message "$MESSAGE" -n '{message: $message}')" \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- "$URL"/ISSUE_ID/dismissals
-
-curl -s -o /dev/null \
- -X DELETE \
- --header "authorization: Bearer $GITHUB_TOKEN" \
- "$(jq -r '.issue.url' "$GITHUB_EVENT_PATH")/labels/pending"
-
From 76440793170a4de55044e78ee2b987e9b98fb08b Mon Sep 17 00:00:00 2001
From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com>
Date: Wed, 11 Mar 2026 10:05:48 +0100
Subject: [PATCH 11/35] HDDS-14785. Remove PR comment commands (#9885)
(cherry picked from commit 8157d4f1a23f3099b1365740584a9777b3605108)
---
.github/ci.md | 7 ---
.github/comment-commands/debug.sh | 21 ---------
.github/comment-commands/help.sh | 27 -----------
.github/comment-commands/label.sh | 25 ----------
.github/comment-commands/retest.sh | 75 ------------------------------
.github/process-comment.sh | 56 ----------------------
.github/workflows/comments.yaml | 33 -------------
7 files changed, 244 deletions(-)
delete mode 100755 .github/comment-commands/debug.sh
delete mode 100755 .github/comment-commands/help.sh
delete mode 100755 .github/comment-commands/label.sh
delete mode 100755 .github/comment-commands/retest.sh
delete mode 100755 .github/process-comment.sh
delete mode 100644 .github/workflows/comments.yaml
diff --git a/.github/ci.md b/.github/ci.md
index 75b0ad38a9ea..f354c7b80d0c 100644
--- a/.github/ci.md
+++ b/.github/ci.md
@@ -76,13 +76,6 @@ If they don't match, it describes how to make the updates to include the changes
### close-stale-prs Workflow
[This](./workflows/close-stale-prs.yml) workflow is scheduled each night at midnight and uses the [actions/stale](https://github.com/actions/stale) to automatically manage inactive PRs. It marks PRs as stale after 21 days of inactivity and closes them 7 days later. If a stale PR receives any updates or comments, the stale label is automatically removed.
-### comment-commands Workflow
-[This](./workflows/comments.yaml) workflow is triggered each time a comment is added/edited to a PR. It checks to see if the body of the comment begins with one of the following strings and, if so, invokes the corresponding command.
-- /help : [Show](./comment-commands/help.sh) all the available comment commands
-- /label : [Add](./comment-commands/label.sh) new label to the issue: /label "label"
-- /retest : [Provide](./comment-commands/retest.sh) help on how to trigger new CI build
-
-
## Old/Deprecated Workflows
The following workflows no longer run but still exist on the [actions](https://github.com/apache/ozone/actions) page for historical reasons:
- [Build](https://github.com/apache/ozone/actions/workflows/main.yml)
diff --git a/.github/comment-commands/debug.sh b/.github/comment-commands/debug.sh
deleted file mode 100755
index 143b3ebf6d8c..000000000000
--- a/.github/comment-commands/debug.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-#doc: Show current event json to debug problems
-
-echo "\`\`\`"
-cat "$GITHUB_EVENT_PATH"
-echo "\`\`\`"
diff --git a/.github/comment-commands/help.sh b/.github/comment-commands/help.sh
deleted file mode 100755
index 2e9bb0a010b1..000000000000
--- a/.github/comment-commands/help.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-#doc: Show all the available comment commands
-DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
-echo "Available commands:"
-DOCTAG="#"
-DOCTAG="${DOCTAG}doc"
-for command in "$DIR"/*.sh; do
- COMMAND_NAME="$(basename "$command" | sed 's/\.sh$//')"
- if [ "$COMMAND_NAME" != "debug" ]; then
- printf " * /**%s** %s\n" "$COMMAND_NAME" "$(grep $DOCTAG "$command" | sed "s/$DOCTAG//g")"
- fi
-done
diff --git a/.github/comment-commands/label.sh b/.github/comment-commands/label.sh
deleted file mode 100755
index e8e0390dfd61..000000000000
--- a/.github/comment-commands/label.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-#doc: add new label to the issue: `/label