Github user mengxr commented on a diff in the pull request:

    https://github.com/apache/spark/pull/22085#discussion_r211359028
  
    --- Diff: 
core/src/main/scala/org/apache/spark/api/python/PythonRunner.scala ---
    @@ -180,7 +190,61 @@ private[spark] abstract class BasePythonRunner[IN, 
OUT](
             dataOut.writeInt(partitionIndex)
             // Python version of driver
             PythonRDD.writeUTF(pythonVer, dataOut)
    +        // Init a ServerSocket to accept method calls from Python side.
    +        val isBarrier = context.isInstanceOf[BarrierTaskContext]
    +        if (isBarrier) {
    +          serverSocket = Some(new ServerSocket(0, 1, 
InetAddress.getByName("localhost")))
    +          // A call to accept() for ServerSocket shall block infinitely.
    +          serverSocket.map(_.setSoTimeout(0))
    +          new Thread("accept-connections") {
    +            setDaemon(true)
    +
    +            override def run(): Unit = {
    +              while (!serverSocket.get.isClosed()) {
    +                var sock: Socket = null
    +                try {
    +                  sock = serverSocket.get.accept()
    +                  sock.setSoTimeout(10000)
    +                  val cmdString = readUtf8(sock)
    +                  if (cmdString.equals("run")) {
    +                    sock.setSoTimeout(0)
    +                    barrierAndServe(sock)
    +                  }
    +                } catch {
    +                  case _: SocketException =>
    --- End diff --
    
    Is the the timeout exception? I don't see any exception that we could 
silently ignore.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to