This is an automated email from the ASF dual-hosted git repository.
wangzhen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git
The following commit(s) were added to refs/heads/main by this push:
new b02b359aa5 [VL] Fix oom when plan is large (#11652)
b02b359aa5 is described below
commit b02b359aa59a813c02222180caef9d55af1f2967
Author: Rex(Hui) An <[email protected]>
AuthorDate: Fri Feb 27 09:52:53 2026 +0800
[VL] Fix oom when plan is large (#11652)
---
.../org/apache/gluten/extension/columnar/FallbackTag.scala | 2 +-
.../columnar/enumerated/planner/property/Conv.scala | 3 ++-
.../gluten/extension/columnar/transition/Transition.scala | 14 ++++++++------
.../gluten/extension/columnar/transition/Transitions.scala | 4 ++--
4 files changed, 13 insertions(+), 10 deletions(-)
diff --git
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/FallbackTag.scala
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/FallbackTag.scala
index ea8f37823b..b18fa519e0 100644
---
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/FallbackTag.scala
+++
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/FallbackTag.scala
@@ -105,7 +105,7 @@ object FallbackTags {
def get(plan: TreeNode[_]): FallbackTag = {
getOption(plan).getOrElse(
- throw new IllegalStateException("Transform hint tag not set in plan: " +
plan.toString()))
+ throw new IllegalStateException("Transform hint tag not set in plan: " +
plan.nodeName))
}
def getOption(plan: TreeNode[_]): Option[FallbackTag] = {
diff --git
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/planner/property/Conv.scala
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/planner/property/Conv.scala
index 868791ac33..748af00b54 100644
---
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/planner/property/Conv.scala
+++
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/enumerated/planner/property/Conv.scala
@@ -41,7 +41,8 @@ object Conv {
}
def findTransition(from: Prop, to: Req): Transition = {
- val out = Transition.factory.findTransition(from.prop, to.req, new
IllegalStateException())
+ val out =
+ Transition.factory.findTransitionOrThrow(from.prop, to.req)(new
IllegalStateException())
out
}
diff --git
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transition.scala
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transition.scala
index 6a9dfa0623..d479dc4959 100644
---
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transition.scala
+++
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transition.scala
@@ -21,6 +21,7 @@ import org.apache.gluten.exception.GlutenException
import org.apache.gluten.extension.columnar.cost.GlutenCostModel
import org.apache.spark.sql.execution.SparkPlan
+import org.apache.spark.sql.internal.SQLConf
import scala.collection.mutable
@@ -52,20 +53,21 @@ object Transition {
val empty: Transition = (plan: SparkPlan) => plan
private val abort: Transition = (_: SparkPlan) => throw new
UnsupportedOperationException("Abort")
val factory = Factory.newBuiltin()
+ private lazy val maxFields = SQLConf.get.maxToStringFields
def notFound(plan: SparkPlan): GlutenException = {
- new GlutenException(s"No viable transition found from plan's child to
itself: $plan")
+ new GlutenException(
+ s"No viable transition found from plan's child to itself:
${plan.simpleString(maxFields)}")
}
def notFound(plan: SparkPlan, required: ConventionReq): GlutenException = {
- new GlutenException(s"No viable transition to [$required] found for plan:
$plan")
+ new GlutenException(
+ s"No viable transition to [$required] found for plan:
${plan.simpleString(maxFields)}")
}
trait Factory {
- final def findTransition(
- from: Convention,
- to: ConventionReq,
- otherwise: Exception): Transition = {
+ final def findTransitionOrThrow(from: Convention, to: ConventionReq)(
+ otherwise: => Exception): Transition = {
findTransition(from, to) {
throw otherwise
}
diff --git
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transitions.scala
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transitions.scala
index 2ea30b6af0..1607bc16ce 100644
---
a/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transitions.scala
+++
b/gluten-core/src/main/scala/org/apache/gluten/extension/columnar/transition/Transitions.scala
@@ -49,7 +49,7 @@ case class InsertTransitions(convReq: ConventionReq) extends
Rule[SparkPlan] {
child
} else {
val transition =
- Transition.factory.findTransition(from, convReq,
Transition.notFound(node))
+ Transition.factory.findTransitionOrThrow(from,
convReq)(Transition.notFound(node))
val newChild = transition.apply(child)
newChild
}
@@ -98,7 +98,7 @@ object Transitions {
val convFunc = ConventionFunc.create()
val removed = RemoveTransitions.removeForNode(plan)
val transition = Transition.factory
- .findTransition(convFunc.conventionOf(removed), req,
Transition.notFound(removed, req))
+ .findTransitionOrThrow(convFunc.conventionOf(removed),
req)(Transition.notFound(removed, req))
val out = transition.apply(removed)
out
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]