Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-37751

Apache Commons Crypto doesn't support Java 11

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 3.1.2, 3.2.0
    • None
    • Security
    • None
    • Spark 3.2.0 on kubernetes

    Description

      For kubernetes, we are using Java 11 in docker, https://github.com/apache/spark/blob/v3.2.0/resource-managers/kubernetes/docker/src/main/dockerfiles/spark/Dockerfile:

      ARG java_image_tag=11-jre-slim
      

      We have a simple app:

      object SimpleApp {
        def main(args: Array[String]) {
          val session = SparkSession.builder.getOrCreate
        
          // the size of demo.csv is 5GB
          val rdd = session.read.option("header", "true").option("inferSchema", "true").csv("/data/demo.csv").rdd
          val lines = rdd.repartition(200)
          val count = lines.count()
        }
      }
      

       
      Enable AES-based encryption for RPC connection by the following config:

      --conf spark.authenticate=true
      --conf spark.network.crypto.enabled=true
      

      This would cause the following error:

      java.lang.IllegalArgumentException: Frame length should be positive: -6119185687804983867
      	at org.sparkproject.guava.base.Preconditions.checkArgument(Preconditions.java:119)
      	at org.apache.spark.network.util.TransportFrameDecoder.decodeNext(TransportFrameDecoder.java:150)
      	at org.apache.spark.network.util.TransportFrameDecoder.channelRead(TransportFrameDecoder.java:98)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
      	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
      	at org.apache.spark.network.crypto.TransportCipher$DecryptionHandler.channelRead(TransportCipher.java:190)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
      	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
      	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
      	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
      	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
      	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
      	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
      	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
      	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
      	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
      	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
      	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
      	at java.base/java.lang.Thread.run(Unknown Source) 

      The error disappears in 8-jre-slim. It seems that Apache Commons Crypto 1.1.0 only works with Java 8: https://commons.apache.org/proper/commons-crypto/download_crypto.cgi

      Attachments

        Activity

          People

            Unassigned Unassigned
            fengsp Shipeng Feng
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: