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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5ef99bda9863 [SPARK-50606][CONNECT] Fix NPE on uninitiated 
SessionHolder
5ef99bda9863 is described below

commit 5ef99bda98636c8bdc98796ff8c8d0a6e731977d
Author: Kent Yao <[email protected]>
AuthorDate: Wed Dec 18 17:34:53 2024 +0800

    [SPARK-50606][CONNECT] Fix NPE on uninitiated SessionHolder
    
    ### What changes were proposed in this pull request?
    
    This PR fixes NPE like,
    
    ```scala
    {"ts":"2024-12-18T05:41:52.977Z","level":"ERROR","msg":"Exception while 
executing runnable 
org.sparkproject.connect.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable418f1536","exception":{"class":"java.lang.NullPointerException","msg":"Cannot
 invoke \"org.apache.spark.sql.connect.service.SessionHolder.userId()\" because 
the return value of 
\"org.apache.spark.sql.connect.service.SparkConnectAddArtifactsHandler.holder()\"
 is null","stacktrace":[{"cl [...]
    ```
    
    When I simply run case like,
    
    ```
    scala> spark.sql("SHOW TABLES").schema
    org.apache.spark.SparkException: 
org.sparkproject.io.grpc.StatusRuntimeException: UNKNOWN: Application error 
processing RPC
      
org.apache.spark.sql.connect.client.ArtifactManager.addArtifacts(ArtifactManager.scala:242)
      
org.apache.spark.sql.connect.client.ArtifactManager.uploadAllClassFileArtifacts(ArtifactManager.scala:205)
      
org.apache.spark.sql.connect.client.SparkConnectClient.execute(SparkConnectClient.scala:121)
      org.apache.spark.sql.SparkSession.$anonfun$sql$3(SparkSession.scala:247)
      
org.apache.spark.sql.SparkSession.$anonfun$sql$3$adapted(SparkSession.scala:243)
      org.apache.spark.sql.SparkSession.newDataset(SparkSession.scala:337)
      org.apache.spark.sql.SparkSession.newDataFrame(SparkSession.scala:329)
      org.apache.spark.sql.SparkSession.sql(SparkSession.scala:243)
      org.apache.spark.sql.SparkSession.sql(SparkSession.scala:220)
      org.apache.spark.sql.SparkSession.sql(SparkSession.scala:240)
      ammonite.$sess.cmd6$Helper.<init>(cmd6.sc:1)
      ammonite.$sess.cmd6$.<clinit>(cmd6.sc:7)
    ```
    
    I believe it suppressed the actual cause
    
    ### Why are the changes needed?
    bugfix
    
    ### Does this PR introduce _any_ user-facing change?
    
    no
    
    ### How was this patch tested?
    
    existing tests, (I do not know how to trigger this NPE in UT)
    ### Was this patch authored or co-authored using generative AI tooling?
    no
    
    Closes #49222 from yaooqinn/SPARK-50606.
    
    Authored-by: Kent Yao <[email protected]>
    Signed-off-by: Kent Yao <[email protected]>
---
 .../spark/sql/connect/service/SparkConnectAddArtifactsHandler.scala   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/service/SparkConnectAddArtifactsHandler.scala
 
b/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/service/SparkConnectAddArtifactsHandler.scala
index 72403016404c..3ba79402e99e 100644
--- 
a/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/service/SparkConnectAddArtifactsHandler.scala
+++ 
b/sql/connect/server/src/main/scala/org/apache/spark/sql/connect/service/SparkConnectAddArtifactsHandler.scala
@@ -87,8 +87,8 @@ class SparkConnectAddArtifactsHandler(val responseObserver: 
StreamObserver[AddAr
     ErrorUtils.handleError(
       "addArtifacts.onNext",
       responseObserver,
-      holder.userId,
-      holder.sessionId,
+      req.getUserContext.getUserId,
+      req.getSessionId,
       None,
       false,
       Some(() => {


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

Reply via email to