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

andygrove pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/main by this push:
     new b7df93709 feat: disable Comet by default when CometShuffleManager is 
not registered (#4328)
b7df93709 is described below

commit b7df93709bb3b932138bbf5665409b46bb6eac1b
Author: Andy Grove <[email protected]>
AuthorDate: Tue May 19 15:02:07 2026 -0600

    feat: disable Comet by default when CometShuffleManager is not registered 
(#4328)
---
 .../apache/comet/CometSparkSessionExtensions.scala | 10 ++++++++++
 .../comet/CometSparkSessionExtensionsSuite.scala   | 22 ++++++++++++++++++++++
 .../scala/org/apache/spark/CometPluginsSuite.scala |  3 +++
 3 files changed, 35 insertions(+)

diff --git 
a/spark/src/main/scala/org/apache/comet/CometSparkSessionExtensions.scala 
b/spark/src/main/scala/org/apache/comet/CometSparkSessionExtensions.scala
index 679005d9b..1ae90e184 100644
--- a/spark/src/main/scala/org/apache/comet/CometSparkSessionExtensions.scala
+++ b/spark/src/main/scala/org/apache/comet/CometSparkSessionExtensions.scala
@@ -127,6 +127,16 @@ object CometSparkSessionExtensions extends Logging {
       return false
     }
 
+    if (COMET_EXEC_SHUFFLE_ENABLED.get(conf) && 
!isCometShuffleManagerEnabled(conf)) {
+      logWarning(
+        "Comet extension is disabled because spark.shuffle.manager is not set 
to " +
+          "org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager. " 
+
+          "Comet provides limited benefit without its shuffle manager. " +
+          s"Set ${COMET_EXEC_SHUFFLE_ENABLED.key}=false to keep Comet enabled 
with " +
+          "Spark's default shuffle manager.")
+      return false
+    }
+
     // We don't support INT96 timestamps written by Apache Impala in a 
different timezone yet
     if (conf.getConf(SQLConf.PARQUET_INT96_TIMESTAMP_CONVERSION)) {
       logWarning(
diff --git 
a/spark/src/test/scala/org/apache/comet/CometSparkSessionExtensionsSuite.scala 
b/spark/src/test/scala/org/apache/comet/CometSparkSessionExtensionsSuite.scala
index dbb62d5a4..268fdf94e 100644
--- 
a/spark/src/test/scala/org/apache/comet/CometSparkSessionExtensionsSuite.scala
+++ 
b/spark/src/test/scala/org/apache/comet/CometSparkSessionExtensionsSuite.scala
@@ -29,6 +29,9 @@ class CometSparkSessionExtensionsSuite extends CometTestBase {
 
   test("isCometLoaded") {
     val conf = new SQLConf
+    // Disable Comet shuffle so this test can focus on other checks without 
needing
+    // spark.shuffle.manager to be set.
+    conf.setConfString(CometConf.COMET_EXEC_SHUFFLE_ENABLED.key, "false")
 
     conf.setConfString(CometConf.COMET_ENABLED.key, "false")
     assert(!isCometLoaded(conf))
@@ -50,6 +53,25 @@ class CometSparkSessionExtensionsSuite extends CometTestBase 
{
     NativeBase.setLoaded(true)
   }
 
+  test("isCometLoaded requires CometShuffleManager when shuffle.enabled=true") 
{
+    val conf = new SQLConf
+    conf.setConfString(CometConf.COMET_ENABLED.key, "true")
+
+    // Default: shuffle.enabled=true. Without spark.shuffle.manager set, Comet 
must be disabled.
+    assert(!isCometLoaded(conf))
+
+    // Opt out: shuffle.enabled=false. Comet should load (assumes native lib 
is available).
+    conf.setConfString(CometConf.COMET_EXEC_SHUFFLE_ENABLED.key, "false")
+    assert(isCometLoaded(conf))
+
+    // shuffle.enabled=true with the Comet shuffle manager registered: Comet 
should load.
+    conf.setConfString(CometConf.COMET_EXEC_SHUFFLE_ENABLED.key, "true")
+    conf.setConfString(
+      "spark.shuffle.manager",
+      "org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager")
+    assert(isCometLoaded(conf))
+  }
+
   test("Arrow properties") {
     NativeBase.setLoaded(false)
     NativeBase.load()
diff --git a/spark/src/test/scala/org/apache/spark/CometPluginsSuite.scala 
b/spark/src/test/scala/org/apache/spark/CometPluginsSuite.scala
index 675ff0171..fa5f368e3 100644
--- a/spark/src/test/scala/org/apache/spark/CometPluginsSuite.scala
+++ b/spark/src/test/scala/org/apache/spark/CometPluginsSuite.scala
@@ -31,6 +31,9 @@ class CometPluginsSuite extends CometTestBase {
     conf.set("spark.executor.memory", "1G")
     conf.set("spark.executor.memoryOverhead", "2G")
     conf.set("spark.plugins", "org.apache.spark.CometPlugin")
+    conf.set(
+      "spark.shuffle.manager",
+      "org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager")
     conf.set("spark.comet.enabled", "true")
     conf.set("spark.comet.exec.enabled", "true")
     conf.set("spark.comet.exec.onHeap.enabled", "true")


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

Reply via email to