This is an automated email from the ASF dual-hosted git repository.

zhouyuan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 1e4e9f3a5a [VL] Split CI spark unit tests and TPC-DS random-kill job 
across parallel runners (#12624)
1e4e9f3a5a is described below

commit 1e4e9f3a5a19c57d9f45f2eb588b7cd3f6afcfee
Author: Yuan <[email protected]>
AuthorDate: Mon Jul 27 09:23:46 2026 -0700

    [VL] Split CI spark unit tests and TPC-DS random-kill job across parallel 
runners (#12624)
    
    * [VL] Split CI spark unit tests and TPC-DS random-kill job across parallel 
runners
    
    The Spark unit test jobs (spark-3.4 through spark-4.1) and the TPC-DS
    random-kill job were running on a single runner each, taking up to ~2 hours
    per job. After this the longest job is ~1 hour.
    
    Changes:
    - Split spark unit tests for 
spark34/spark35/spark35-scala213/spark40/spark41
      into 3 parallel runner groups using matrix strategy, partitioned by 
package
      prefix via -DwildcardSuites:
        - Group 1: org.apache.spark.sql.streaming, 
org.apache.spark.GlutenSortShuffleSuite,
                   org.apache.gluten
        - Group 2: org.apache.spark.sql.execution, 
org.apache.spark.sql.catalyst,
                   org.apache.spark.sql.errors, org.apache.spark.sql.extension
        - Group 3: org.apache.spark.sql.GlutenSQL*, 
org.apache.spark.sql.connector,
                   org.apache.spark.sql.sources, org.apache.spark.sql.hive,
                   org.apache.spark.sql.gluten, org.apache.spark.sql.shim
    - Split the slow-test jobs (extended + hive) for each spark version into 2
      parallel runners.
    - Split tpc-test-ubuntu-randomkill into 3 parallel runners using the 
built-in
      --shard=N/M option in gluten-it, each runner handling ~33 of the 99 TPC-DS
      queries.
    
    Note: scalatest-maven-plugin uses -DwildcardSuites (not -Dtest) for suite
    selection via package prefix.
    
    Signed-off-by: Yuan <[email protected]>
    
    * fix for enhanced branch
    
    Signed-off-by: Yuan <[email protected]>
    
    ---------
    
    Signed-off-by: Yuan <[email protected]>
---
 .github/workflows/velox_backend_enhanced.yml       |  27 ++-
 .github/workflows/velox_backend_x86.yml            | 256 +++++++++++++++------
 .../spark/memory/GlobalOffHeapMemoryTarget.scala   |   2 +-
 3 files changed, 205 insertions(+), 80 deletions(-)

diff --git a/.github/workflows/velox_backend_enhanced.yml 
b/.github/workflows/velox_backend_enhanced.yml
index a9e31d41f5..c51e9b777c 100644
--- a/.github/workflows/velox_backend_enhanced.yml
+++ b/.github/workflows/velox_backend_enhanced.yml
@@ -200,6 +200,10 @@ jobs:
   spark-test-spark40:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        group: [1, 2, 3]
     env:
       SPARK_TESTING: true
     container: apache/gluten:centos-8-jdk17
@@ -221,7 +225,7 @@ jobs:
         run: |
           rm -rf /opt/shims/spark40
           bash .github/workflows/util/install-spark-resources.sh 4.0
-      - name: Build and Run unit test for Spark 4.0.0 with scala-2.13 (other 
tests)
+      - name: Build and Run unit test for Spark 4.0.0 with scala-2.13 (other 
tests, group ${{ matrix.group }})
         run: |
           cd $GITHUB_WORKSPACE/
           export SPARK_SCALA_VERSION=2.13
@@ -229,20 +233,31 @@ jobs:
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta \
-          -Pspark-ut 
-DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" \
-          
-DtagsToExclude=org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.SkipTest
+          
TAGS_EXCLUDE="org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.SkipTest"
+          if [ "${{ matrix.group }}" = "1" ]; then
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta \
+            -Pspark-ut 
-DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.streaming,org.apache.spark.GlutenSortShuffleSuite,org.apache.gluten"
+          elif [ "${{ matrix.group }}" = "2" ]; then
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta \
+            -Pspark-ut 
-DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.execution,org.apache.spark.sql.catalyst,org.apache.spark.sql.errors,org.apache.spark.sql.extension"
+          else
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta \
+            -Pspark-ut 
-DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.GlutenSQL,org.apache.spark.sql.Gluten,org.apache.spark.sql.connector,org.apache.spark.sql.sources,org.apache.spark.sql.hive,org.apache.spark.sql.gluten,org.apache.spark.sql.shim"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark40-group${{ matrix.group }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark40-group${{ matrix.group }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
diff --git a/.github/workflows/velox_backend_x86.yml 
b/.github/workflows/velox_backend_x86.yml
index 9b13dbd069..d6fa89edf1 100644
--- a/.github/workflows/velox_backend_x86.yml
+++ b/.github/workflows/velox_backend_x86.yml
@@ -472,6 +472,7 @@ jobs:
       fail-fast: false
       matrix:
         spark: [ "spark-3.3" ]
+        shard: [ 1, 2, 3 ]
     runs-on: ubuntu-22.04
     steps:
       - name: Maximize build disk space
@@ -501,17 +502,17 @@ jobs:
           echo "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $GITHUB_ENV
       - name: Build for Spark ${{ matrix.spark }}
         run: |
-          cd $GITHUB_WORKSPACE/ 
+          cd $GITHUB_WORKSPACE/
           $MVN_CMD clean install -P${{ matrix.spark }} -Pbackends-velox 
-DskipTests
           cd $GITHUB_WORKSPACE/tools/gluten-it
           $GITHUB_WORKSPACE/$MVN_CMD clean install -P${{ matrix.spark }}
           GLUTEN_IT_JVM_ARGS=-Xmx6G sbin/gluten-it.sh data-gen-only --local 
--benchmark-type=ds -s=30.0 --threads=12
-      - name: TPC-DS SF30.0 Parquet local spark3.3 random kill tasks
+      - name: TPC-DS SF30.0 Parquet local spark3.3 random kill tasks (shard 
${{ matrix.shard }}/3)
         run: |
           cd tools/gluten-it \
           && GLUTEN_IT_JVM_ARGS=-Xmx6G sbin/gluten-it.sh queries \
             --local --preset=velox --benchmark-type=ds --error-on-memleak 
-s=30.0  --off-heap-size=8g --threads=12 --shuffle-partitions=72 --iterations=1 
\
-            --data-gen=skip  --random-kill-tasks --no-session-reuse
+            --data-gen=skip  --random-kill-tasks --no-session-reuse 
--shard=${{ matrix.shard }}/3
 
   tpc-test-centos8-uniffle:
     needs: build-native-lib-centos-7
@@ -737,6 +738,10 @@ jobs:
   spark-test-spark34:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        group: [1, 2, 3]
     container: apache/gluten:centos-8-jdk8
     steps:
       - uses: actions/checkout@v4
@@ -752,7 +757,7 @@ jobs:
           pip3 install setuptools==77.0.3 && \
           pip3 install pyspark==3.4.4 cython && \
           pip3 install pandas==2.2.3 pyarrow==20.0.0
-      - name: Build and Run unit test for Spark 3.4.4 (other tests)
+      - name: Build and Run unit test for Spark 3.4.4 (other tests, group ${{ 
matrix.group }})
         run: |
           cd $GITHUB_WORKSPACE/
           export SPARK_SCALA_VERSION=2.12
@@ -761,21 +766,31 @@ jobs:
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
           export SPARK_HOME=/opt/shims/spark34/spark_home/
-          ls -l $SPARK_HOME
-          $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox -Piceberg 
-Piceberg-test -Pdelta -Phudi -Ppaimon -Pspark-ut \
-          
-DtagsToExclude=org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest
 \
-          -DargLine="-Dspark.test.home=$SPARK_HOME"
+          
TAGS_EXCLUDE="org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest"
+          if [ "${{ matrix.group }}" = "1" ]; then
+            $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox 
-Piceberg -Piceberg-test -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DtagsToExclude="$TAGS_EXCLUDE" 
-DargLine="-Dspark.test.home=$SPARK_HOME" \
+            
-DwildcardSuites="org.apache.spark.sql.streaming,org.apache.spark.GlutenSortShuffleSuite,org.apache.gluten"
+          elif [ "${{ matrix.group }}" = "2" ]; then
+            $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox 
-Piceberg -Piceberg-test -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DtagsToExclude="$TAGS_EXCLUDE" 
-DargLine="-Dspark.test.home=$SPARK_HOME" \
+            
-DwildcardSuites="org.apache.spark.sql.execution,org.apache.spark.sql.catalyst,org.apache.spark.sql.errors,org.apache.spark.sql.extension"
+          else
+            $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox 
-Piceberg -Piceberg-test -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DtagsToExclude="$TAGS_EXCLUDE" 
-DargLine="-Dspark.test.home=$SPARK_HOME" \
+            
-DwildcardSuites="org.apache.spark.sql.GlutenSQL,org.apache.spark.sql.Gluten,org.apache.spark.sql.connector,org.apache.spark.sql.sources,org.apache.spark.sql.hive,org.apache.spark.sql.gluten,org.apache.spark.sql.shim"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark34-group${{ matrix.group }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark34-group${{ matrix.group }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -784,12 +799,16 @@ jobs:
         if: failure()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-golden-files
+          name: spark-test-spark34-group${{ matrix.group }}-golden-files
           path: /tmp/tpch-approved-plan/**
 
   spark-test-spark34-slow:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        suite: [extended, slow-hive]
     env: #TODO remove after image update
       LANG: C.UTF-8
       LC_ALL: C.UTF-8
@@ -805,7 +824,7 @@ jobs:
         run: |
           rm -rf /opt/shims/spark34
           bash .github/workflows/util/install-spark-resources.sh 3.4
-      - name: Build and Run unit test for Spark 3.4.4 (slow tests)
+      - name: Build and Run unit test for Spark 3.4.4 (slow tests, ${{ 
matrix.suite }})
         run: |
           cd $GITHUB_WORKSPACE/
           yum install -y java-17-openjdk-devel
@@ -813,24 +832,26 @@ jobs:
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
           export SPARK_HOME=/opt/shims/spark34/spark_home/
-          ls -l $SPARK_HOME
-          $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox -Piceberg 
-Pdelta -Phudi -Ppaimon -Pspark-ut \
-          -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest \
-          -DargLine="-Dspark.test.home=$SPARK_HOME"
-          $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox -Piceberg 
-Pdelta -Phudi -Ppaimon -Pspark-ut \
-          -DtagsToInclude=org.apache.spark.tags.SlowHiveTest \
-          -DargLine="-Dspark.test.home=$SPARK_HOME"
+          if [ "${{ matrix.suite }}" = "extended" ]; then
+            $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest \
+            -DargLine="-Dspark.test.home=$SPARK_HOME"
+          else
+            $MVN_CMD clean test -Pspark-3.4 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DtagsToInclude=org.apache.spark.tags.SlowHiveTest \
+            -DargLine="-Dspark.test.home=$SPARK_HOME"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark34-slow-${{ matrix.suite }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark34-slow-${{ matrix.suite }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -839,6 +860,10 @@ jobs:
   spark-test-spark35:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        group: [1, 2, 3]
     env:
       SPARK_TESTING: true
     container: apache/gluten:centos-8-jdk8
@@ -856,7 +881,7 @@ jobs:
           pip3 install setuptools==77.0.3 && \
           pip3 install pyspark==3.5.5 cython && \
           pip3 install pandas==2.2.3 pyarrow==20.0.0
-      - name: Build and Run unit test for Spark 3.5.5 (other tests)
+      - name: Build and Run unit test for Spark 3.5.5 (other tests, group ${{ 
matrix.group }})
         run: |
           cd $GITHUB_WORKSPACE/
           export SPARK_SCALA_VERSION=2.12
@@ -864,20 +889,31 @@ jobs:
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox -Piceberg 
-Pdelta -Phudi -Ppaimon -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" \
-          
-DtagsToExclude=org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest
+          
TAGS_EXCLUDE="org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest"
+          if [ "${{ matrix.group }}" = "1" ]; then
+            $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.streaming,org.apache.spark.GlutenSortShuffleSuite,org.apache.gluten"
+          elif [ "${{ matrix.group }}" = "2" ]; then
+            $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.execution,org.apache.spark.sql.catalyst,org.apache.spark.sql.errors,org.apache.spark.sql.extension"
+          else
+            $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.GlutenSQL,org.apache.spark.sql.Gluten,org.apache.spark.sql.connector,org.apache.spark.sql.sources,org.apache.spark.sql.hive,org.apache.spark.sql.gluten,org.apache.spark.sql.shim"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark35-group${{ matrix.group }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark35-group${{ matrix.group }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -886,12 +922,16 @@ jobs:
         if: failure()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-golden-files
+          name: spark-test-spark35-group${{ matrix.group }}-golden-files
           path: /tmp/tpch-approved-plan/**
 
   spark-test-spark35-scala213:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        group: [1, 2, 3]
     env:
       SPARK_TESTING: true
     container: apache/gluten:centos-8-jdk8
@@ -909,7 +949,7 @@ jobs:
           pip3 install setuptools==77.0.3 && \
           pip3 install pyspark==3.5.5 cython && \
           pip3 install pandas==2.2.3 pyarrow==20.0.0
-      - name: Build and Run unit test for Spark 3.5.5 with scala-2.13 (other 
tests)
+      - name: Build and Run unit test for Spark 3.5.5 with scala-2.13 (other 
tests, group ${{ matrix.group }})
         run: |
           cd $GITHUB_WORKSPACE/
           export SPARK_SCALA_VERSION=2.13
@@ -917,20 +957,31 @@ jobs:
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-3.5 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg \
-          -Pdelta -Pspark-ut 
-DargLine="-Dspark.test.home=/opt/shims/spark35-scala-2.13/spark_home/" \
-          
-DtagsToExclude=org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest
+          
TAGS_EXCLUDE="org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest"
+          if [ "${{ matrix.group }}" = "1" ]; then
+            $MVN_CMD clean test -Pspark-3.5 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta -Pspark-ut \
+            
-DargLine="-Dspark.test.home=/opt/shims/spark35-scala-2.13/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.streaming,org.apache.spark.GlutenSortShuffleSuite,org.apache.gluten"
+          elif [ "${{ matrix.group }}" = "2" ]; then
+            $MVN_CMD clean test -Pspark-3.5 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta -Pspark-ut \
+            
-DargLine="-Dspark.test.home=/opt/shims/spark35-scala-2.13/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.execution,org.apache.spark.sql.catalyst,org.apache.spark.sql.errors,org.apache.spark.sql.extension"
+          else
+            $MVN_CMD clean test -Pspark-3.5 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Piceberg -Pdelta -Pspark-ut \
+            
-DargLine="-Dspark.test.home=/opt/shims/spark35-scala-2.13/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.GlutenSQL,org.apache.spark.sql.Gluten,org.apache.spark.sql.connector,org.apache.spark.sql.sources,org.apache.spark.sql.hive,org.apache.spark.sql.gluten,org.apache.spark.sql.shim"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark35-scala213-group${{ matrix.group }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark35-scala213-group${{ matrix.group }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -939,6 +990,10 @@ jobs:
   spark-test-spark35-slow:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        suite: [extended, slow-hive]
     env:
       SPARK_TESTING: true
       LANG: C.UTF-8 #TODO remove after image update
@@ -955,30 +1010,33 @@ jobs:
         run: |
           rm -rf /opt/shims/spark35
           bash .github/workflows/util/install-spark-resources.sh 3.5
-      - name: Build and Run unit test for Spark 3.5.5 (slow tests)
+      - name: Build and Run unit test for Spark 3.5.5 (slow tests, ${{ 
matrix.suite }})
         run: |
           cd $GITHUB_WORKSPACE/
           yum install -y java-17-openjdk-devel
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox -Piceberg 
-Pdelta -Phudi -Ppaimon -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" \
-          -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest
-          $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox -Piceberg 
-Pdelta -Phudi -Ppaimon -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" \
-          -DtagsToInclude=org.apache.spark.tags.SlowHiveTest
+          if [ "${{ matrix.suite }}" = "extended" ]; then
+            $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" \
+            -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest
+          else
+            $MVN_CMD clean test -Pspark-3.5 -Pjava-17 -Pbackends-velox 
-Piceberg -Pdelta -Phudi -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark35/spark_home/" \
+            -DtagsToInclude=org.apache.spark.tags.SlowHiveTest
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark35-slow-${{ matrix.suite }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark35-slow-${{ matrix.suite }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -1130,6 +1188,10 @@ jobs:
   spark-test-spark40:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        group: [1, 2, 3]
     env:
       SPARK_TESTING: true
     container: apache/gluten:centos-8-jdk17
@@ -1151,7 +1213,7 @@ jobs:
         run: |
           rm -rf /opt/shims/spark40
           bash .github/workflows/util/install-spark-resources.sh 4.0
-      - name: Build and Run unit test for Spark 4.0.0 with scala-2.13 (other 
tests)
+      - name: Build and Run unit test for Spark 4.0.0 with scala-2.13 (other 
tests, group ${{ matrix.group }})
         run: |
           cd $GITHUB_WORKSPACE/
           export SPARK_SCALA_VERSION=2.13
@@ -1159,20 +1221,31 @@ jobs:
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Ppaimon \
-          -Pspark-ut 
-DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" \
-          
-DtagsToExclude=org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest
+          
TAGS_EXCLUDE="org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest"
+          if [ "${{ matrix.group }}" = "1" ]; then
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.streaming,org.apache.spark.GlutenSortShuffleSuite,org.apache.gluten"
+          elif [ "${{ matrix.group }}" = "2" ]; then
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.execution,org.apache.spark.sql.catalyst,org.apache.spark.sql.errors,org.apache.spark.sql.extension"
+          else
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.GlutenSQL,org.apache.spark.sql.Gluten,org.apache.spark.sql.connector,org.apache.spark.sql.sources,org.apache.spark.sql.hive,org.apache.spark.sql.gluten,org.apache.spark.sql.shim"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark40-group${{ matrix.group }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark40-group${{ matrix.group }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -1181,6 +1254,10 @@ jobs:
   spark-test-spark40-slow:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        suite: [extended, slow-hive]
     env:
       SPARK_TESTING: true
       LANG: C.UTF-8 #TODO remove after image update
@@ -1197,30 +1274,33 @@ jobs:
         run: |
           rm -rf /opt/shims/spark40
           bash .github/workflows/util/install-spark-resources.sh 4.0
-      - name: Build and Run unit test for Spark 4.0 (slow tests)
+      - name: Build and Run unit test for Spark 4.0 (slow tests, ${{ 
matrix.suite }})
         run: |
           cd $GITHUB_WORKSPACE/
           yum install -y java-17-openjdk-devel
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Ppaimon -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" \
-          -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest
-          $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" \
-          -DtagsToInclude=org.apache.spark.tags.SlowHiveTest
+          if [ "${{ matrix.suite }}" = "extended" ]; then
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Ppaimon -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" \
+            -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest
+          else
+            $MVN_CMD clean test -Pspark-4.0 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pdelta -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark40/spark_home/" \
+            -DtagsToInclude=org.apache.spark.tags.SlowHiveTest
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark40-slow-${{ matrix.suite }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark40-slow-${{ matrix.suite }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -1229,6 +1309,14 @@ jobs:
   spark-test-spark41:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        # Split tests into 3 groups to run in parallel and cut the ~2h 
wall-clock time.
+        #   group1 – streaming tests
+        #   group2 – execution / catalyst / errors / extension tests
+        #   group3 – top-level sql, connector, sources, hive and remaining 
tests
+        group: [1, 2, 3]
     env:
       SPARK_TESTING: true
     container: apache/gluten:centos-9-jdk17
@@ -1252,7 +1340,7 @@ jobs:
         run: |
           rm -rf /opt/shims/spark41
           bash .github/workflows/util/install-spark-resources.sh 4.1
-      - name: Build and Run unit test for Spark 4.1.0 with scala-2.13 (other 
tests)
+      - name: Build and Run unit test for Spark 4.1.0 with scala-2.13 (other 
tests, group ${{ matrix.group }})
         run: |
           cd $GITHUB_WORKSPACE/
           export SPARK_SCALA_VERSION=2.13
@@ -1260,20 +1348,34 @@ jobs:
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox \
-          -Pspark-ut -Pdelta 
-DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" \
-          
-DtagsToExclude=org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest
+          
TAGS_EXCLUDE="org.apache.spark.tags.ExtendedSQLTest,org.apache.spark.tags.SlowHiveTest,org.apache.gluten.tags.UDFTest,org.apache.gluten.tags.EnhancedFeaturesTest,org.apache.gluten.tags.SkipTest"
+          if [ "${{ matrix.group }}" = "1" ]; then
+            # Group 1: streaming + gluten utils + top-level spark tests (~55 
classes)
+            $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut -Pdelta \
+            -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.streaming,org.apache.spark.GlutenSortShuffleSuite,org.apache.gluten"
+          elif [ "${{ matrix.group }}" = "2" ]; then
+            # Group 2: execution + catalyst + errors + extension tests (~140 
classes)
+            $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut -Pdelta \
+            -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.execution,org.apache.spark.sql.catalyst,org.apache.spark.sql.errors,org.apache.spark.sql.extension"
+          else
+            # Group 3: top-level sql, connector, sources, hive and remaining 
tests (~205 classes)
+            $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut -Pdelta \
+            -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" 
-DtagsToExclude="$TAGS_EXCLUDE" \
+            
-DwildcardSuites="org.apache.spark.sql.GlutenSQL,org.apache.spark.sql.Gluten,org.apache.spark.sql.connector,org.apache.spark.sql.sources,org.apache.spark.sql.hive,org.apache.spark.sql.gluten,org.apache.spark.sql.shim"
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark41-group${{ matrix.group }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark41-group${{ matrix.group }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
@@ -1282,6 +1384,11 @@ jobs:
   spark-test-spark41-slow:
     needs: build-native-lib-centos-7
     runs-on: ubuntu-22.04
+    strategy:
+      fail-fast: false
+      matrix:
+        # Run ExtendedSQLTest and SlowHiveTest in parallel instead of 
sequentially.
+        suite: [extended, slow-hive]
     env:
       SPARK_TESTING: true
       LANG: C.UTF-8 #TODO remove after image update
@@ -1298,30 +1405,33 @@ jobs:
         run: |
           rm -rf /opt/shims/spark41
           bash .github/workflows/util/install-spark-resources.sh 4.1
-      - name: Build and Run unit test for Spark 4.1 (slow tests)
+      - name: Build and Run unit test for Spark 4.1 (slow tests, ${{ 
matrix.suite }})
         run: |
           cd $GITHUB_WORKSPACE/
           yum install -y java-17-openjdk-devel
           export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
           export PATH=$JAVA_HOME/bin:$PATH
           java -version
-          $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" \
-          -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest
-          $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut \
-          -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" \
-          -DtagsToInclude=org.apache.spark.tags.SlowHiveTest
+          if [ "${{ matrix.suite }}" = "extended" ]; then
+            $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" \
+            -DtagsToInclude=org.apache.spark.tags.ExtendedSQLTest
+          else
+            $MVN_CMD clean test -Pspark-4.1 -Pscala-2.13 -Pjava-17 
-Pbackends-velox -Pspark-ut \
+            -DargLine="-Dspark.test.home=/opt/shims/spark41/spark_home/" \
+            -DtagsToInclude=org.apache.spark.tags.SlowHiveTest
+          fi
       - name: Upload test report
         if: always()
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-report
+          name: spark-test-spark41-slow-${{ matrix.suite }}-report
           path: '**/surefire-reports/TEST-*.xml'
       - name: Upload unit tests log files
         if: ${{ !success() }}
         uses: actions/upload-artifact@v4
         with:
-          name: ${{ github.job }}-test-log
+          name: spark-test-spark41-slow-${{ matrix.suite }}-test-log
           path: |
             **/target/*.log
             **/gluten-ut/**/hs_err_*.log
diff --git 
a/gluten-core/src/main/scala/org/apache/spark/memory/GlobalOffHeapMemoryTarget.scala
 
b/gluten-core/src/main/scala/org/apache/spark/memory/GlobalOffHeapMemoryTarget.scala
index ab73aa40fa..96749057fe 100644
--- 
a/gluten-core/src/main/scala/org/apache/spark/memory/GlobalOffHeapMemoryTarget.scala
+++ 
b/gluten-core/src/main/scala/org/apache/spark/memory/GlobalOffHeapMemoryTarget.scala
@@ -35,7 +35,7 @@ class GlobalOffHeapMemoryTarget private[memory]
   with Logging {
   private val targetName = MemoryTargetUtil.toUniqueName("GlobalOffHeap")
   private val recorder: MemoryUsageRecorder = new SimpleMemoryUsageRecorder()
-  private val mode: MemoryMode = {
+  private def mode: MemoryMode = {
     val enabled = Option(SparkEnv.get)
       
.map(_.conf.getBoolean(GlutenCoreConfig.DYNAMIC_OFFHEAP_SIZING_ENABLED.key, 
false))
       .getOrElse(false)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to