From 100ddc1898f95db3046043d77921f8323f00a4fe Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Dec 2024 12:40:43 -0700 Subject: [PATCH 1/6] wip: trying to debug why we have an extra data frame in the client streaming st blocking case --- .../io/servicetalk/grpc/api/GrpcRouter.java | 2 + servicetalk-grpc-netty/build.gradle | 2 + .../grpc/netty/DefaultGrpcServerBuilder.java | 2 + .../netty/TrailersOptimizationFilter.java | 31 +++++++++++ .../grpc/netty/ProtocolCompatibilityTest.java | 37 +++++++------ .../src/test/resources/log4j2.xml | 55 +++++++++++++++++++ .../servicetalk/http/api/HttpContextKeys.java | 3 + 7 files changed, 115 insertions(+), 17 deletions(-) create mode 100644 servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java create mode 100644 servicetalk-grpc-netty/src/test/resources/log4j2.xml diff --git a/servicetalk-grpc-api/src/main/java/io/servicetalk/grpc/api/GrpcRouter.java b/servicetalk-grpc-api/src/main/java/io/servicetalk/grpc/api/GrpcRouter.java index 6392f7f1dc..816423edf5 100644 --- a/servicetalk-grpc-api/src/main/java/io/servicetalk/grpc/api/GrpcRouter.java +++ b/servicetalk-grpc-api/src/main/java/io/servicetalk/grpc/api/GrpcRouter.java @@ -91,6 +91,7 @@ import static io.servicetalk.grpc.api.GrpcUtils.setStatusOk; import static io.servicetalk.grpc.api.GrpcUtils.validateContentType; import static io.servicetalk.http.api.HttpApiConversions.toStreamingHttpService; +import static io.servicetalk.http.api.HttpContextKeys.HTTP_OPTIMIZE_ERROR_STREAM; import static io.servicetalk.http.api.HttpExecutionStrategies.customStrategyBuilder; import static io.servicetalk.http.api.HttpExecutionStrategies.defaultStrategy; import static io.servicetalk.http.api.HttpExecutionStrategies.offloadAll; @@ -708,6 +709,7 @@ public void handle(final HttpServiceContext ctx, final BlockingStreamingHttpRequ methodDescriptor.httpPath(), t); HttpHeaders trailers; if (grpcResponse == null || (trailers = grpcResponse.trailers()) == null) { + response.context().put(HTTP_OPTIMIZE_ERROR_STREAM, Boolean.TRUE); setStatus(response.headers(), t, allocator); // Use HTTP response to avoid setting "OK" in trailers and allocating a serializer response.sendMetaData().close(); diff --git a/servicetalk-grpc-netty/build.gradle b/servicetalk-grpc-netty/build.gradle index f8b2bd8c79..bba5c37e63 100644 --- a/servicetalk-grpc-netty/build.gradle +++ b/servicetalk-grpc-netty/build.gradle @@ -72,6 +72,8 @@ dependencies { testImplementation "org.hamcrest:hamcrest:$hamcrestVersion" testImplementation "org.mockito:mockito-core:$mockitoCoreVersion" testImplementation "org.mockito:mockito-junit-jupiter:$mockitoCoreVersion" + + runtimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:$log4jVersion" } protobuf { diff --git a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java index 6dccf4ad55..7c12cd0e10 100644 --- a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java +++ b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java @@ -146,6 +146,8 @@ private ExecutionContextInterceptorHttpServerBuilder preBuild() { final ExecutionContextInterceptorHttpServerBuilder interceptor = new ExecutionContextInterceptorHttpServerBuilder(httpServerBuilderSupplier.get()); + interceptor.appendServiceFilter(TrailersOptimizationFilter::new); + interceptor.appendNonOffloadingServiceFilter(GrpcExceptionMapperServiceFilter.INSTANCE); directCallInitializer.initialize(interceptor); diff --git a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java new file mode 100644 index 0000000000..b23b6493e2 --- /dev/null +++ b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java @@ -0,0 +1,31 @@ +package io.servicetalk.grpc.netty; + +import io.servicetalk.concurrent.api.Single; +import io.servicetalk.http.api.HttpResponse; +import io.servicetalk.http.api.HttpServiceContext; +import io.servicetalk.http.api.StreamingHttpRequest; +import io.servicetalk.http.api.StreamingHttpResponse; +import io.servicetalk.http.api.StreamingHttpResponseFactory; +import io.servicetalk.http.api.StreamingHttpService; +import io.servicetalk.http.api.StreamingHttpServiceFilter; + +import static io.servicetalk.http.api.HttpContextKeys.HTTP_OPTIMIZE_ERROR_STREAM; + +public class TrailersOptimizationFilter extends StreamingHttpServiceFilter { + public TrailersOptimizationFilter(StreamingHttpService delegate) { + super(delegate); + } + + @Override + public Single handle(HttpServiceContext ctx, StreamingHttpRequest request, StreamingHttpResponseFactory responseFactory) { + return super.handle(ctx, request, responseFactory).flatMap(response -> { + Single mappedResponse; + if (Boolean.TRUE.equals(response.context().get(HTTP_OPTIMIZE_ERROR_STREAM))) { + mappedResponse = response.toResponse().map(HttpResponse::toStreamingResponse); + } else { + mappedResponse = Single.succeeded(response); + } + return mappedResponse.shareContextOnSubscribe(); + }); + } +} diff --git a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java index ea95d17eed..c5a9828298 100644 --- a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java +++ b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java @@ -65,6 +65,7 @@ import io.servicetalk.http.api.StreamingHttpServiceFilter; import io.servicetalk.http.netty.HttpClients; import io.servicetalk.http.netty.HttpServers; +import io.servicetalk.logging.api.LogLevel; import io.servicetalk.test.resources.DefaultTestCerts; import io.servicetalk.transport.api.ClientSslConfigBuilder; import io.servicetalk.transport.api.ServerContext; @@ -268,10 +269,10 @@ private static Collection clientServerParams() { for (boolean isClientServiceTalk : TRUE_FALSE) { for (boolean isServerServiceTalk : TRUE_FALSE) { for (boolean isServerBlocking : TRUE_FALSE) { - if (!isClientServiceTalk && isServerServiceTalk && isServerBlocking) { - // TODO there appears to be a potential bug in this combination. Separate bug filed. - continue; - } +// if (!isClientServiceTalk && isServerServiceTalk && isServerBlocking) { +// // TODO there appears to be a potential bug in this combination. Separate bug filed. +// continue; +// } if (isServerServiceTalk || !isServerBlocking) { args.add(Arguments.of(isClientServiceTalk, isServerServiceTalk, isServerBlocking)); } @@ -655,22 +656,22 @@ void unimplementedServiceError(final boolean isServiceTalkClient, try (TestServerContext server = serverSupplier.get(); CompatClient client = clientSupplier.apply(server.listenAddress())) { - final Single scalarResponse = - client.scalarCall(CompatRequest.newBuilder().setId(1).build()); - validateGrpcErrorInResponse(scalarResponse.toFuture(), false, UNIMPLEMENTED, - "Method grpc.netty.Compat/ScalarCall is unimplemented"); +// final Single scalarResponse = +// client.scalarCall(CompatRequest.newBuilder().setId(1).build()); +// validateGrpcErrorInResponse(scalarResponse.toFuture(), false, UNIMPLEMENTED, +// "Method grpc.netty.Compat/ScalarCall is unimplemented"); final Single clientStreamingResponse = client.clientStreamingCall(Publisher.from(CompatRequest.newBuilder().setId(1).build())); validateGrpcErrorInResponse(clientStreamingResponse.toFuture(), false, UNIMPLEMENTED, "Method grpc.netty.Compat/clientStreamingCall is unimplemented"); - final Publisher serverStreamingResponse = - client.serverStreamingCall(CompatRequest.newBuilder().setId(1).build()); - validateGrpcErrorInResponse(serverStreamingResponse.toFuture(), false, UNIMPLEMENTED, - "Method grpc.netty.Compat/serverStreamingCall is unimplemented"); - final Publisher bidirectionalStreamingResponse = - client.bidirectionalStreamingCall(Publisher.from(CompatRequest.newBuilder().setId(1).build())); - validateGrpcErrorInResponse(bidirectionalStreamingResponse.toFuture(), false, UNIMPLEMENTED, - "Method grpc.netty.Compat/bidirectionalStreamingCall is unimplemented"); +// final Publisher serverStreamingResponse = +// client.serverStreamingCall(CompatRequest.newBuilder().setId(1).build()); +// validateGrpcErrorInResponse(serverStreamingResponse.toFuture(), false, UNIMPLEMENTED, +// "Method grpc.netty.Compat/serverStreamingCall is unimplemented"); +// final Publisher bidirectionalStreamingResponse = +// client.bidirectionalStreamingCall(Publisher.from(CompatRequest.newBuilder().setId(1).build())); +// validateGrpcErrorInResponse(bidirectionalStreamingResponse.toFuture(), false, UNIMPLEMENTED, +// "Method grpc.netty.Compat/bidirectionalStreamingCall is unimplemented"); } } @@ -1475,7 +1476,9 @@ private static TestServerContext serviceTalkServer( .build(); final ServerContext serverContext = - serviceTalkServerBuilder(errorMode, ssl, timeout, b -> b.executionStrategy(strategy)) + serviceTalkServerBuilder(errorMode, ssl, timeout, b -> + b.executionStrategy(strategy) + .enableWireLogging("servicetalk-examples-wire-logger", LogLevel.DEBUG, () -> true)) .listenAndAwait(serviceFactory); return TestServerContext.fromServiceTalkServerContext(serverContext); diff --git a/servicetalk-grpc-netty/src/test/resources/log4j2.xml b/servicetalk-grpc-netty/src/test/resources/log4j2.xml new file mode 100644 index 0000000000..3189386c8f --- /dev/null +++ b/servicetalk-grpc-netty/src/test/resources/log4j2.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java b/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java index a0a74cd89e..d0badd58a1 100644 --- a/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java +++ b/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java @@ -68,6 +68,9 @@ public final class HttpContextKeys { public static final Key HTTP_FORCE_NEW_CONNECTION = newKey("HTTP_FORCE_NEW_CONNECTION", Boolean.class); + public static final Key HTTP_OPTIMIZE_ERROR_STREAM = + newKey("HTTP_OPTIMIZE_FLUSH", Boolean.class); + private HttpContextKeys() { // No instances } From 21fbd8bde2c92e66df5a5b333d6dfe65962099b6 Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Dec 2024 16:31:39 -0700 Subject: [PATCH 2/6] Treat empty trailers as null --- .../grpc/netty/DefaultGrpcServerBuilder.java | 2 +- ...GrpcTrailersOptimizationServiceFilter.java | 64 +++++++++++++++++++ .../netty/TrailersOptimizationFilter.java | 31 --------- .../grpc/netty/ProtocolCompatibilityTest.java | 28 ++++---- .../http/api/DefaultHttpResponse.java | 2 +- 5 files changed, 78 insertions(+), 49 deletions(-) create mode 100644 servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcTrailersOptimizationServiceFilter.java delete mode 100644 servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java diff --git a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java index 7c12cd0e10..d7761616ce 100644 --- a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java +++ b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/DefaultGrpcServerBuilder.java @@ -146,7 +146,7 @@ private ExecutionContextInterceptorHttpServerBuilder preBuild() { final ExecutionContextInterceptorHttpServerBuilder interceptor = new ExecutionContextInterceptorHttpServerBuilder(httpServerBuilderSupplier.get()); - interceptor.appendServiceFilter(TrailersOptimizationFilter::new); + interceptor.appendServiceFilter(GrpcTrailersOptimizationServiceFilter.INSTANCE); interceptor.appendNonOffloadingServiceFilter(GrpcExceptionMapperServiceFilter.INSTANCE); diff --git a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcTrailersOptimizationServiceFilter.java b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcTrailersOptimizationServiceFilter.java new file mode 100644 index 0000000000..5c5f1ec683 --- /dev/null +++ b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcTrailersOptimizationServiceFilter.java @@ -0,0 +1,64 @@ +/* + * Copyright © 2019, 2021 Apple Inc. and the ServiceTalk project authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.servicetalk.grpc.netty; + +import io.servicetalk.concurrent.api.Publisher; +import io.servicetalk.concurrent.api.Single; +import io.servicetalk.http.api.HttpExecutionStrategies; +import io.servicetalk.http.api.HttpExecutionStrategy; +import io.servicetalk.http.api.HttpResponse; +import io.servicetalk.http.api.HttpServiceContext; +import io.servicetalk.http.api.StreamingHttpRequest; +import io.servicetalk.http.api.StreamingHttpResponse; +import io.servicetalk.http.api.StreamingHttpResponseFactory; +import io.servicetalk.http.api.StreamingHttpService; +import io.servicetalk.http.api.StreamingHttpServiceFilter; +import io.servicetalk.http.api.StreamingHttpServiceFilterFactory; + +import static io.servicetalk.http.api.HttpContextKeys.HTTP_OPTIMIZE_ERROR_STREAM; + +final class GrpcTrailersOptimizationServiceFilter implements StreamingHttpServiceFilterFactory { + static final GrpcTrailersOptimizationServiceFilter INSTANCE = new GrpcTrailersOptimizationServiceFilter(); + + private GrpcTrailersOptimizationServiceFilter() { + } + + @Override + public StreamingHttpServiceFilter create(StreamingHttpService service) { + return new StreamingHttpServiceFilter(service) { + @Override + public Single handle(final HttpServiceContext ctx, + final StreamingHttpRequest request, + final StreamingHttpResponseFactory responseFactory) { + return super.handle(ctx, request, responseFactory).flatMap(response -> { + Single mappedResponse; + if (Boolean.TRUE.equals(response.context().get(HTTP_OPTIMIZE_ERROR_STREAM))) { + mappedResponse = response.payloadBody(Publisher.empty()).toResponse() + .map(HttpResponse::toStreamingResponse); + } else { + mappedResponse = Single.succeeded(response); + } + return mappedResponse.shareContextOnSubscribe(); + }); + } + }; + } + + @Override + public HttpExecutionStrategy requiredOffloads() { + return HttpExecutionStrategies.offloadNone(); + } +} diff --git a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java deleted file mode 100644 index b23b6493e2..0000000000 --- a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/TrailersOptimizationFilter.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.servicetalk.grpc.netty; - -import io.servicetalk.concurrent.api.Single; -import io.servicetalk.http.api.HttpResponse; -import io.servicetalk.http.api.HttpServiceContext; -import io.servicetalk.http.api.StreamingHttpRequest; -import io.servicetalk.http.api.StreamingHttpResponse; -import io.servicetalk.http.api.StreamingHttpResponseFactory; -import io.servicetalk.http.api.StreamingHttpService; -import io.servicetalk.http.api.StreamingHttpServiceFilter; - -import static io.servicetalk.http.api.HttpContextKeys.HTTP_OPTIMIZE_ERROR_STREAM; - -public class TrailersOptimizationFilter extends StreamingHttpServiceFilter { - public TrailersOptimizationFilter(StreamingHttpService delegate) { - super(delegate); - } - - @Override - public Single handle(HttpServiceContext ctx, StreamingHttpRequest request, StreamingHttpResponseFactory responseFactory) { - return super.handle(ctx, request, responseFactory).flatMap(response -> { - Single mappedResponse; - if (Boolean.TRUE.equals(response.context().get(HTTP_OPTIMIZE_ERROR_STREAM))) { - mappedResponse = response.toResponse().map(HttpResponse::toStreamingResponse); - } else { - mappedResponse = Single.succeeded(response); - } - return mappedResponse.shareContextOnSubscribe(); - }); - } -} diff --git a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java index c5a9828298..7512b72403 100644 --- a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java +++ b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java @@ -269,10 +269,6 @@ private static Collection clientServerParams() { for (boolean isClientServiceTalk : TRUE_FALSE) { for (boolean isServerServiceTalk : TRUE_FALSE) { for (boolean isServerBlocking : TRUE_FALSE) { -// if (!isClientServiceTalk && isServerServiceTalk && isServerBlocking) { -// // TODO there appears to be a potential bug in this combination. Separate bug filed. -// continue; -// } if (isServerServiceTalk || !isServerBlocking) { args.add(Arguments.of(isClientServiceTalk, isServerServiceTalk, isServerBlocking)); } @@ -656,22 +652,22 @@ void unimplementedServiceError(final boolean isServiceTalkClient, try (TestServerContext server = serverSupplier.get(); CompatClient client = clientSupplier.apply(server.listenAddress())) { -// final Single scalarResponse = -// client.scalarCall(CompatRequest.newBuilder().setId(1).build()); -// validateGrpcErrorInResponse(scalarResponse.toFuture(), false, UNIMPLEMENTED, -// "Method grpc.netty.Compat/ScalarCall is unimplemented"); + final Single scalarResponse = + client.scalarCall(CompatRequest.newBuilder().setId(1).build()); + validateGrpcErrorInResponse(scalarResponse.toFuture(), false, UNIMPLEMENTED, + "Method grpc.netty.Compat/ScalarCall is unimplemented"); final Single clientStreamingResponse = client.clientStreamingCall(Publisher.from(CompatRequest.newBuilder().setId(1).build())); validateGrpcErrorInResponse(clientStreamingResponse.toFuture(), false, UNIMPLEMENTED, "Method grpc.netty.Compat/clientStreamingCall is unimplemented"); -// final Publisher serverStreamingResponse = -// client.serverStreamingCall(CompatRequest.newBuilder().setId(1).build()); -// validateGrpcErrorInResponse(serverStreamingResponse.toFuture(), false, UNIMPLEMENTED, -// "Method grpc.netty.Compat/serverStreamingCall is unimplemented"); -// final Publisher bidirectionalStreamingResponse = -// client.bidirectionalStreamingCall(Publisher.from(CompatRequest.newBuilder().setId(1).build())); -// validateGrpcErrorInResponse(bidirectionalStreamingResponse.toFuture(), false, UNIMPLEMENTED, -// "Method grpc.netty.Compat/bidirectionalStreamingCall is unimplemented"); + final Publisher serverStreamingResponse = + client.serverStreamingCall(CompatRequest.newBuilder().setId(1).build()); + validateGrpcErrorInResponse(serverStreamingResponse.toFuture(), false, UNIMPLEMENTED, + "Method grpc.netty.Compat/serverStreamingCall is unimplemented"); + final Publisher bidirectionalStreamingResponse = + client.bidirectionalStreamingCall(Publisher.from(CompatRequest.newBuilder().setId(1).build())); + validateGrpcErrorInResponse(bidirectionalStreamingResponse.toFuture(), false, UNIMPLEMENTED, + "Method grpc.netty.Compat/bidirectionalStreamingCall is unimplemented"); } } diff --git a/servicetalk-http-api/src/main/java/io/servicetalk/http/api/DefaultHttpResponse.java b/servicetalk-http-api/src/main/java/io/servicetalk/http/api/DefaultHttpResponse.java index bdd9718b7f..8b8ea0e95e 100644 --- a/servicetalk-http-api/src/main/java/io/servicetalk/http/api/DefaultHttpResponse.java +++ b/servicetalk-http-api/src/main/java/io/servicetalk/http/api/DefaultHttpResponse.java @@ -37,7 +37,7 @@ final class DefaultHttpResponse extends AbstractDelegatingHttpResponse @Nullable final HttpHeaders trailers) { super(original); this.payloadBody = payloadBody; - this.trailers = trailers; + this.trailers = (trailers != null && trailers.isEmpty()) ? null : trailers; } @Override From 21dda6663e6acd2af796280d8a212b73e17ab2ba Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Dec 2024 16:34:27 -0700 Subject: [PATCH 3/6] remove logging changes --- servicetalk-grpc-netty/build.gradle | 2 - .../src/test/resources/log4j2.xml | 55 ------------------- 2 files changed, 57 deletions(-) delete mode 100644 servicetalk-grpc-netty/src/test/resources/log4j2.xml diff --git a/servicetalk-grpc-netty/build.gradle b/servicetalk-grpc-netty/build.gradle index bba5c37e63..f8b2bd8c79 100644 --- a/servicetalk-grpc-netty/build.gradle +++ b/servicetalk-grpc-netty/build.gradle @@ -72,8 +72,6 @@ dependencies { testImplementation "org.hamcrest:hamcrest:$hamcrestVersion" testImplementation "org.mockito:mockito-core:$mockitoCoreVersion" testImplementation "org.mockito:mockito-junit-jupiter:$mockitoCoreVersion" - - runtimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:$log4jVersion" } protobuf { diff --git a/servicetalk-grpc-netty/src/test/resources/log4j2.xml b/servicetalk-grpc-netty/src/test/resources/log4j2.xml deleted file mode 100644 index 3189386c8f..0000000000 --- a/servicetalk-grpc-netty/src/test/resources/log4j2.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 2df32a59855e8a1683e22d82f6ae7c12ad2e0ecd Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Dec 2024 16:35:33 -0700 Subject: [PATCH 4/6] remove frame logging from test --- .../io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java index 7512b72403..d8f1e37aed 100644 --- a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java +++ b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java @@ -1472,9 +1472,7 @@ private static TestServerContext serviceTalkServer( .build(); final ServerContext serverContext = - serviceTalkServerBuilder(errorMode, ssl, timeout, b -> - b.executionStrategy(strategy) - .enableWireLogging("servicetalk-examples-wire-logger", LogLevel.DEBUG, () -> true)) + serviceTalkServerBuilder(errorMode, ssl, timeout, b -> b.executionStrategy(strategy)) .listenAndAwait(serviceFactory); return TestServerContext.fromServiceTalkServerContext(serverContext); From ee8e8e8a90e58e60cc2582443a4422fbfa59c2a3 Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Dec 2024 16:36:11 -0700 Subject: [PATCH 5/6] organize imports --- .../io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java index d8f1e37aed..4ee0cbf107 100644 --- a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java +++ b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java @@ -65,7 +65,6 @@ import io.servicetalk.http.api.StreamingHttpServiceFilter; import io.servicetalk.http.netty.HttpClients; import io.servicetalk.http.netty.HttpServers; -import io.servicetalk.logging.api.LogLevel; import io.servicetalk.test.resources.DefaultTestCerts; import io.servicetalk.transport.api.ClientSslConfigBuilder; import io.servicetalk.transport.api.ServerContext; From 214ce01ac890d9b3c9432a9fbb7fae0469fe4e12 Mon Sep 17 00:00:00 2001 From: Dave Date: Thu, 19 Dec 2024 16:37:42 -0700 Subject: [PATCH 6/6] make names match --- .../src/main/java/io/servicetalk/http/api/HttpContextKeys.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java b/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java index d0badd58a1..60833bd16d 100644 --- a/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java +++ b/servicetalk-http-api/src/main/java/io/servicetalk/http/api/HttpContextKeys.java @@ -69,7 +69,7 @@ public final class HttpContextKeys { newKey("HTTP_FORCE_NEW_CONNECTION", Boolean.class); public static final Key HTTP_OPTIMIZE_ERROR_STREAM = - newKey("HTTP_OPTIMIZE_FLUSH", Boolean.class); + newKey("HTTP_OPTIMIZE_ERROR_STREAM", Boolean.class); private HttpContextKeys() { // No instances