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]

Reply via email to