You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by gu...@apache.org on 2018/04/21 15:15:10 UTC
spark git commit: [SPARK-24029][CORE] Set SO_REUSEADDR on listen
sockets.
Repository: spark
Updated Branches:
refs/heads/master 1d758dc73 -> 32b4bcd6d
[SPARK-24029][CORE] Set SO_REUSEADDR on listen sockets.
This allows sockets to be bound even if there are sockets
from a previous application that are still pending closure. It
avoids bind issues when, for example, re-starting the SHS.
Don't enable the option on Windows though. The following page
explains some odd behavior that this option can have there:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740621%28v=vs.85%29.aspx
I intentionally ignored server sockets that always bind to
ephemeral ports, since those don't benefit from this option.
Author: Marcelo Vanzin <va...@cloudera.com>
Closes #21110 from vanzin/SPARK-24029.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/32b4bcd6
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/32b4bcd6
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/32b4bcd6
Branch: refs/heads/master
Commit: 32b4bcd6d31b92b179a15f9886779fc5f96404b5
Parents: 1d758dc
Author: Marcelo Vanzin <va...@cloudera.com>
Authored: Sat Apr 21 23:14:58 2018 +0800
Committer: hyukjinkwon <gu...@apache.org>
Committed: Sat Apr 21 23:14:58 2018 +0800
----------------------------------------------------------------------
.../java/org/apache/spark/network/server/TransportServer.java | 4 +++-
.../org/apache/spark/deploy/rest/RestSubmissionServer.scala | 1 +
core/src/main/scala/org/apache/spark/ui/JettyUtils.scala | 1 +
3 files changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/32b4bcd6/common/network-common/src/main/java/org/apache/spark/network/server/TransportServer.java
----------------------------------------------------------------------
diff --git a/common/network-common/src/main/java/org/apache/spark/network/server/TransportServer.java b/common/network-common/src/main/java/org/apache/spark/network/server/TransportServer.java
index 0719fa76..6127509 100644
--- a/common/network-common/src/main/java/org/apache/spark/network/server/TransportServer.java
+++ b/common/network-common/src/main/java/org/apache/spark/network/server/TransportServer.java
@@ -32,6 +32,7 @@ import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.socket.SocketChannel;
+import org.apache.commons.lang3.SystemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -98,7 +99,8 @@ public class TransportServer implements Closeable {
.group(bossGroup, workerGroup)
.channel(NettyUtils.getServerChannelClass(ioMode))
.option(ChannelOption.ALLOCATOR, allocator)
- .childOption(ChannelOption.ALLOCATOR, allocator);
+ .childOption(ChannelOption.ALLOCATOR, allocator)
+ .childOption(ChannelOption.SO_REUSEADDR, !SystemUtils.IS_OS_WINDOWS);
this.metrics = new NettyMemoryMetrics(
allocator, conf.getModuleName() + "-server", conf);
http://git-wip-us.apache.org/repos/asf/spark/blob/32b4bcd6/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala b/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
index e88195d..3d99d08 100644
--- a/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
+++ b/core/src/main/scala/org/apache/spark/deploy/rest/RestSubmissionServer.scala
@@ -94,6 +94,7 @@ private[spark] abstract class RestSubmissionServer(
new HttpConnectionFactory())
connector.setHost(host)
connector.setPort(startPort)
+ connector.setReuseAddress(!Utils.isWindows)
server.addConnector(connector)
val mainHandler = new ServletContextHandler
http://git-wip-us.apache.org/repos/asf/spark/blob/32b4bcd6/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
----------------------------------------------------------------------
diff --git a/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala b/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
index 0e8a630..d6a025a 100644
--- a/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
+++ b/core/src/main/scala/org/apache/spark/ui/JettyUtils.scala
@@ -344,6 +344,7 @@ private[spark] object JettyUtils extends Logging {
connectionFactories: _*)
connector.setPort(port)
connector.setHost(hostName)
+ connector.setReuseAddress(!Utils.isWindows)
// Currently we only use "SelectChannelConnector"
// Limit the max acceptor number to 8 so that we don't waste a lot of threads
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org