@@ -274,7 +274,8 @@ private ExternalProcessor.Builder createBaseProto(String targetName) {
274274 + "channel_credentials.insecure.v3.InsecureCredentials")
275275 .build())
276276 .build())
277- .build());
277+ .build())
278+ .setProcessingMode(ProcessingMode.getDefaultInstance());
278279 }
279280
280281 // --- Category 1: Configuration Override ---
@@ -644,6 +645,7 @@ public void givenInterceptor_whenCallIntercepted_thenExtProcStubUsesSerializingE
644645 .build())
645646 .build())
646647 .build())
648+ .setProcessingMode(ProcessingMode.getDefaultInstance())
647649 .build();
648650 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
649651 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -739,6 +741,7 @@ public void givenGrpcServiceWithTimeout_whenCallIntercepted_thenExtProcStubHasCo
739741 .build())
740742 .setTimeout(com.google.protobuf.Duration.newBuilder().setSeconds(5).build())
741743 .build())
744+ .setProcessingMode(ProcessingMode.getDefaultInstance())
742745 .build();
743746 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
744747 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -6066,6 +6069,7 @@ public void givenObservabilityTrue_whenExtProcBusy_thenIsReadyReturnsFalse()
60666069 .build())
60676070 .build())
60686071 .setObservabilityMode(true)
6072+ .setProcessingMode(ProcessingMode.getDefaultInstance())
60696073 .build();
60706074 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
60716075 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -6188,6 +6192,7 @@ public void givenObservabilityMode_whenUpstreamBusy_thenIsReadyReturnsFalse()
61886192 .build())
61896193 .build())
61906194 .setObservabilityMode(true)
6195+ .setProcessingMode(ProcessingMode.getDefaultInstance())
61916196 .build();
61926197 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
61936198 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -6312,6 +6317,7 @@ public void givenNormalMode_whenUpstreamBusy_thenIsReadyReturnsTrue()
63126317 .build())
63136318 .build())
63146319 .setObservabilityMode(false)
6320+ .setProcessingMode(ProcessingMode.getDefaultInstance())
63156321 .build();
63166322 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
63176323 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -6425,6 +6431,7 @@ public void givenCongestionInExtProc_whenExtProcBecomesReady_thenTriggersOnReady
64256431 .build())
64266432 .build())
64276433 .setObservabilityMode(true)
6434+ .setProcessingMode(ProcessingMode.getDefaultInstance())
64286435 .build();
64296436 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
64306437 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -7605,6 +7612,7 @@ public void givenRequestDrainActive_whenIsReadyCalled_thenReturnsFalse() throws
76057612 .build())
76067613 .build())
76077614 .build())
7615+ .setProcessingMode(ProcessingMode.getDefaultInstance())
76087616 .build();
76097617 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
76107618 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -7705,6 +7713,7 @@ public void givenDrainingStream_whenExtProcStreamCompletes_thenOnReady() throws
77057713 .build())
77067714 .build())
77077715 .build())
7716+ .setProcessingMode(ProcessingMode.getDefaultInstance())
77087717 .build();
77097718 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
77107719 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -7866,6 +7875,7 @@ public void givenDrainingStream_whenObserverIsNull_thenSendMessageDoesNotQueue()
78667875 .build())
78677876 .build())
78687877 .build())
7878+ .setProcessingMode(ProcessingMode.getDefaultInstance())
78697879 .build();
78707880 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
78717881 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -9523,6 +9533,7 @@ public void givenObservabilityTrue_whenExtProcBusy_thenAppRequestsBuffered()
95239533 .build())
95249534 .build())
95259535 .setObservabilityMode(true)
9536+ .setProcessingMode(ProcessingMode.getDefaultInstance())
95269537 .build();
95279538 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
95289539 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -9795,6 +9806,7 @@ public void givenBufferedRequests_whenExtProcStreamBecomesReady_thenDataPlaneDra
97959806 .build())
97969807 .build())
97979808 .setObservabilityMode(true)
9809+ .setProcessingMode(ProcessingMode.getDefaultInstance())
97989810 .build();
97999811 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
98009812 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -9939,6 +9951,7 @@ public void givenNoRequestDrain_whenExtProcStreamCompletesNormally_thenTreatsAsN
99399951 .build())
99409952 .build())
99419953 .build())
9954+ .setProcessingMode(ProcessingMode.getDefaultInstance())
99429955 .build();
99439956 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
99449957 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -9948,30 +9961,30 @@ public void givenNoRequestDrain_whenExtProcStreamCompletesNormally_thenTreatsAsN
99489961 // External Processor Server completes normally without sending request_drain = true
99499962 ExternalProcessorGrpc.ExternalProcessorImplBase extProcImpl =
99509963 new ExternalProcessorGrpc.ExternalProcessorImplBase() {
9951- @Override
9952- @SuppressWarnings("unchecked")
9953- public StreamObserver<ProcessingRequest> process(
9954- final StreamObserver<ProcessingResponse> responseObserver) {
9955- ((ServerCallStreamObserver<ProcessingResponse>) responseObserver).request(100);
9956- return new StreamObserver<ProcessingRequest>() {
99579964 @Override
9958- public void onNext(ProcessingRequest request) {
9959- if (request.hasRequestHeaders()) {
9960- // Immediately complete the stream from server side without drain
9961- responseObserver.onCompleted();
9962- }
9963- }
9965+ @SuppressWarnings("unchecked")
9966+ public StreamObserver<ProcessingRequest> process(
9967+ final StreamObserver<ProcessingResponse> responseObserver) {
9968+ ((ServerCallStreamObserver<ProcessingResponse>) responseObserver).request(100);
9969+ return new StreamObserver<ProcessingRequest>() {
9970+ @Override
9971+ public void onNext(ProcessingRequest request) {
9972+ if (request.hasRequestHeaders()) {
9973+ // Immediately complete the stream from server side without drain
9974+ responseObserver.onCompleted();
9975+ }
9976+ }
99649977
9965- @Override
9966- public void onError(Throwable t) {
9967- }
9978+ @Override
9979+ public void onError(Throwable t) {
9980+ }
99689981
9969- @Override
9970- public void onCompleted() {
9982+ @Override
9983+ public void onCompleted() {
9984+ }
9985+ };
99719986 }
99729987 };
9973- }
9974- };
99759988 grpcCleanup.register(InProcessServerBuilder.forName(extProcServerName)
99769989 .addService(extProcImpl)
99779990 .directExecutor()
@@ -10393,6 +10406,7 @@ public void givenFailureModeAllowFalse_whenExtProcStreamFails_thenDataPlaneCallC
1039310406 .build())
1039410407 .build())
1039510408 .setFailureModeAllow(false) // Fail Closed
10409+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1039610410 .build();
1039710411 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1039810412 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -10484,6 +10498,7 @@ public void givenFailureModeAllowTrue_whenExtProcStreamFails_thenCallFailsOpen()
1048410498 .build())
1048510499 .build())
1048610500 .setFailureModeAllow(true) // Fail Open
10501+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1048710502 .build();
1048810503 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1048910504 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -10621,6 +10636,7 @@ public void givenObservabilityMode_whenDataPlaneClosed_thenSidecarCloseIsDeferre
1062110636 .setObservabilityMode(true)
1062210637 .setDeferredCloseTimeout(
1062310638 com.google.protobuf.Duration.newBuilder().setSeconds(10).build())
10639+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1062410640 .build();
1062510641 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1062610642 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -11198,6 +11214,7 @@ public void testObservabilityMode_ProceedsWithoutBlockingOnExtProcResponseHeader
1119811214 .build())
1119911215 .build())
1120011216 .setObservabilityMode(true)
11217+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1120111218 .build();
1120211219 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1120311220 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -11325,6 +11342,7 @@ public void givenImmediateResponse_whenReceived_thenDataPlaneCallCancelled()
1132511342 .build())
1132611343 .build())
1132711344 .build())
11345+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1132811346 .build();
1132911347 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1133011348 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -11436,6 +11454,7 @@ public void givenImmediateResponseAndObservabilityTrue_whenReceived_thenImmediat
1143611454 .build())
1143711455 .build())
1143811456 .setObservabilityMode(true)
11457+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1143911458 .build();
1144011459 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1144111460 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -11547,6 +11566,7 @@ public void givenImmediateResponseDisabled_whenReceivedBeforeActivation_thenSide
1154711566 .build())
1154811567 .build())
1154911568 .setDisableImmediateResponse(true)
11569+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1155011570 .build();
1155111571 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1155211572 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -11657,6 +11677,7 @@ public void givenImmediateResponseDisabled_whenReceivedAfterActivation_thenSidec
1165711677 .build())
1165811678 .build())
1165911679 .setDisableImmediateResponse(true)
11680+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1166011681 .build();
1166111682 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1166211683 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -11948,6 +11969,7 @@ public void givenActiveRpc_whenDataPlaneCallCancelled_thenExtProcStreamIsErrored
1194811969 .build())
1194911970 .build())
1195011971 .build())
11972+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1195111973 .build();
1195211974 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1195311975 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -12045,6 +12067,7 @@ public void givenObservabilityModeFalse_whenExtProcBusy_thenIsReadyReturnsFalse(
1204512067 .build())
1204612068 .build())
1204712069 .setObservabilityMode(false)
12070+ .setProcessingMode(ProcessingMode.getDefaultInstance())
1204812071 .build();
1204912072 ConfigOrError<ExternalProcessorFilterConfig> configOrError =
1205012073 provider.parseFilterConfig(Any.pack(proto), filterContext);
@@ -12815,7 +12838,8 @@ public void onCompleted() {
1281512838 assertThat(bodyLatch.await(5, TimeUnit.SECONDS)).isTrue();
1281612839 assertThat(receivedRequests.size()).isAtLeast(2);
1281712840 assertThat(receivedRequests.get(1).hasRequestBody()).isTrue();
12818- assertThat(receivedRequests.get(1).getRequestBody().getBody().toStringUtf8()).isEqualTo("hello");
12841+ assertThat(receivedRequests.get(1).getRequestBody().getBody().toStringUtf8())
12842+ .isEqualTo("hello");
1281912843
1282012844 proxyCall.cancel("Cleanup", null);
1282112845 channelManager.close();
@@ -12951,7 +12975,8 @@ public void onCompleted() {}
1295112975 assertThat(responseBodyLatch.await(5, TimeUnit.SECONDS)).isTrue();
1295212976 assertThat(receivedRequests.size()).isAtLeast(2);
1295312977 assertThat(receivedRequests.get(1).hasResponseBody()).isTrue();
12954- assertThat(receivedRequests.get(1).getResponseBody().getBody().toStringUtf8()).isEqualTo("server message");
12978+ assertThat(receivedRequests.get(1).getResponseBody().getBody().toStringUtf8())
12979+ .isEqualTo("server message");
1295512980
1295612981 proxyCall.cancel("Cleanup", null);
1295712982 channelManager.close();
0 commit comments