This is an automated email from the ASF dual-hosted git repository.

jackylee 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 4dcd2803fa [CORE] Post events until both spark ui and gluten ui are 
enable (#9272)
4dcd2803fa is described below

commit 4dcd2803faa0599b50eac2ba3f999e652b6a0ab8
Author: Kaifei Yi <[email protected]>
AuthorDate: Mon Apr 14 12:04:40 2025 +0800

    [CORE] Post events until both spark ui and gluten ui are enable (#9272)
---
 .../main/scala/org/apache/gluten/GlutenPlugin.scala  | 18 ++++++++----------
 .../spark/sql/execution/GlutenFallbackReporter.scala |  6 +++---
 gluten-ui/pom.xml                                    |  6 ++++++
 .../{GlutenEventUtils.scala => GlutenUIUtils.scala}  | 20 ++++++++++++++++++--
 .../spark/sql/gluten/GlutenFallbackSuite.scala       |  3 +++
 .../spark/sql/gluten/GlutenFallbackSuite.scala       |  3 +++
 .../spark/sql/gluten/GlutenFallbackSuite.scala       |  3 +++
 7 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/gluten-core/src/main/scala/org/apache/gluten/GlutenPlugin.scala 
b/gluten-core/src/main/scala/org/apache/gluten/GlutenPlugin.scala
index f06330f925..d01a23712e 100644
--- a/gluten-core/src/main/scala/org/apache/gluten/GlutenPlugin.scala
+++ b/gluten-core/src/main/scala/org/apache/gluten/GlutenPlugin.scala
@@ -31,7 +31,7 @@ import org.apache.spark.api.plugin.{DriverPlugin, 
ExecutorPlugin, PluginContext,
 import org.apache.spark.internal.Logging
 import org.apache.spark.network.util.JavaUtils
 import org.apache.spark.softaffinity.SoftAffinityListener
-import org.apache.spark.sql.execution.ui.{GlutenEventUtils, 
GlutenSQLAppStatusListener}
+import org.apache.spark.sql.execution.ui.{GlutenSQLAppStatusListener, 
GlutenUIUtils}
 import org.apache.spark.sql.internal.SQLConf
 import org.apache.spark.sql.internal.StaticSQLConf.SPARK_SESSION_EXTENSIONS
 import org.apache.spark.task.TaskResources
@@ -80,14 +80,12 @@ private[gluten] class GlutenDriverPlugin extends 
DriverPlugin with Logging {
   }
 
   override def registerMetrics(appId: String, pluginContext: PluginContext): 
Unit = {
-    if (
-      pluginContext.conf().getBoolean(GLUTEN_UI_ENABLED.key, 
GLUTEN_UI_ENABLED.defaultValue.get)
-    ) {
-      _sc.foreach {
-        sc =>
-          GlutenEventUtils.attachUI(sc)
+    _sc.foreach {
+      sc =>
+        if (GlutenUIUtils.uiEnabled(sc)) {
+          GlutenUIUtils.attachUI(sc)
           logInfo("Gluten SQL Tab has been attached.")
-      }
+        }
     }
   }
 
@@ -131,9 +129,9 @@ private[gluten] class GlutenDriverPlugin extends 
DriverPlugin with Logging {
         "\n=============================================================="
       )
     logInfo(loggingInfo)
-    if (sc.getConf.getBoolean(GLUTEN_UI_ENABLED.key, 
GLUTEN_UI_ENABLED.defaultValue.get)) {
+    if (GlutenUIUtils.uiEnabled(sc)) {
       val event = GlutenBuildInfoEvent(glutenBuildInfo.toMap)
-      GlutenEventUtils.post(sc, event)
+      GlutenUIUtils.postEvent(sc, event)
     }
   }
 
diff --git 
a/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/GlutenFallbackReporter.scala
 
b/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/GlutenFallbackReporter.scala
index 0c5f30a4b8..d7ffa42293 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/GlutenFallbackReporter.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/GlutenFallbackReporter.scala
@@ -25,7 +25,7 @@ import org.apache.gluten.logging.LogLevelUtil
 import org.apache.spark.sql.SparkSession
 import org.apache.spark.sql.catalyst.rules.Rule
 import org.apache.spark.sql.catalyst.util.StringUtils.PlanStringConcat
-import org.apache.spark.sql.execution.ui.GlutenEventUtils
+import org.apache.spark.sql.execution.ui.GlutenUIUtils
 
 /**
  * This rule is used to collect all fallback reason.
@@ -40,7 +40,7 @@ case class GlutenFallbackReporter(glutenConf: GlutenConfig, 
spark: SparkSession)
       return plan
     }
     printFallbackReason(plan)
-    if (glutenConf.glutenUiEnabled) {
+    if (GlutenUIUtils.uiEnabled(spark.sparkContext, Some(glutenConf))) {
       postFallbackReason(plan)
     }
     plan
@@ -88,7 +88,7 @@ case class GlutenFallbackReporter(glutenConf: GlutenConfig, 
spark: SparkSession)
       concat.toString(),
       fallbackNodeToReason
     )
-    GlutenEventUtils.post(sc, event)
+    GlutenUIUtils.postEvent(sc, event)
   }
 }
 
diff --git a/gluten-ui/pom.xml b/gluten-ui/pom.xml
index 94f8aee544..647a15e338 100644
--- a/gluten-ui/pom.xml
+++ b/gluten-ui/pom.xml
@@ -13,6 +13,12 @@
     <name>Gluten UI</name>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.gluten</groupId>
+            <artifactId>spark-sql-columnar-shims-common</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.spark</groupId>
             <artifactId>spark-sql_${scala.binary.version}</artifactId>
diff --git 
a/gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenEventUtils.scala
 
b/gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenUIUtils.scala
similarity index 62%
rename from 
gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenEventUtils.scala
rename to 
gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenUIUtils.scala
index 245c678feb..eb9d56b33e 100644
--- 
a/gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenEventUtils.scala
+++ 
b/gluten-ui/src/main/scala/org/apache/spark/sql/execution/ui/GlutenUIUtils.scala
@@ -16,13 +16,29 @@
  */
 package org.apache.spark.sql.execution.ui
 
+import org.apache.gluten.config.GlutenConfig
+import org.apache.gluten.config.GlutenConfig.GLUTEN_UI_ENABLED
 import org.apache.gluten.events.GlutenEvent
 
 import org.apache.spark.SparkContext
 import org.apache.spark.status.ElementTrackingStore
 
-object GlutenEventUtils {
-  def post(sc: SparkContext, event: GlutenEvent): Unit = {
+object GlutenUIUtils {
+
+  /**
+   * Check if enabled the gluten ui, Please note that, developer should pass 
the gluten config if
+   * call from sql module to prevent misjudgment caused by users directly 
setting sparkConf.
+   */
+  def uiEnabled(sc: SparkContext, glutenConfig: Option[GlutenConfig] = None): 
Boolean = {
+    val glutenTabEnabled = if (glutenConfig.isDefined) {
+      glutenConfig.get.glutenUiEnabled
+    } else {
+      sc.getConf.getBoolean(GLUTEN_UI_ENABLED.key, 
GLUTEN_UI_ENABLED.defaultValue.get)
+    }
+    sc.ui.isDefined && glutenTabEnabled
+  }
+
+  def postEvent(sc: SparkContext, event: GlutenEvent): Unit = {
     sc.listenerBus.post(event)
   }
 
diff --git 
a/gluten-ut/spark33/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
 
b/gluten-ut/spark33/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
index 4fd7471648..e761f5a39f 100644
--- 
a/gluten-ut/spark33/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
+++ 
b/gluten-ut/spark33/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
@@ -22,6 +22,7 @@ import org.apache.gluten.events.GlutenPlanFallbackEvent
 import org.apache.gluten.execution.FileSourceScanExecTransformer
 
 import org.apache.spark.SparkConf
+import org.apache.spark.internal.config.UI.UI_ENABLED
 import org.apache.spark.scheduler.{SparkListener, SparkListenerEvent}
 import org.apache.spark.sql.{GlutenSQLTestsTrait, Row}
 import org.apache.spark.sql.execution.ProjectExec
@@ -37,6 +38,8 @@ class GlutenFallbackSuite extends GlutenSQLTestsTrait with 
AdaptiveSparkPlanHelp
     super.sparkConf
       .set(GlutenConfig.RAS_ENABLED.key, "false")
       .set("spark.gluten.ui.enabled", "true")
+      // The gluten ui event test suite expects the spark ui to be enable
+      .set(UI_ENABLED, true)
   }
 
   testGluten("test fallback logging") {
diff --git 
a/gluten-ut/spark34/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
 
b/gluten-ut/spark34/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
index 2afb18120d..e53e28fa27 100644
--- 
a/gluten-ut/spark34/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
+++ 
b/gluten-ut/spark34/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
@@ -23,6 +23,7 @@ import 
org.apache.gluten.execution.FileSourceScanExecTransformer
 import org.apache.gluten.utils.BackendTestUtils
 
 import org.apache.spark.SparkConf
+import org.apache.spark.internal.config.UI.UI_ENABLED
 import org.apache.spark.scheduler.{SparkListener, SparkListenerEvent}
 import org.apache.spark.sql.{GlutenSQLTestsTrait, Row}
 import org.apache.spark.sql.execution.ProjectExec
@@ -38,6 +39,8 @@ class GlutenFallbackSuite extends GlutenSQLTestsTrait with 
AdaptiveSparkPlanHelp
     super.sparkConf
       .set(GlutenConfig.RAS_ENABLED.key, "false")
       .set("spark.gluten.ui.enabled", "true")
+      // The gluten ui event test suite expects the spark ui to be enable
+      .set(UI_ENABLED, true)
   }
 
   testGluten("test fallback logging") {
diff --git 
a/gluten-ut/spark35/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
 
b/gluten-ut/spark35/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
index 2afb18120d..e53e28fa27 100644
--- 
a/gluten-ut/spark35/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
+++ 
b/gluten-ut/spark35/src/test/scala/org/apache/spark/sql/gluten/GlutenFallbackSuite.scala
@@ -23,6 +23,7 @@ import 
org.apache.gluten.execution.FileSourceScanExecTransformer
 import org.apache.gluten.utils.BackendTestUtils
 
 import org.apache.spark.SparkConf
+import org.apache.spark.internal.config.UI.UI_ENABLED
 import org.apache.spark.scheduler.{SparkListener, SparkListenerEvent}
 import org.apache.spark.sql.{GlutenSQLTestsTrait, Row}
 import org.apache.spark.sql.execution.ProjectExec
@@ -38,6 +39,8 @@ class GlutenFallbackSuite extends GlutenSQLTestsTrait with 
AdaptiveSparkPlanHelp
     super.sparkConf
       .set(GlutenConfig.RAS_ENABLED.key, "false")
       .set("spark.gluten.ui.enabled", "true")
+      // The gluten ui event test suite expects the spark ui to be enable
+      .set(UI_ENABLED, true)
   }
 
   testGluten("test fallback logging") {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to