This is an automated email from the ASF dual-hosted git repository.
hongze 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 527ab16827 [GLUTEN-7143][VL] RAS: Catch exceptions thrown from rewrite
rules (#7767)
527ab16827 is described below
commit 527ab16827167017e339cd48b1c3ef0b3184404c
Author: Hongze Zhang <[email protected]>
AuthorDate: Fri Nov 1 14:30:22 2024 +0800
[GLUTEN-7143][VL] RAS: Catch exceptions thrown from rewrite rules (#7767)
---
.../extension/columnar/enumerated/RasOffload.scala | 30 ++++++++++++++++------
.../rewrite/RewriteSparkPlanRulesManager.scala | 5 +++-
2 files changed, 26 insertions(+), 9 deletions(-)
diff --git
a/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/enumerated/RasOffload.scala
b/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/enumerated/RasOffload.scala
index 84a09d2cce..52798f712c 100644
---
a/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/enumerated/RasOffload.scala
+++
b/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/enumerated/RasOffload.scala
@@ -25,6 +25,7 @@ import org.apache.gluten.ras.path.Pattern.node
import org.apache.gluten.ras.rule.{RasRule, Shape}
import org.apache.gluten.ras.rule.Shapes.pattern
+import org.apache.spark.internal.Logging
import org.apache.spark.sql.execution.SparkPlan
import scala.reflect.{classTag, ClassTag}
@@ -70,7 +71,9 @@ object RasOffload {
new RuleImpl(base, validator)
}
- private class RuleImpl(base: RasOffload, validator: Validator) extends
RasRule[SparkPlan] {
+ private class RuleImpl(base: RasOffload, validator: Validator)
+ extends RasRule[SparkPlan]
+ with Logging {
private val typeIdentifier: TypeIdentifier = base.typeIdentifier()
final override def shift(node: SparkPlan): Iterable[SparkPlan] = {
@@ -86,14 +89,25 @@ object RasOffload {
}
// 2. Rewrite the node to form that native library supports.
- val rewritten = rewrites.foldLeft(node) {
- case (node, rewrite) =>
- node.transformUp {
- case p =>
- val out = rewrite.rewrite(p)
- out
+ val rewritten =
+ try {
+ rewrites.foldLeft(node) {
+ case (node, rewrite) =>
+ node.transformUp {
+ case p =>
+ val out = rewrite.rewrite(p)
+ out
+ }
}
- }
+ } catch {
+ case e: Exception =>
+ // TODO: Remove this catch block
+ // See https://github.com/apache/incubator-gluten/issues/7766
+ logWarning(
+ s"Exception thrown during rewriting the plan ${node.nodeName}.
Skip offloading it",
+ e)
+ return List.empty
+ }
// 3. Walk the rewritten tree.
val offloaded = rewritten.transformUp {
diff --git
a/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/rewrite/RewriteSparkPlanRulesManager.scala
b/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/rewrite/RewriteSparkPlanRulesManager.scala
index e005a3dc81..c6d5e1cca1 100644
---
a/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/rewrite/RewriteSparkPlanRulesManager.scala
+++
b/gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/rewrite/RewriteSparkPlanRulesManager.scala
@@ -88,7 +88,10 @@ class RewriteSparkPlanRulesManager private (rewriteRules:
Seq[RewriteSingleNode]
}
(rewrittenPlan, None)
} catch {
- case e: Exception => (origin, Option(e.getMessage))
+ case e: Exception =>
+ // TODO: Remove this catch block
+ // See https://github.com/apache/incubator-gluten/issues/7766
+ (origin, Option(e.getMessage))
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]