From e9588ca04b47c20cb29df5370becd30130e90b38 Mon Sep 17 00:00:00 2001 From: ayudovin Date: Tue, 4 Dec 2018 15:30:24 -0800 Subject: [PATCH 1/2] Support server.connection-timeout for Netty server --- .../NettyWebServerFactoryCustomizer.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java index eb226513c3..2b519f83c3 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java @@ -16,6 +16,10 @@ package org.springframework.boot.autoconfigure.web.embedded; +import java.time.Duration; + +import io.netty.channel.ChannelOption; + import org.springframework.boot.autoconfigure.web.ServerProperties; import org.springframework.boot.cloud.CloudPlatform; import org.springframework.boot.context.properties.PropertyMapper; @@ -31,6 +35,7 @@ import org.springframework.util.unit.DataSize; * * @author Brian Clozel * @author Chentao Qu + * @author Artsiom Yudovin * @since 2.1.0 */ public class NettyWebServerFactoryCustomizer @@ -60,6 +65,10 @@ public class NettyWebServerFactoryCustomizer .asInt(DataSize::toBytes) .to((maxHttpRequestHeaderSize) -> customizeMaxHttpHeaderSize(factory, maxHttpRequestHeaderSize)); + propertyMapper.from(this.serverProperties::getConnectionTimeout).whenNonNull() + .asInt(Duration::toMillis) + .to((duration) -> customizeConnectionTimeOut(factory, duration)); + } private boolean getOrDeduceUseForwardHeaders(ServerProperties serverProperties, @@ -78,4 +87,12 @@ public class NettyWebServerFactoryCustomizer .maxHeaderSize(maxHttpHeaderSize))); } + private void customizeConnectionTimeOut(NettyReactiveWebServerFactory factory, + int duration) { + factory.addServerCustomizers((NettyServerCustomizer) (httpServer) -> httpServer + .tcpConfiguration((tcpServer) -> tcpServer + .bootstrap((serverBootstrap) -> serverBootstrap.childOption( + ChannelOption.CONNECT_TIMEOUT_MILLIS, duration)))); + } + } From 6200a319f2e21c26333324272af33002ae49ff1a Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Tue, 8 Jan 2019 16:03:44 +0100 Subject: [PATCH 2/2] Polish Closes gh-15385 --- .../web/embedded/NettyWebServerFactoryCustomizer.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java index 2b519f83c3..346bf60b6f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/NettyWebServerFactoryCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -91,8 +91,7 @@ public class NettyWebServerFactoryCustomizer int duration) { factory.addServerCustomizers((NettyServerCustomizer) (httpServer) -> httpServer .tcpConfiguration((tcpServer) -> tcpServer - .bootstrap((serverBootstrap) -> serverBootstrap.childOption( - ChannelOption.CONNECT_TIMEOUT_MILLIS, duration)))); + .selectorOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, duration))); } }