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

taiyang-li pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new ef309d210e [GLUTEN][CORE] Add backend hooks for native config 
forwarding (#12437)
ef309d210e is described below

commit ef309d210edd8e2ee47a1a8c20785e65d5b6a276
Author: 李扬 <[email protected]>
AuthorDate: Tue Jul 7 18:13:21 2026 +0800

    [GLUTEN][CORE] Add backend hooks for native config forwarding (#12437)
    
    Allow backends to contribute extra non-prefixed session and backend config 
keys so native config forwarding can be extended without hard-coding 
backend-specific entries in GlutenConfig.
---
 .../apache/gluten/backendsapi/BackendSettingsApi.scala   | 12 ++++++++++++
 .../scala/org/apache/gluten/config/GlutenConfig.scala    | 16 ++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git 
a/gluten-substrait/src/main/scala/org/apache/gluten/backendsapi/BackendSettingsApi.scala
 
b/gluten-substrait/src/main/scala/org/apache/gluten/backendsapi/BackendSettingsApi.scala
index 75c94be4d4..85b146e195 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/gluten/backendsapi/BackendSettingsApi.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/gluten/backendsapi/BackendSettingsApi.scala
@@ -168,4 +168,16 @@ trait BackendSettingsApi {
 
   /** Whether the backend supports columnar shuffle with empty schema. */
   def supportEmptySchemaColumnarShuffle(): Boolean = true
+
+  /**
+   * Backend-specific non-prefixed session configs that should be forwarded to 
native runtime /
+   * memory manager creation.
+   */
+  def extraNativeSessionConfKeys(): Set[String] = Set.empty
+
+  /**
+   * Backend-specific non-prefixed backend initialization configs that should 
be forwarded during
+   * native backend initialization.
+   */
+  def extraNativeBackendConfKeys(): Set[String] = Set.empty
 }
diff --git 
a/gluten-substrait/src/main/scala/org/apache/gluten/config/GlutenConfig.scala 
b/gluten-substrait/src/main/scala/org/apache/gluten/config/GlutenConfig.scala
index 37d8b2b3ab..bd5394095d 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/gluten/config/GlutenConfig.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/gluten/config/GlutenConfig.scala
@@ -16,6 +16,7 @@
  */
 package org.apache.gluten.config
 
+import org.apache.gluten.backendsapi.BackendsApiManager
 import org.apache.gluten.shuffle.SupportsColumnarShuffle
 
 import org.apache.spark.network.util.{ByteUnit, JavaUtils}
@@ -532,10 +533,18 @@ object GlutenConfig extends ConfigRegistry {
     
"spark.gluten.sql.columnar.backend.velox.columnarBatchSerializerCompression"
   )
 
+  private def backendSettings(backendName: String) = {
+    // Only one backend is loaded in a running Gluten session. Use backend 
settings hooks to avoid
+    // hard-coding backend-specific configs in common code.
+    BackendsApiManager.getSettings
+  }
+
   /** Get dynamic configs. */
   def getNativeSessionConf(backendName: String, conf: Map[String, String]): 
Map[String, String] = {
+    val settings = backendSettings(backendName)
     val nativeConfMap = mutable.Map[String, String](conf.filter {
-      case (key, _) => nativeKeys.contains(key)
+      case (key, _) =>
+        nativeKeys.contains(key) || 
settings.extraNativeSessionConfKeys().contains(key)
     }.toSeq: _*)
 
     Seq(
@@ -649,6 +658,7 @@ object GlutenConfig extends ConfigRegistry {
       (SQLConf.SESSION_LOCAL_TIMEZONE.key, 
SQLConf.SESSION_LOCAL_TIMEZONE.defaultValueString)
     ).foreach { case (k, defaultValue) => nativeConfMap.put(k, 
conf.getOrElse(k, defaultValue)) }
 
+    val settings = backendSettings(backendName)
     val keys = Set(
       DEBUG_ENABLED.key,
       // datasource config
@@ -666,7 +676,9 @@ object GlutenConfig extends ConfigRegistry {
       COLUMNAR_CUDF_ENABLED.key
     )
 
-    nativeConfMap ++= conf.filter { case (k, _) => keys.contains(k) }
+    nativeConfMap ++= conf.filter {
+      case (k, _) => keys.contains(k) || 
settings.extraNativeBackendConfKeys().contains(k)
+    }
 
     val confPrefix = prefixOf(backendName)
     val s3Prefix = HADOOP_PREFIX + S3A_PREFIX


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

Reply via email to