Commit ab5b08c266c for mysql.org

commit ab5b08c266cb38d8b14095950ae07bcb9a2482dc
Author: Ridha Chahed <ridha.chahed@oracle.com>
Date:   Thu Sep 10 13:48:13 2026 +0200

    Bug#39980115: Improve MTR diagnostics

    Raise the failure cap for combined MTR jobs and preserve diagnostics
    from both initial and rerun CTest executions. Retain relevant artifacts
    for longer, including when a job is cancelled. Mark the million-row FTS
    workload as a big test so standard pull-request shards do not spend
    their runtime budget on it.

    Change-Id: Ic0bef35051e62f4510d9ce062194f5129e168dc4

diff --git a/.github/workflows/mtr.yml b/.github/workflows/mtr.yml
index 35d95eb4373..b60935c5734 100644
--- a/.github/workflows/mtr.yml
+++ b/.github/workflows/mtr.yml
@@ -113,7 +113,7 @@ jobs:
             --report-unstable-tests
             --retry=3
             --retry-failure=2
-            --max-test-fail=3
+            --max-test-fail=50
             "--suite=${MTR_SUITES}"
           )
           ../trusted/scripts/ci/mtr.sh "${args[@]}"
@@ -148,13 +148,53 @@ jobs:
             exit "$ctest_result"
           fi

+          initial_failures=build/mysql-test/var/ctest-initial-failures.log
+          cp "$failed_tests" "$initial_failures"
+          initial_names=build/mysql-test/var/ctest-initial-failure-names.log
+          sed 's/^[^:]*://' "$initial_failures" | sort -u > "$initial_names"
           echo "::warning::Retrying only the CTest failures from the initial run"
+          set +e
           ctest "${ctest_args[@]}" \
             --rerun-failed \
             --repeat until-pass:2 \
             --output-log build/mysql-test/var/ctest-rerun.log
+          rerun_result=$?
+          set -e
+
+          persistent_names=build/mysql-test/var/ctest-persistent-failures.log
+          recovered_names=build/mysql-test/var/ctest-recovered-failures.log
+          : > "$persistent_names"
+          if (( rerun_result != 0 )) && [[ -s "$failed_tests" ]]; then
+            sed 's/^[^:]*://' "$failed_tests" | sort -u > "$persistent_names"
+          fi
+          comm -23 "$initial_names" "$persistent_names" > "$recovered_names"
+
+          {
+            echo "### CTest retry summary (${{ matrix.shard }})"
+            echo
+            echo "Initial failures:"
+            sed 's/^/- /' "$initial_names"
+            echo
+            echo "Recovered on retry:"
+            if [[ -s "$recovered_names" ]]; then
+              sed 's/^/- /' "$recovered_names"
+            else
+              echo "- None"
+            fi
+            echo
+            echo "Persistent failures:"
+            if [[ -s "$persistent_names" ]]; then
+              sed 's/^/- /' "$persistent_names"
+            elif (( rerun_result == 0 )); then
+              echo "- None"
+            else
+              echo "- CTest did not produce a persistent-failure list."
+            fi
+          } >> "$GITHUB_STEP_SUMMARY"
+
+          exit "$rerun_result"
       - name: Publish test report
-        if: ${{ always() && !cancelled() }}
+        if: ${{ always() }}
         # The privileged reporter never downloads or executes this untrusted artifact.
         uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         with:
@@ -162,4 +202,9 @@ jobs:
           path: |
             source/build/mysql-test/var/log/
             source/build/mysql-test/var/ctest*.log
-          retention-days: 5
+            source/build/mysql-test/var/**/log/**
+            source/build/mysql-test/var/**/core*
+            source/build/mysql-test/var/**/mysqld*.err
+            source/build/Testing/Temporary/
+          if-no-files-found: ignore
+          retention-days: 14
diff --git a/mysql-test/suite/innodb_fts/t/articles_fts_words.test b/mysql-test/suite/innodb_fts/t/articles_fts_words.test
index 00197e75c42..6b857e7249f 100644
--- a/mysql-test/suite/innodb_fts/t/articles_fts_words.test
+++ b/mysql-test/suite/innodb_fts/t/articles_fts_words.test
@@ -1,3 +1,5 @@
+--source include/big_test.inc
+
 --let $ROUNDS=20
 CREATE TABLE articles (
   id INT UNSIGNED NOT NULL PRIMARY KEY,