[Bug] Execute scala - NPE issue
Code of Conduct
- [X] I agree to follow this project's Code of Conduct
Search before asking
- [X] I have searched in the issues and found no similar issues.
Describe the bug
11:16:39.018 INFO org.apache.kyuubi.operation.ExecuteStatement: Processing b_dapgap's query[d74ec33d-eedb-4f21-95a6-b7a4b067f004]: ERROR_STATE -> CLOSED_STATE, statement: spark.sparkContext.getConf.getOption
(
"spark.org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter.param.PROXY_URI_BASES")
.orElse(sc.uiWebUrl).getOrElse("").split(",").head
11:16:39.119 ERROR org.apache.kyuubi.server.KyuubiTBinaryFrontendService: Error executing statement:
org.apache.kyuubi.KyuubiSQLException: Error operating ExecuteScala: java.lang.NullPointerException
at scala.tools.nsc.classpath.FileUtils$AbstractFileOps$.isJarOrZip$extension(FileUtils.scala:32)
at scala.tools.nsc.classpath.ClassPathFactory$.newClassPath(ClassPathFactory.scala:91)
at scala.tools.nsc.Global.$anonfun$extendCompilerClassPath$1(Global.scala:825)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238)
at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
at scala.collection.TraversableLike.map(TraversableLike.scala:238)
at scala.collection.TraversableLike.map$(TraversableLike.scala:231)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at scala.tools.nsc.Global.extendCompilerClassPath(Global.scala:825)
at scala.tools.nsc.interpreter.IMain.addUrlsToClassPath(IMain.scala:259)
at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:68)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:87)
at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60)
at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:164)
at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:97)
at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:76)
at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:126)
at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:78)
at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:123)
at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66)
at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:261)
at org.apache.kyuubi.shade.org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557)
at org.apache.kyuubi.shade.org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542)
at org.apache.kyuubi.shade.org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.kyuubi.shade.org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36)
at org.apache.kyuubi.shade.org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
at org.apache.kyuubi.KyuubiSQLException$.apply(KyuubiSQLException.scala:69) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.engine.spark.operation.SparkOperation$$anonfun$onError$1.applyOrElse(SparkOperation.scala:112) ~[?:?]
at org.apache.kyuubi.engine.spark.operation.SparkOperation$$anonfun$onError$1.applyOrElse(SparkOperation.scala:96) ~[?:?]
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38) ~[scala-library-2.12.15.jar:?]
at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:88) ~[?:?]
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) ~[scala-library-2.12.15.jar:?]
at org.apache.kyuubi.engine.spark.operation.SparkOperation.withLocalProperties(SparkOperation.scala:87) ~[?:?]
at org.apache.kyuubi.engine.spark.operation.ExecuteScala.runInternal(ExecuteScala.scala:60) ~[?:?]
at org.apache.kyuubi.operation.AbstractOperation.run(AbstractOperation.scala:164) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.session.AbstractSession.runOperation(AbstractSession.scala:97) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.engine.spark.session.SparkSessionImpl.runOperation(SparkSessionImpl.scala:76) ~[?:?]
at org.apache.kyuubi.session.AbstractSession.$anonfun$executeStatement$1(AbstractSession.scala:126) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.session.AbstractSession.withAcquireRelease(AbstractSession.scala:78) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.session.AbstractSession.executeStatement(AbstractSession.scala:123) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.service.AbstractBackendService.executeStatement(AbstractBackendService.scala:66) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.service.TFrontendService.ExecuteStatement(TFrontendService.scala:261) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.shade.org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1557) ~[?:?]
at org.apache.kyuubi.shade.org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1542) ~[?:?]
at org.apache.kyuubi.shade.org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) ~[?:?]
at org.apache.kyuubi.shade.org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) ~[?:?]
at org.apache.kyuubi.service.authentication.TSetIpAddressProcessor.process(TSetIpAddressProcessor.scala:36) ~[kyuubi-common_2.12-1.6.0.1.5.0.jar:1.6.0.1.5.0]
at org.apache.kyuubi.shade.org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_202]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_202]
at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_202]
Caused by: java.lang.RuntimeException: java.lang.NullPointerException:null
at scala.tools.nsc.classpath.FileUtils$AbstractFileOps$.isJarOrZip$extension(FileUtils.scala:32) ~[?:?]
at scala.tools.nsc.classpath.ClassPathFactory$.newClassPath(ClassPathFactory.scala:91) ~[?:?]
at scala.tools.nsc.Global.$anonfun$extendCompilerClassPath$1(Global.scala:825) ~[?:?]
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238) ~[scala-library-2.12.15.jar:?]
at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36) ~[scala-library-2.12.15.jar:?]
at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33) ~[scala-library-2.12.15.jar:?]
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38) ~[scala-library-2.12.15.jar:?]
at scala.collection.TraversableLike.map(TraversableLike.scala:238) ~[scala-library-2.12.15.jar:?]
at scala.collection.TraversableLike.map$(TraversableLike.scala:231) ~[scala-library-2.12.15.jar:?]
at scala.collection.AbstractTraversable.map(Traversable.scala:108) ~[scala-library-2.12.15.jar:?]
at scala.tools.nsc.Global.extendCompilerClassPath(Global.scala:825) ~[?:?]
at scala.tools.nsc.interpreter.IMain.addUrlsToClassPath(IMain.scala:259) ~[?:?]
at org.apache.kyuubi.engine.spark.operation.ExecuteScala.$anonfun$runInternal$1(ExecuteScala.scala:68) ~[?:?]
Affects Version(s)
1.6.0
Kyuubi Server Log Output
No response
Kyuubi Engine Log Output
No response
Kyuubi Server Configurations
No response
Kyuubi Engine Configurations
No response
Additional context
No response
Are you willing to submit PR?
- [ ] Yes I am willing to submit a PR!
cc @iodone
I'll follow up
cc @iodone @turboFei Is there more detailed information to help me reproduce, I did not reproduce it locally.
Seems it happened when the client side has many concurrent connections
hi, load udf can cause this problem.
hi, load udf can cause this problem.
Could you help reproduce it? Just provide the step.
Thanks
@942011334
error info:

use arthas get info :scala.tools.nsc.interpreter.IMain addUrlsToClass
error case:
normal case:

@turboFei
From @942011334
To reproduce it:
create temporary function a .... using jar 'hdfs:/.....hive-udfxxx.jar'
select a() from XXX
Then close session and create a new session.
set kyuubi.operation.language=scala
spark.sql("select 100;").show;
The jar should be hdfs jar.
also cc @iodone
To show the images in https://github.com/apache/incubator-kyuubi/issues/3064#issuecomment-1221292856
error info:

use arthas get info :scala.tools.nsc.interpreter.IMain addUrlsToClass
error case:
normal case:

@iodone
Seems that we need get the local uri by SparkFiles.get?