Github user CHOIJAEHONG1 commented on the pull request:

    https://github.com/apache/spark/pull/7494#issuecomment-134795102
  
    
    Sorry for being late. 
    
    I got this error message in `SerDe.scala`. The byte sequence sent from 
`worker.R` is not null-terminated.
    I tried to append '\0' at the end of the byte sequence, it passed for this 
string but the bytes of the next call caused the same failure. 
    
    ```
    java.lang.AssertionError: assertion failed
        at scala.Predef$.assert(Predef.scala:165)
        at org.apache.spark.api.r.SerDe$.readStringBytes(SerDe.scala:100)
        at org.apache.spark.api.r.SerDe$.readString(SerDe.scala:110)
        at 
org.apache.spark.api.r.RBackendHandler.channelRead0(RBackendHandler.scala:49)
        at 
org.apache.spark.api.r.RBackendHandler.channelRead0(RBackendHandler.scala:37)
        at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:244)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
        at 
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
        at java.lang.Thread.run(Thread.java:745)
    [1] "returnStatus"
    integer(0)
    Error in readTypedObject(con, type) :
      Unsupported type for deserialization
    Calls: test_package ... callJStatic -> invokeJava -> readObject -> 
readTypedObject
    ```
    
    ```
    SerDe.scala
      def readStringBytes(in: DataInputStream, len: Int): String = {
        val bytes = new Array[Byte](len)
        in.readFully(bytes)
        println("bytes is " + bytes.map("%02x".format(_)).mkString(" "))
        assert(bytes(len - 1) == 0)
        val str = new String(bytes.dropRight(1), "UTF-8")
        str
      }
    ```
    
    The output.
    ```
    bytes is 6f 72 67 2e 61 70 61 63 68 65 2e 73 70 61 72 6b 2e 61 70 69 2e 72 
2e 52 52 44 44
    ```
    



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

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

Reply via email to