kyuubi icon indicating copy to clipboard operation
kyuubi copied to clipboard

[Bug] Execute scala - NPE issue

Open turboFei opened this issue 3 years ago • 4 comments

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!

turboFei avatar Jul 13 '22 18:07 turboFei

cc @iodone

turboFei avatar Jul 14 '22 01:07 turboFei

I'll follow up

iodone avatar Jul 14 '22 02:07 iodone

cc @iodone @turboFei Is there more detailed information to help me reproduce, I did not reproduce it locally.

iodone avatar Jul 19 '22 09:07 iodone

Seems it happened when the client side has many concurrent connections

turboFei avatar Jul 20 '22 01:07 turboFei

hi, load udf can cause this problem.

942011334 avatar Aug 19 '22 17:08 942011334

hi, load udf can cause this problem.

Could you help reproduce it? Just provide the step.

Thanks

@942011334

turboFei avatar Aug 20 '22 03:08 turboFei

error info: image

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

error case:

image

normal case: image

@turboFei

942011334 avatar Aug 20 '22 10:08 942011334

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

turboFei avatar Aug 20 '22 16:08 turboFei

To show the images in https://github.com/apache/incubator-kyuubi/issues/3064#issuecomment-1221292856

error info: image

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

error case:

image

normal case: image

turboFei avatar Aug 20 '22 16:08 turboFei

@iodone

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

turboFei avatar Aug 20 '22 16:08 turboFei