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

dongjoon-hyun pushed a commit to branch branch-4.x
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/branch-4.x by this push:
     new 960d2393bb30 [SPARK-57921][CORE] Fix `spark.memory.offHeap.size` error 
message to require at least 1MiB
960d2393bb30 is described below

commit 960d2393bb30370d8b69846d742f79aaf3f6e860
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Fri Jul 3 03:15:09 2026 -0700

    [SPARK-57921][CORE] Fix `spark.memory.offHeap.size` error message to 
require at least 1MiB
    
    ### What changes were proposed in this pull request?
    
    This PR aims to fix the error message of `Utils.checkOffHeapEnabled` to say 
that `spark.memory.offHeap.size` must be at least 1MiB, instead of `must be > 
0`.
    
    ### Why are the changes needed?
    
    `Utils.executorOffHeapMemorySizeAsMb` converts `spark.memory.offHeap.size` 
to MiB with truncation before validation. So, a positive value less than 1MiB 
(e.g. `500000`) is truncated to `0` and rejected with a misleading message.
    
    ```
    $ bin/spark-shell -c spark.memory.offHeap.enabled=true -c 
spark.memory.offHeap.size=500000
    ...
    java.lang.IllegalArgumentException: requirement failed:
    spark.memory.offHeap.size must be > 0 when spark.memory.offHeap.enabled == 
true
    ```
    
    The user set a value greater than 0, but the error still says it `must be > 
0`. Since all callers of `checkOffHeapEnabled` pass MiB-based values, the 
effective minimum is 1MiB. The check in `MemoryManager` which validates the raw 
byte value is untouched because `must be > 0` is accurate there.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No, this is an error message fix.
    
    ### How was this patch tested?
    
    Pass the CIs with the updated test case.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Fable 5
    
    Closes #56983 from dongjoon-hyun/SPARK-57921.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
    (cherry picked from commit 5615098afd961b2fc345f487fbc5aa3f7c1b2cc6)
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 core/src/main/scala/org/apache/spark/util/Utils.scala      | 3 ++-
 core/src/test/scala/org/apache/spark/util/UtilsSuite.scala | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/core/src/main/scala/org/apache/spark/util/Utils.scala 
b/core/src/main/scala/org/apache/spark/util/Utils.scala
index 11dc885ca86b..2b03a068f132 100644
--- a/core/src/main/scala/org/apache/spark/util/Utils.scala
+++ b/core/src/main/scala/org/apache/spark/util/Utils.scala
@@ -3091,7 +3091,8 @@ private[spark] object Utils
   def checkOffHeapEnabled(sparkConf: ReadOnlySparkConf, offHeapSize: Long): 
Long = {
     if (sparkConf.get(MEMORY_OFFHEAP_ENABLED)) {
       require(offHeapSize > 0,
-        s"${MEMORY_OFFHEAP_SIZE.key} must be > 0 when 
${MEMORY_OFFHEAP_ENABLED.key} == true")
+        s"${MEMORY_OFFHEAP_SIZE.key} must be at least 1MiB when " +
+          s"${MEMORY_OFFHEAP_ENABLED.key} == true")
       offHeapSize
     } else {
       0
diff --git a/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala 
b/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala
index 96e00db64bd4..e1e49a226735 100644
--- a/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala
+++ b/core/src/test/scala/org/apache/spark/util/UtilsSuite.scala
@@ -1603,7 +1603,7 @@ class UtilsSuite extends SparkFunSuite with 
ResetSystemProperties {
     val sparkConf = new SparkConf()
       .set(MEMORY_OFFHEAP_ENABLED, true)
     val expected =
-      s"${MEMORY_OFFHEAP_SIZE.key} must be > 0 when 
${MEMORY_OFFHEAP_ENABLED.key} == true"
+      s"${MEMORY_OFFHEAP_SIZE.key} must be at least 1MiB when 
${MEMORY_OFFHEAP_ENABLED.key} == true"
     val message = intercept[IllegalArgumentException] {
       Utils.executorOffHeapMemorySizeAsMb(sparkConf)
     }.getMessage


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

Reply via email to