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

csy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/auron.git


The following commit(s) were added to refs/heads/master by this push:
     new c48e26f6 [AURON #2107] Fix driver spill NPE error (#2108)
c48e26f6 is described below

commit c48e26f6354e22a90e851019262dc0019c02bb48
Author: Yizhong Zhang <[email protected]>
AuthorDate: Mon Mar 23 10:52:32 2026 +0800

    [AURON #2107] Fix driver spill NPE error (#2108)
    
    # Which issue does this PR close?
    
    Closes #2107
    
    # Rationale for this change
    When `SparkOnHeapSpillManager.current` is called on the driver side,
    `TaskContext.get` returns null, causing a NPE.
    
    # What changes are included in this PR?
    Add a null check when TaskContext is unavailable.
    Update the JNI bridge SIG_TYPE to resolve methods against the
    OnHeapSpillManager.
    
    # Are there any user-facing changes?
    No.
    
    # How was this patch tested?
    UT
    
    Co-authored-by: zhangyizhong <[email protected]>
---
 native-engine/auron-jni-bridge/src/jni_bridge.rs                    | 2 +-
 .../org/apache/spark/sql/auron/memory/SparkOnHeapSpillManager.scala | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/native-engine/auron-jni-bridge/src/jni_bridge.rs 
b/native-engine/auron-jni-bridge/src/jni_bridge.rs
index a98ae7f5..f9b5d030 100644
--- a/native-engine/auron-jni-bridge/src/jni_bridge.rs
+++ b/native-engine/auron-jni-bridge/src/jni_bridge.rs
@@ -1535,7 +1535,7 @@ pub struct AuronOnHeapSpillManager<'a> {
     pub method_releaseSpill_ret: ReturnType,
 }
 impl<'a> AuronOnHeapSpillManager<'a> {
-    pub const SIG_TYPE: &'static str = 
"org/apache/spark/sql/auron/memory/SparkOnHeapSpillManager";
+    pub const SIG_TYPE: &'static str = 
"org/apache/auron/memory/OnHeapSpillManager";
 
     pub fn new(env: &JNIEnv<'a>) -> JniResult<AuronOnHeapSpillManager<'a>> {
         let class = get_global_jclass(env, Self::SIG_TYPE)?;
diff --git 
a/spark-extension/src/main/scala/org/apache/spark/sql/auron/memory/SparkOnHeapSpillManager.scala
 
b/spark-extension/src/main/scala/org/apache/spark/sql/auron/memory/SparkOnHeapSpillManager.scala
index b1122502..a69d9ea1 100644
--- 
a/spark-extension/src/main/scala/org/apache/spark/sql/auron/memory/SparkOnHeapSpillManager.scala
+++ 
b/spark-extension/src/main/scala/org/apache/spark/sql/auron/memory/SparkOnHeapSpillManager.scala
@@ -195,6 +195,10 @@ object SparkOnHeapSpillManager extends Logging {
 
   def current: OnHeapSpillManager = {
     val tc = TaskContext.get
-    all.getOrElseUpdate(tc.taskAttemptId(), new SparkOnHeapSpillManager(tc))
+    if (tc != null) {
+      all.getOrElseUpdate(tc.taskAttemptId(), new SparkOnHeapSpillManager(tc))
+    } else {
+      OnHeapSpillManager.getDisabledOnHeapSpillManager
+    }
   }
 }

Reply via email to