Skip to content

Commit a81ab9b

Browse files
committed
allow httpServer idle connection timeout configuration
1 parent 086b291 commit a81ab9b

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

sfs-server/src/main/java/org/sfs/SfsSingletonServer.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ public class SfsSingletonServer extends Server implements Shareable {
137137
private Set<HostAndPort> parsedPublishAddresses = new LinkedHashSet<>();
138138
private Set<HostAndPort> clusterHosts = new LinkedHashSet<>();
139139
private List<HttpServer> httpServers = new ArrayList<>();
140-
private int verticleMaxHeaderSize;
140+
private int httpServerMaxHeaderSize;
141+
private int httpServerIdleConnectionTimeout;
142+
private int remoteNodeIdleConnectionTimeout;
141143
private boolean started = false;
142144
private Throwable startException = null;
143145
private int remoteNodeMaxPoolSize;
@@ -217,12 +219,18 @@ public void start(final Future<Void> startedResult) {
217219

218220
nodes = new Nodes();
219221

220-
verticleMaxHeaderSize = new Integer(ConfigHelper.getFieldOrEnv(config, "http.maxheadersize", "8192"));
221-
Preconditions.checkArgument(verticleMaxHeaderSize > 0, "http.maxheadersize must be greater than 0");
222+
httpServerMaxHeaderSize = new Integer(ConfigHelper.getFieldOrEnv(config, "http.maxheadersize", "8192"));
223+
Preconditions.checkArgument(httpServerMaxHeaderSize > 0, "http.maxheadersize must be greater than 0");
224+
225+
httpServerIdleConnectionTimeout = new Integer(ConfigHelper.getFieldOrEnv(config, "http.idleconnectiontimeout", String.valueOf(TimeUnit.MINUTES.toMillis(20))));
226+
Preconditions.checkArgument(httpServerIdleConnectionTimeout > 0, "http.idleconnectiontimeout must be greater than 0");
222227

223228
int nodeStatsRefreshInterval = new Integer(ConfigHelper.getFieldOrEnv(config, "node_stats_refresh_interval", String.valueOf(TimeUnit.SECONDS.toMillis(1))));
224229
Preconditions.checkArgument(nodeStatsRefreshInterval > 0, "node_stats_refresh_interval must be greater than 0");
225230

231+
remoteNodeIdleConnectionTimeout = new Integer(ConfigHelper.getFieldOrEnv(config, "remotenode.idleconnectiontimeout", "30"));
232+
Preconditions.checkArgument(remoteNodeIdleConnectionTimeout > 0, "remotenode.idleconnectiontimeout must be greater than 0");
233+
226234
remoteNodeMaxPoolSize = new Integer(ConfigHelper.getFieldOrEnv(config, "remotenode.maxpoolsize", "25"));
227235
Preconditions.checkArgument(remoteNodeMaxPoolSize > 0, "remotenode.maxpoolsize must be greater than 0");
228236

@@ -582,7 +590,7 @@ public Observable<List<HttpServer>> initHttpListeners(VertxContext<Server> vertx
582590
if (!listeningHostAddresses.contains(hostAndPort)) {
583591
if (createHttpServer) {
584592
LOGGER.info("Creating http listener on " + hostAndPort);
585-
return createHttpServer(vertxContext, hostAndPort, verticleMaxHeaderSize, createRouter(vertxContext))
593+
return createHttpServer(vertxContext, hostAndPort, createRouter(vertxContext))
586594
.onErrorResumeNext(throwable -> {
587595
LOGGER.warn("Failed to start listener " + hostAndPort.toString(), throwable);
588596
return Defer.just(null);
@@ -605,15 +613,15 @@ public Observable<List<HttpServer>> initHttpListeners(VertxContext<Server> vertx
605613
.map(_continue -> httpServers);
606614
}
607615

608-
protected Observable<HttpServer> createHttpServer(VertxContext<Server> vertxContext, HostAndPort hostAndPort, int verticleMaxHeaderSize, Router router) {
616+
protected Observable<HttpServer> createHttpServer(VertxContext<Server> vertxContext, HostAndPort hostAndPort, Router router) {
609617
ObservableFuture<HttpServer> handler = RxHelper.observableFuture();
610618
HttpServerOptions httpServerOptions = new HttpServerOptions()
611-
.setMaxHeaderSize(verticleMaxHeaderSize)
619+
.setMaxHeaderSize(httpServerMaxHeaderSize)
612620
.setCompressionSupported(false)
613621
.setUsePooledBuffers(true)
614622
.setAcceptBacklog(10000)
615623
.setReuseAddress(true)
616-
.setIdleTimeout(30)
624+
.setIdleTimeout(httpServerIdleConnectionTimeout)
617625
.setHandle100ContinueAutomatically(true);
618626
vertxContext.vertx().createHttpServer(httpServerOptions)
619627
.requestHandler(router::accept)
@@ -630,7 +638,7 @@ protected HttpClient createHttpClient(Vertx v, boolean https) {
630638
.setPipelining(false)
631639
.setMaxWaitQueueSize(200)
632640
.setReuseAddress(true)
633-
.setIdleTimeout(30)
641+
.setIdleTimeout(remoteNodeIdleConnectionTimeout)
634642
.setSsl(https);
635643

636644
return v.createHttpClient(httpClientOptions);

0 commit comments

Comments
 (0)