From f95811f5eaa11be8f50e62951bf26d54375fbc03 Mon Sep 17 00:00:00 2001 From: Zita Dombi Date: Wed, 1 Apr 2026 17:09:22 +0200 Subject: [PATCH 1/4] HDDS-14821. Version specific data validation in rolling-upgrade suite --- .../dist/src/main/compose/upgrade/test.sh | 4 +- .../callbacks/common/callback.sh | 34 ++++++++ .../upgrades/rolling-upgrade/driver.sh | 78 +++++++++++-------- 3 files changed, 83 insertions(+), 33 deletions(-) diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/test.sh b/hadoop-ozone/dist/src/main/compose/upgrade/test.sh index 014d1ba81e21..149528322fc0 100755 --- a/hadoop-ozone/dist/src/main/compose/upgrade/test.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/test.sh @@ -33,7 +33,7 @@ RESULT_DIR="$ALL_RESULT_DIR" create_results_dir # This is the version of Ozone that should use the runner image to run the # code that was built. Other versions will pull images from docker hub. -run_test ha non-rolling-upgrade 2.1.0 "$OZONE_CURRENT_VERSION" +#run_test ha non-rolling-upgrade 2.1.0 "$OZONE_CURRENT_VERSION" # run_test ha non-rolling-upgrade 2.0.0 "$OZONE_CURRENT_VERSION" #run_test non-ha non-rolling-upgrade 1.4.1 "$OZONE_CURRENT_VERSION" #run_test ha non-rolling-upgrade 1.4.1 "$OZONE_CURRENT_VERSION" @@ -43,7 +43,7 @@ run_test ha non-rolling-upgrade 2.1.0 "$OZONE_CURRENT_VERSION" # run_test om-ha non-rolling-upgrade 1.1.0 "$OZONE_CURRENT_VERSION" # Rolling upgrade test, commented out for now -# run_test ha rolling-upgrade "$OZONE_CURRENT_VERSION" "$OZONE_CURRENT_VERSION" + run_test ha rolling-upgrade "$OZONE_CURRENT_VERSION" "$OZONE_CURRENT_VERSION" generate_report "upgrade" "$ALL_RESULT_DIR" diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh index 5160b4ef384b..048a83b20408 100644 --- a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh @@ -26,3 +26,37 @@ before_service_restart() { after_service_restart() { validate "generate-${SERVICE}" } + +with_old_version() { + execute_robot_test "$SCM" -N "${OUTPUT_NAME}-check-finalization" --include finalized upgrade/check-finalization.robot + generate old1 + validate old1 +} + +with_this_version_pre_finalized() { + # No check for pre-finalized status here, because the release may not have + # added layout features to OM or HDDS. + validate old1 + + generate new1 + validate new1 +} + +with_old_version_downgraded() { + execute_robot_test "$SCM" -N "${OUTPUT_NAME}-check-finalization" --include finalized upgrade/check-finalization.robot + validate old1 + validate new1 + + generate old2 + validate old2 +} + +with_this_version_finalized() { + execute_robot_test "$SCM" -N "${OUTPUT_NAME}-check-finalization" --include finalized upgrade/check-finalization.robot + validate old1 + validate new1 + validate old2 + + generate new2 + validate new2 +} diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh index 73663dc53614..88c604a40602 100755 --- a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh @@ -37,8 +37,9 @@ source "$TEST_DIR"/testlib.sh # Restart one service with the target image. rolling_restart_service() { SERVICE="$1" + local target_image="$2" - echo "--- RESTARTING ${SERVICE} WITH IMAGE ${OZONE_UPGRADE_TO} ---" + echo "--- RESTARTING ${SERVICE} WITH IMAGE ${target_image} ---" # Stop service stop_containers "${SERVICE}" @@ -60,8 +61,8 @@ rolling_restart_service() { callback before_service_restart fi - # Restart service with new image. - prepare_for_image "${OZONE_UPGRADE_TO}" + # Restart service with the requested image. + prepare_for_image "${target_image}" create_containers "${SERVICE}" # The data generation/validation is doing S3 API tests, so skip it in case the S3 gateway is updated @@ -84,49 +85,64 @@ rolling_restart_service() { esac } +rolling_restart_all_services() { + local stage_prefix="$1" + local target_image="$2" + local s + + # SCMs first + for s in scm2 scm1 scm3; do + OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-${stage_prefix}-${s}" + rolling_restart_service "$s" "${target_image}" + done + + # Recon + OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-${stage_prefix}-recon" + rolling_restart_service "recon" "${target_image}" + + # DNs + for s in dn1 dn2 dn3 dn4 dn5; do + OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-${stage_prefix}-${s}" + rolling_restart_service "$s" "${target_image}" + done + + for s in om1 om2 om3; do + OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-${stage_prefix}-${s}" + rolling_restart_service "$s" "${target_image}" + done + + # S3 Gateway + OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-${stage_prefix}-s3g" + rolling_restart_service "s3g" "${target_image}" +} + echo "--- SETTING UP OLD VERSION $OZONE_UPGRADE_FROM ---" OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-1-original" -export OM_HA_ARGS='--' prepare_for_image "$OZONE_UPGRADE_FROM" echo "--- RUNNING WITH OLD VERSION $OZONE_UPGRADE_FROM ---" start_docker_env -# TODO Add old data generation +callback with_old_version echo "--- ROLLING UPGRADE TO $OZONE_UPGRADE_TO PRE-FINALIZED ---" +rolling_restart_all_services "2-upgrade" "$OZONE_UPGRADE_TO" -# SCMs first -for s in scm2 scm1 scm3; do - OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-2-${s}" - rolling_restart_service "$s" "$OZONE_UPGRADE_TO" -done - -# Recon -OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-2-recon" -rolling_restart_service "recon" "$OZONE_UPGRADE_TO" +OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-2-pre-finalized" +callback with_this_version_pre_finalized -# DNs -for s in dn1 dn2 dn3 dn4 dn5; do - OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-2-${s}" - rolling_restart_service "$s" "$OZONE_UPGRADE_TO" -done +echo "--- ROLLING DOWNGRADE TO $OZONE_UPGRADE_FROM ---" +rolling_restart_all_services "3-downgrade" "$OZONE_UPGRADE_FROM" -for s in om1 om2 om3; do - OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-2-${s}" - rolling_restart_service "$s" "$OZONE_UPGRADE_TO" -done +OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-3-downgraded" +callback with_old_version_downgraded -# S3 Gateway -OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-2-s3g" -rolling_restart_service "s3g" "$OZONE_UPGRADE_TO" - -# TODO Add downgrade scenario +echo "--- ROLLING UPGRADE TO $OZONE_UPGRADE_TO ---" +rolling_restart_all_services "4-upgrade" "$OZONE_UPGRADE_TO" echo "--- RUNNING WITH NEW VERSION $OZONE_UPGRADE_TO FINALIZED ---" -OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-3-finalized" - -# TODO Add validation for pre-finalized state +OUTPUT_NAME="${OZONE_UPGRADE_FROM}-${OZONE_UPGRADE_TO}-5-finalized" # Sends commands to finalize OM and SCM. execute_robot_test "$SCM" -N "${OUTPUT_NAME}-finalize" upgrade/finalize.robot +callback with_this_version_finalized From 16cb0a4274f17a0a3bff95d8f52c9f0385df1bb4 Mon Sep 17 00:00:00 2001 From: Zita Dombi Date: Thu, 2 Apr 2026 07:24:06 +0200 Subject: [PATCH 2/4] Use new name for volumes/buckets in each upgrade scenario --- .../upgrades/rolling-upgrade/callbacks/common/callback.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh index 048a83b20408..f0ca1f8a0f3b 100644 --- a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh @@ -20,11 +20,11 @@ source "$TEST_DIR"/testlib.sh ### CALLBACKS ### before_service_restart() { - generate "generate-${SERVICE}" + generate "generate-${OUTPUT_NAME}" } after_service_restart() { - validate "generate-${SERVICE}" + validate "generate-${OUTPUT_NAME}" } with_old_version() { From 19778d688c9455b78f441f93ce50b9154cbb061d Mon Sep 17 00:00:00 2001 From: Zita Dombi Date: Thu, 2 Apr 2026 08:06:41 +0200 Subject: [PATCH 3/4] Adjust prefix for generated data --- .../upgrades/rolling-upgrade/callbacks/common/callback.sh | 4 ++-- .../main/compose/upgrade/upgrades/rolling-upgrade/driver.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh index f0ca1f8a0f3b..c31b361641ed 100644 --- a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/callbacks/common/callback.sh @@ -20,11 +20,11 @@ source "$TEST_DIR"/testlib.sh ### CALLBACKS ### before_service_restart() { - generate "generate-${OUTPUT_NAME}" + generate "generate-${SERVICE}-${STAGE_PREFIX}" } after_service_restart() { - validate "generate-${OUTPUT_NAME}" + validate "generate-${SERVICE}-${STAGE_PREFIX}" } with_old_version() { diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh index 88c604a40602..6ccb4a87906e 100755 --- a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/rolling-upgrade/driver.sh @@ -86,7 +86,7 @@ rolling_restart_service() { } rolling_restart_all_services() { - local stage_prefix="$1" + STAGE_PREFIX="$1" local target_image="$2" local s From ff4b09138af5831f70b4e9dc5fe23413fa6b6158 Mon Sep 17 00:00:00 2001 From: Zita Dombi Date: Fri, 3 Apr 2026 00:08:11 +0200 Subject: [PATCH 4/4] Comment out test run --- hadoop-ozone/dist/src/main/compose/upgrade/test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hadoop-ozone/dist/src/main/compose/upgrade/test.sh b/hadoop-ozone/dist/src/main/compose/upgrade/test.sh index 149528322fc0..014d1ba81e21 100755 --- a/hadoop-ozone/dist/src/main/compose/upgrade/test.sh +++ b/hadoop-ozone/dist/src/main/compose/upgrade/test.sh @@ -33,7 +33,7 @@ RESULT_DIR="$ALL_RESULT_DIR" create_results_dir # This is the version of Ozone that should use the runner image to run the # code that was built. Other versions will pull images from docker hub. -#run_test ha non-rolling-upgrade 2.1.0 "$OZONE_CURRENT_VERSION" +run_test ha non-rolling-upgrade 2.1.0 "$OZONE_CURRENT_VERSION" # run_test ha non-rolling-upgrade 2.0.0 "$OZONE_CURRENT_VERSION" #run_test non-ha non-rolling-upgrade 1.4.1 "$OZONE_CURRENT_VERSION" #run_test ha non-rolling-upgrade 1.4.1 "$OZONE_CURRENT_VERSION" @@ -43,7 +43,7 @@ RESULT_DIR="$ALL_RESULT_DIR" create_results_dir # run_test om-ha non-rolling-upgrade 1.1.0 "$OZONE_CURRENT_VERSION" # Rolling upgrade test, commented out for now - run_test ha rolling-upgrade "$OZONE_CURRENT_VERSION" "$OZONE_CURRENT_VERSION" +# run_test ha rolling-upgrade "$OZONE_CURRENT_VERSION" "$OZONE_CURRENT_VERSION" generate_report "upgrade" "$ALL_RESULT_DIR"