LuciferYang opened a new issue, #12621:
URL: https://github.com/apache/gluten/issues/12621

   ### Backend
   
   VL (Velox) — the entry point is in `gluten-core`; the end-to-end failure 
also reaches the Velox driver-start path.
   
   ### Bug description
   
   `GlutenDriverPlugin.setPredefinedConfigs` reads the off-heap size in its 
non-dynamic-sizing branch with the single-arg 
`conf.getSizeAsBytes(SPARK_OFFHEAP_SIZE_KEY)`. `checkOffHeapSettings` returns 
early for untracked memory mode (`spark.gluten.memory.untracked=true`) and 
skips the requirement that the size be set, so in that mode the key can be 
absent. `SparkConf.get(String)` throws `NoSuchElementException` on a missing 
key (it reads the raw settings map and does not consult the `ConfigEntry` 
default), so driver plugin init crashes instead of proceeding under untracked 
semantics.
   
   The same single-arg read exists on the Velox driver-start path: 
`VeloxListenerApi.onDriverStart` also calls 
`conf.getSizeAsBytes(SPARK_OFFHEAP_SIZE_KEY)`, and it runs after 
`setPredefinedConfigs` (via `GlutenDriverPlugin.init` → 
`Component.onDriverStart`). The dynamic-sizing branch already shields that 
reader by doing `conf.set(SPARK_OFFHEAP_SIZE_KEY, "0")`; untracked mode did 
not, so it was the one unshielded path.
   
   The fix normalizes the key in the untracked branch: when 
`spark.memory.offHeap.size` is absent, set it to `0`, mirroring the 
dynamic-sizing branch. One change covers both readers (the plugin and 
`VeloxListenerApi`), and normal mode is unaffected because 
`checkOffHeapSettings` already guarantees the key is set there.
   
   ### Gluten version
   
   main (1.8.0-SNAPSHOT)
   
   ### Spark version
   
   Version-agnostic (applies to spark-3.3 / 3.4 / 3.5 / 4.0 / 4.1).
   
   ### Spark configurations
   
   - `spark.plugins=org.apache.gluten.GlutenPlugin`
   - `spark.gluten.memory.untracked=true`
   - `spark.memory.offHeap.size` not set (dynamic off-heap sizing left at its 
default of false).
   
   ### System information
   
   N/A — logic issue in 
`gluten-core/src/main/scala/org/apache/gluten/GlutenPlugin.scala`, independent 
of OS/hardware.
   
   ### Relevant logs
   
   ```text
   java.util.NoSuchElementException: spark.memory.offHeap.size
     at org.apache.spark.SparkConf.$anonfun$get$1(SparkConf.scala:...)
     at org.apache.spark.SparkConf.getSizeAsBytes(SparkConf.scala:...)
     at 
org.apache.gluten.GlutenDriverPlugin$.setPredefinedConfigs(GlutenPlugin.scala:141)
     at org.apache.gluten.GlutenDriverPlugin.init(GlutenPlugin.scala:61)
   ```
   
   ### Fix direction
   
   In the untracked/non-dynamic branch, set `spark.memory.offHeap.size` to `0` 
when it is absent, so neither `setPredefinedConfigs` nor 
`VeloxListenerApi.onDriverStart` hits `NoSuchElementException`.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to