Skip to content

Commit fd971d1

Browse files
authored
fix: configure Undertow test entity size (#12892)
fixes #12859 ## Background This PR updates the grpc-servlet Undertow tests to work with Undertow `2.2.39.Final` and `2.3.21.Final`. Those releases changed Undertow's default `MAX_ENTITY_SIZE` to 2 MiB, which caused `UndertowInteropTest.veryLargeRequest()` to fail before the request reached the gRPC servlet. ## Cause `UndertowInteropTest.veryLargeRequest()` sends a 10 MiB unary request. The test server already configured gRPC's `maxInboundMessageSize`, but it did not configure Undertow's container-level entity size limit. After the Undertow default changed, the container started rejecting the request and the client saw `RST_STREAM ... CANCEL`. ## Changes - Set `UndertowOptions.MAX_ENTITY_SIZE` explicitly in `UndertowInteropTest` - Set `UndertowOptions.MAX_ENTITY_SIZE` explicitly in `UndertowTransportTest` to keep the transport test environment effectively unbounded - Upgrade Undertow test dependencies to `2.2.39.Final` and `2.3.21.Final` ## Verification - `./gradlew -PskipAndroid=true -PskipCodegen=true :grpc-servlet:undertowTest --tests io.grpc.servlet.UndertowInteropTest` - `./gradlew -PskipAndroid=true -PskipCodegen=true :grpc-servlet:undertowTest --tests io.grpc.servlet.UndertowTransportTest`
1 parent c8079ee commit fd971d1

3 files changed

Lines changed: 8 additions & 9 deletions

File tree

gradle/libs.versions.toml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,7 @@ tomcat-embed-core = "org.apache.tomcat.embed:tomcat-embed-core:10.1.55"
146146
# checkForUpdates: tomcat-embed-core9:9.+
147147
tomcat-embed-core9 = "org.apache.tomcat.embed:tomcat-embed-core:9.0.118"
148148
truth = "com.google.truth:truth:1.4.5"
149-
# 2.2.39 fails UndertowInteropTest.veryLargeRequest()
150-
# https://github.com/grpc/grpc-java/issues/12859
151-
# (disabled) checkForUpdates: undertow-servlet22:2.2.+
152-
# checkForUpdates: undertow-servlet22:2.2.38.Final
153-
undertow-servlet22 = "io.undertow:undertow-servlet:2.2.38.Final"
154-
# 2.3.21 fails UndertowInteropTest.veryLargeRequest()
155-
# https://github.com/grpc/grpc-java/issues/12859
156-
# checkForUpdates: undertow-servlet:2.3.20.Final
157-
undertow-servlet = "io.undertow:undertow-servlet:2.3.20.Final"
149+
# checkForUpdates: undertow-servlet22:2.2.+
150+
undertow-servlet22 = "io.undertow:undertow-servlet:2.2.39.Final"
151+
# checkForUpdates: undertow-servlet:2.3.+
152+
undertow-servlet = "io.undertow:undertow-servlet:2.3.21.Final"

servlet/src/undertowTest/java/io/grpc/servlet/UndertowInteropTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
public class UndertowInteropTest extends AbstractInteropTest {
4848
private static final String HOST = "localhost";
4949
private static final String MYAPP = "/grpc.testing.TestService";
50+
private static final long MAX_ENTITY_SIZE = AbstractInteropTest.MAX_MESSAGE_SIZE;
5051
private int port;
5152
private Undertow server;
5253
private DeploymentManager manager;
@@ -101,6 +102,7 @@ protected void startServer(ServerBuilder<?> builder) {
101102
.addPrefixPath("/", servletHandler); // for unimplementedService test
102103
server = Undertow.builder()
103104
.setServerOption(UndertowOptions.ENABLE_HTTP2, true)
105+
.setServerOption(UndertowOptions.MAX_ENTITY_SIZE, MAX_ENTITY_SIZE)
104106
.setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 5000 /* 5 sec */)
105107
.addHttpListener(0, HOST)
106108
.setHandler(path)

servlet/src/undertowTest/java/io/grpc/servlet/UndertowTransportTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class UndertowTransportTest extends AbstractTransportTest {
6363

6464
private static final String HOST = "localhost";
6565
private static final String MYAPP = "/service";
66+
private static final long MAX_ENTITY_SIZE = Integer.MAX_VALUE;
6667

6768
private final FakeClock fakeClock = new FakeClock();
6869

@@ -131,6 +132,7 @@ public void start(ServerListener listener) throws IOException {
131132
undertowServer =
132133
Undertow.builder()
133134
.setServerOption(UndertowOptions.ENABLE_HTTP2, true)
135+
.setServerOption(UndertowOptions.MAX_ENTITY_SIZE, MAX_ENTITY_SIZE)
134136
.setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 5000 /* 5 sec */)
135137
.addHttpListener(0, HOST)
136138
.setHandler(path)

0 commit comments

Comments
 (0)