From 038a579a26ffcfc1c5540f28176f236779eef12a Mon Sep 17 00:00:00 2001 From: Andrew Ash Date: Mon, 30 Jun 2014 00:02:17 -0700 Subject: [PATCH] Trust the server start function to report the port the service started on --- core/src/main/scala/org/apache/spark/HttpServer.scala | 4 ++-- .../scala/org/apache/spark/network/ConnectionManager.scala | 2 +- .../main/scala/org/apache/spark/network/PortManager.scala | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/src/main/scala/org/apache/spark/HttpServer.scala b/core/src/main/scala/org/apache/spark/HttpServer.scala index 929b6380f51a9..e0c76feb124a2 100644 --- a/core/src/main/scala/org/apache/spark/HttpServer.scala +++ b/core/src/main/scala/org/apache/spark/HttpServer.scala @@ -48,7 +48,7 @@ private[spark] class HttpServer(resourceBase: File, private var server: Server = null private var port: Int = localPort - private def startOnPort(startPort: Int): Server = { + private def startOnPort(startPort: Int): (Server, Int) = { val server = new Server() val connector = new SocketConnector connector.setMaxIdleTime(60*1000) @@ -79,7 +79,7 @@ private[spark] class HttpServer(resourceBase: File, server.start() val actualPort = server.getConnectors()(0).getLocalPort() - server + (server, actualPort) } def start() { diff --git a/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala b/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala index e3ff67829b785..7e498fb78a06e 100644 --- a/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala +++ b/core/src/main/scala/org/apache/spark/network/ConnectionManager.scala @@ -104,7 +104,7 @@ private[spark] class ConnectionManager(port: Int, conf: SparkConf, private def startService(port: Int) = { serverChannel.socket.bind(new InetSocketAddress(port)) - serverChannel + (serverChannel, port) } PortManager.startWithIncrements(port, 3, startService) serverChannel.register(selector, SelectionKey.OP_ACCEPT) diff --git a/core/src/main/scala/org/apache/spark/network/PortManager.scala b/core/src/main/scala/org/apache/spark/network/PortManager.scala index 47b40b0f17b28..f9ad9629fe80a 100644 --- a/core/src/main/scala/org/apache/spark/network/PortManager.scala +++ b/core/src/main/scala/org/apache/spark/network/PortManager.scala @@ -38,13 +38,12 @@ private[spark] object PortManager extends Logging * @throws SparkException When unable to start service in the given number of attempts * @return */ - def startWithIncrements[T](startPort: Int, maxRetries: Int, startService: Int => T): + def startWithIncrements[T](startPort: Int, maxRetries: Int, startService: Int => (T, Int)): (T, Int) = { for( offset <- 0 to maxRetries) { val tryPort = startPort + offset try { - val service: T = startService(tryPort) - return (service, tryPort) + return startService(tryPort) } catch { case e: java.net.BindException => { if (!e.getMessage.contains("Address already in use") ||