From d623d5e960c4e42005005916515ee3141e8f8c37 Mon Sep 17 00:00:00 2001 From: Roshan Kanwar Date: Mon, 20 May 2024 09:07:24 +0000 Subject: [PATCH] Ensure accurate metadata inconsistency checks This commit addresses metadata inconsistency checks, ensuring they occur in the appropriate places. Additionally, steps have been added to verify the existence of the inconsistency checker function before performing the metadata checks. Task: BABEL-4139 Signed-off-by: Roshan Kanwar --- .../check-babelfish-inconsistency/action.yml | 28 +++++++++++++++++-- .../setup-base-version/action.yml | 9 +++++- .github/workflows/major-version-upgrade.yml | 5 ++-- .../workflows/singledb-version-upgrade.yml | 3 +- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/.github/composite-actions/check-babelfish-inconsistency/action.yml b/.github/composite-actions/check-babelfish-inconsistency/action.yml index 3d6cc894083..4d0ff67f901 100644 --- a/.github/composite-actions/check-babelfish-inconsistency/action.yml +++ b/.github/composite-actions/check-babelfish-inconsistency/action.yml @@ -3,9 +3,31 @@ description: Check for Babelfish metadata inconsistency before Major/Minor Versi runs: using: 'composite' steps: + - name: Check if Babelfish metadata inconsistency function exists + id: check-function-existence + run: | + function_exists=$(sqlcmd -S localhost -U jdbc_user -P 12345678 -Q " + SELECT CASE WHEN COUNT(*) > 0 THEN 'exists' ELSE 'not_exists' END + FROM pg_proc + WHERE proname = 'check_for_inconsistent_metadata'; + GO" | grep 'exists') + if [[ -z "$function_exists" ]]; then + function_exists="not_exists" + fi + echo "babelfish_metadata_function_exists=$function_exists" >> "$GITHUB_OUTPUT" + shell: bash + - name: Check Babelfish metadata inconsistency - id: check-babelfish-inconsistency + if: always() && steps.check-function-existence.outputs.babelfish_metadata_function_exists == 'exists' + id: check-babelfish-metadata run: | - output=$(sqlcmd -S localhost -U jdbc_user -P 12345678 -Q "SELECT sys.check_for_inconsistent_metadata() GO" | tail -n +2) - echo "check_result=$output" >> "$GITHUB_OUTPUT" + output=$(sqlcmd -S localhost -U jdbc_user -P 12345678 -Q "SELECT 'check_result=',sys.check_for_inconsistent_metadata() GO" | grep 'check_result' | sed 's/[[:blank:]]//g') + check_result=$(echo "$output" | grep -oP 'check_result=\K.+') + echo "$output" >> "$GITHUB_OUTPUT" + if [[ "$check_result" == "0" ]]; then + echo "Check Babelfish metadata inconsistency failed" + exit 1 + else + echo "Check Babelfish metadata inconsistency succeeded" + fi shell: bash diff --git a/.github/composite-actions/setup-base-version/action.yml b/.github/composite-actions/setup-base-version/action.yml index 8681600c62b..7e062b1c2b0 100644 --- a/.github/composite-actions/setup-base-version/action.yml +++ b/.github/composite-actions/setup-base-version/action.yml @@ -157,8 +157,15 @@ runs: python3 upgrade_validation.py shell: bash + - name: Run Babelfish metadata inconsistency check + id: check-babelfish-inconsistency + if: always() && steps.run-dependency-check.outcome == 'success' + uses: ./.github/composite-actions/check-babelfish-inconsistency + - name: Upload artifacts - if: always() && steps.run-dependency-check.outcome == 'failure' + if: | + always() && (steps.run-dependency-check.outcome == 'failure' + || steps.check-babelfish-inconsistency.outcome == 'failure') run: | mkdir -p ~/upgrade cp test/python/output/upgrade_validation/* ~/upgrade diff --git a/.github/workflows/major-version-upgrade.yml b/.github/workflows/major-version-upgrade.yml index 477c19a7f20..c51c4672d8e 100644 --- a/.github/workflows/major-version-upgrade.yml +++ b/.github/workflows/major-version-upgrade.yml @@ -120,9 +120,8 @@ jobs: - name: Run pg_upgrade id: run-pg_upgrade if: | - always() && steps.setup-new-datadir.outcome == 'success' - && steps.check-babelfish-inconsistency.outcome == 'success' - && steps.check-babelfish-inconsistency.outputs.check_result == 0 + always() && steps.setup-new-datadir.outcome == 'success' + && steps.check-babelfish-inconsistency.outcome == 'success' uses: ./.github/composite-actions/run-pg-upgrade - name: Run JDBC Tests diff --git a/.github/workflows/singledb-version-upgrade.yml b/.github/workflows/singledb-version-upgrade.yml index 0fd562d4309..e8a7eeab1f0 100644 --- a/.github/workflows/singledb-version-upgrade.yml +++ b/.github/workflows/singledb-version-upgrade.yml @@ -33,8 +33,7 @@ jobs: id: upgrade-and-verify if: | always() && steps.setup-base-version.outcome == 'success' - && steps.check-babelfish-inconsistency.outcome == 'success' - && steps.check-babelfish-inconsistency.outputs.check_result == 0 + && steps.check-babelfish-inconsistency.outcome == 'success' uses: ./.github/composite-actions/major-version-upgrade-util with: engine_branch: latest