This is an automated email from the ASF dual-hosted git repository. codope pushed a commit to branch release-0.12.0 in repository https://gitbox.apache.org/repos/asf/hudi.git
commit d013cf5cec47e3320116d1e19e3d7aa0c57f7fcd Author: ForwardXu <[email protected]> AuthorDate: Thu Aug 4 12:32:08 2022 +0800 [HUDI-4533] Fix RunCleanProcedure's ArrayIndexOutOfBoundsException (#6293) --- .../apache/spark/sql/hudi/command/procedures/RunCleanProcedure.scala | 5 +++-- .../org/apache/spark/sql/hudi/procedure/TestCleanProcedure.scala | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/RunCleanProcedure.scala b/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/RunCleanProcedure.scala index b5d942d5e6..2a0143bafb 100644 --- a/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/RunCleanProcedure.scala +++ b/hudi-spark-datasource/hudi-spark/src/main/scala/org/apache/spark/sql/hudi/command/procedures/RunCleanProcedure.scala @@ -17,7 +17,6 @@ package org.apache.spark.sql.hudi.command.procedures -import java.util.function.Supplier import org.apache.hudi.HoodieCLIUtils import org.apache.hudi.common.table.timeline.HoodieActiveTimeline import org.apache.hudi.common.util.JsonUtils @@ -26,6 +25,8 @@ import org.apache.spark.internal.Logging import org.apache.spark.sql.Row import org.apache.spark.sql.types.{DataTypes, Metadata, StructField, StructType} +import java.util.function.Supplier + class RunCleanProcedure extends BaseProcedure with ProcedureBuilder with Logging { private val PARAMETERS = Array[ProcedureParameter]( @@ -76,7 +77,7 @@ class RunCleanProcedure extends BaseProcedure with ProcedureBuilder with Logging val client = HoodieCLIUtils.createHoodieClientFromPath(sparkSession, basePath, props) val hoodieCleanMeta = client.clean(cleanInstantTime, scheduleInLine, skipLocking) - if (hoodieCleanMeta == null) Seq(Row.empty) + if (hoodieCleanMeta == null) Seq.empty else Seq(Row(hoodieCleanMeta.getStartCleanTime, hoodieCleanMeta.getTimeTakenInMillis, hoodieCleanMeta.getTotalFilesDeleted, diff --git a/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/procedure/TestCleanProcedure.scala b/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/procedure/TestCleanProcedure.scala index f93be88fe0..7986c304c7 100644 --- a/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/procedure/TestCleanProcedure.scala +++ b/hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/procedure/TestCleanProcedure.scala @@ -56,6 +56,10 @@ class TestCleanProcedure extends HoodieSparkProcedureTestBase { checkAnswer(s"select id, name, price, ts from $tableName order by id") ( Seq(1, "a1", 13, 1000) ) + + val result2 = spark.sql(s"call run_clean(table => '$tableName', retain_commits => 1)") + .collect() + assertResult(0)(result2.length) } }
