@@ -141,6 +141,7 @@ jobs:
141141 - {spark-short: '3.4', spark-full: '3.4.3', java: 11, scan-impl: 'auto'}
142142 - {spark-short: '3.5', spark-full: '3.5.8', java: 11, scan-impl: 'auto'}
143143 - {spark-short: '4.0', spark-full: '4.0.2', java: 17, scan-impl: 'auto'}
144+ - {spark-short: '4.0', spark-full: '4.0.2', java: 21, scan-impl: 'auto'}
144145 fail-fast : false
145146 name : spark-sql-${{ matrix.config.scan-impl }}-${{ matrix.module.name }}/spark-${{ matrix.config.spark-full }}
146147 runs-on : ${{ matrix.os }}
@@ -175,6 +176,14 @@ jobs:
175176 fi
176177 env :
177178 LC_ALL : " C.UTF-8"
179+ # Mirror Spark's own JDK 21 / 25 CI workaround. apache/spark's
180+ # build_java21.yml and build_java25.yml set this same env var to
181+ # process-isolate the V1/V2 Parquet and Orc source suites because
182+ # they exhibit cross-suite resource interactions (file-stream and
183+ # thread leaks) under the newer JDKs. project/SparkBuild.scala
184+ # reads DEDICATED_JVM_SBT_TESTS and forks a separate JVM per
185+ # listed suite. Empty value is a safe no-op.
186+ DEDICATED_JVM_SBT_TESTS : ${{ matrix.config.spark-short == '4.0' && 'org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatV1Suite,org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormatV2Suite,org.apache.spark.sql.execution.datasources.orc.OrcSourceV1Suite,org.apache.spark.sql.execution.datasources.orc.OrcSourceV2Suite' || '' }}
178187 - name : Upload fallback log
179188 if : ${{ github.event.inputs.collect-fallback-logs == 'true' }}
180189 uses : actions/upload-artifact@v7
0 commit comments