spark-rapids
spark-rapids copied to clipboard
[BUG] StringOperatorsSuite failed when building with JDK17
Describe the bug StringOperatorsSuite failed because of the different result from CPU and GPU.
Steps/Code to reproduce bug To build with JDK17,
- Use maven 3.8.6 & JDK 17 (apt install -y openjdk-17-jdk)
- Change the pom and integration test script to open/export some java classes as below diff context.
- mvn test -Dbuildver=321 -Dmaven.compiler.release=17 -Dmaven.compiler.source=17 -Dmaven.compiler.target=17 -Dscala.plugin.version=4.6.1 -DallowConventionalDistJar=true -DwildcardSuites=com.nvidia.spark.rapids.StringOperatorsSuite
Below is what I changed.
diff --git a/integration_tests/run_pyspark_from_build.sh b/integration_tests/run_pyspark_from_build.sh
index 1caa847ae..5b54b65fd 100755
--- a/integration_tests/run_pyspark_from_build.sh
+++ b/integration_tests/run_pyspark_from_build.sh
@@ -216,8 +216,8 @@ else
export PYSP_TEST_spark_jars="${ALL_JARS//:/,}"
fi
- export PYSP_TEST_spark_driver_extraJavaOptions="-ea -Duser.timezone=UTC $COVERAGE_SUBMIT_FLAGS"
- export PYSP_TEST_spark_executor_extraJavaOptions='-ea -Duser.timezone=UTC'
+ export PYSP_TEST_spark_driver_extraJavaOptions="-ea -Duser.timezone=UTC --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-exports=java.base/sun.util.calendar=ALL-UNNAMED $COVERAGE_SUBMIT_FLAGS"
+ export PYSP_TEST_spark_executor_extraJavaOptions='-ea -Duser.timezone=UTC --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-exports=java.base/sun.util.calendar=ALL-UNNAMED'
export PYSP_TEST_spark_ui_showConsoleProgress='false'
export PYSP_TEST_spark_sql_session_timeZone='UTC'
export PYSP_TEST_spark_sql_shuffle_partitions='4'
diff --git a/pom.xml b/pom.xml
index 6d155840c..e6ef3eb5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1106,10 +1106,10 @@
<spark331.version>3.3.1-SNAPSHOT</spark331.version>
<spark340.version>3.4.0-SNAPSHOT</spark340.version>
<spark330cdh.version>3.3.0.3.3.7180.0-274</spark330cdh.version>
- <mockito.version>3.6.0</mockito.version>
+ <mockito.version>4.8.0</mockito.version>
<scala.plugin.version>4.3.0</scala.plugin.version>
<maven.jar.plugin.version>3.2.0</maven.jar.plugin.version>
- <scalatest-maven-plugin.version>2.0.2</scalatest-maven-plugin.version>
+ <scalatest-maven-plugin.version>2.1.0</scalatest-maven-plugin.version>
<guava.cdh.version>30.0-jre</guava.cdh.version>
<arrow.cdh.version>2.0.0</arrow.cdh.version>
<shim.module.name>${spark.version.classifier}</shim.module.name>
@@ -1291,7 +1291,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
- <version>3.2.4</version>
+ <version>3.4.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -1368,7 +1368,7 @@
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>scala-test-output.txt</filereports>
- <argLine>${argLine} -ea -Xmx4g -Xss4m</argLine>
+ <argLine>${argLine} -ea -Xmx4g -Xss4m --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED</argLine>
<stderr/>
<systemProperties>
<rapids.shuffle.manager.override>${rapids.shuffle.manager.override}</rapids.shuffle.manager.override>
@@ -1410,7 +1410,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
- <version>0.8.5</version>
+ <version>0.8.7</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
The error log:
StringOperatorsSuite:
WARNING : Unsupported version of Java (17). You may encounted unexpected test failures
- INCOMPAT: Test compatible values upper case modifier *** FAILED ***
Running on the GPU and on the CPU did not match
CPU: WrappedArray([], [], [], [], [], [], [], [], ], [ ], [...
GPU: ...
*** 2 TESTS FAILED ***
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for RAPIDS Accelerator for Apache Spark Root Project 22.10.0-SNAPSHOT:
[INFO]
[INFO] RAPIDS Accelerator for Apache Spark Root Project ... SUCCESS [ 2.579 s]
[INFO] RAPIDS Accelerator for Apache Spark Common ......... SUCCESS [ 5.513 s]
[INFO] RAPIDS Accelerator for Apache Spark SQL Plugin ..... SUCCESS [ 44.266 s]
[INFO] RAPIDS Accelerator for Apache Spark Shuffle Plugin . SUCCESS [ 5.612 s]
[INFO] RAPIDS Accelerator for Apache Spark Scala UDF Plugin SUCCESS [ 18.328 s]
[INFO] RAPIDS Accelerator for Apache Spark Aggregator ..... SUCCESS [ 0.101 s]
[INFO] RAPIDS Accelerator for Apache Spark Distribution ... SUCCESS [ 6.958 s]
[INFO] rapids-4-spark-integration-tests_2.12 .............. SUCCESS [ 10.455 s]
[INFO] RAPIDS Accelerator for Apache Spark Tests .......... FAILURE [ 50.700 s]
[INFO] RAPIDS Accelerator for Apache Spark tools .......... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:24 min
[INFO] Finished at: 2022-10-10T13:46:52Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.scalatest:scalatest-maven-plugin:2.1.0:test (test) on project rapids-4-spark-tests_2.12: There are test failures -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.scalatest:scalatest-maven-plugin:2.1.0:test (test) on project rapids-4-spark-tests_2.12: There are test failures
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures
at org.scalatest.tools.maven.TestMojo.execute (TestMojo.java:148)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:568)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <args> -rf :rapids-4-spark-tests_2.12
Expected behavior Pass the unit test.
Environment details (please complete the following information)
- Environment location: local docker
- Spark 3.2.1
Additional information I can build successfully using below command by skipping the test.
mvn clean verify -Dbuildver=321 -Dmaven.compiler.release=17 -Dmaven.compiler.source=17 -Dmaven.compiler.target=17 -Dscala.plugin.version=4.6.1 -DallowConventionalDistJar=true -DskipTests
And the integration test also can run successfully by running
export SPARK_HOME=/opt/spark-3.2.1-bin-hadoop3.2
integration_tests/run_pyspark_from_build.sh
Just like the test prints out.
WARNING : Unsupported version of Java (17). You may encounted unexpected test failures
Although we should fix the spelling of "encounted" in the error message.
Each JDK comes with a set version of unicode that it supports. CUDF also has a set version of unicode that it supports. My guess is that java (17) has a newer version of unicode and we just need to adjust the tests accordingly when we see this version.
ok, I'll try to find out the gap and update the test code.