aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergii Tkachenko <sergiitk@google.com>2024-03-11 16:14:05 -0700
committerGitHub <noreply@github.com>2024-03-11 16:14:05 -0700
commit0d749c59432e604a566e349d043eaeaadc8120d5 (patch)
tree51703e70da276506be1a80ef69d5b13a6a9d266d
parent403aa8189d18517e635f85bf5bb4103792d33cd5 (diff)
downloadgrpc-grpc-java-0d749c59432e604a566e349d043eaeaadc8120d5.tar.gz
xds: Stabilize CsdsService (#11003)
To make it stable, this PR hides protobuf from being exposed via the API. Note: this breaks ABI of `CsdsService.streamClientStatus` and `CsdsService.fetchClientStatus`, but these methods should not normally be called by the user. Closes #8016.
-rw-r--r--xds/src/main/java/io/grpc/xds/CsdsService.java63
1 files changed, 36 insertions, 27 deletions
diff --git a/xds/src/main/java/io/grpc/xds/CsdsService.java b/xds/src/main/java/io/grpc/xds/CsdsService.java
index 69aee71f1..010283666 100644
--- a/xds/src/main/java/io/grpc/xds/CsdsService.java
+++ b/xds/src/main/java/io/grpc/xds/CsdsService.java
@@ -28,7 +28,8 @@ import io.envoyproxy.envoy.service.status.v3.ClientConfig.GenericXdsConfig;
import io.envoyproxy.envoy.service.status.v3.ClientStatusDiscoveryServiceGrpc;
import io.envoyproxy.envoy.service.status.v3.ClientStatusRequest;
import io.envoyproxy.envoy.service.status.v3.ClientStatusResponse;
-import io.grpc.ExperimentalApi;
+import io.grpc.BindableService;
+import io.grpc.ServerServiceDefinition;
import io.grpc.Status;
import io.grpc.StatusException;
import io.grpc.internal.ObjectPool;
@@ -55,11 +56,10 @@ import java.util.logging.Logger;
*
* @since 1.37.0
*/
-@ExperimentalApi("https://github.com/grpc/grpc-java/issues/8016")
-public final class CsdsService extends
- ClientStatusDiscoveryServiceGrpc.ClientStatusDiscoveryServiceImplBase {
+public final class CsdsService implements BindableService {
private static final Logger logger = Logger.getLogger(CsdsService.class.getName());
private final XdsClientPoolFactory xdsClientPoolFactory;
+ private final CsdsServiceInternal delegate = new CsdsServiceInternal();
@VisibleForTesting
CsdsService(XdsClientPoolFactory xdsClientPoolFactory) {
@@ -76,34 +76,43 @@ public final class CsdsService extends
}
@Override
- public void fetchClientStatus(
- ClientStatusRequest request, StreamObserver<ClientStatusResponse> responseObserver) {
- if (handleRequest(request, responseObserver)) {
- responseObserver.onCompleted();
- }
- // TODO(sergiitk): Add a case covering mutating handleRequest return false to true - to verify
- // that responseObserver.onCompleted() isn't erroneously called on error.
+ public ServerServiceDefinition bindService() {
+ return delegate.bindService();
}
- @Override
- public StreamObserver<ClientStatusRequest> streamClientStatus(
- final StreamObserver<ClientStatusResponse> responseObserver) {
- return new StreamObserver<ClientStatusRequest>() {
- @Override
- public void onNext(ClientStatusRequest request) {
- handleRequest(request, responseObserver);
+ /** Hide protobuf from being exposed via the API. */
+ private final class CsdsServiceInternal
+ extends ClientStatusDiscoveryServiceGrpc.ClientStatusDiscoveryServiceImplBase {
+ @Override
+ public void fetchClientStatus(
+ ClientStatusRequest request, StreamObserver<ClientStatusResponse> responseObserver) {
+ if (handleRequest(request, responseObserver)) {
+ responseObserver.onCompleted();
}
+ // TODO(sergiitk): Add a case covering mutating handleRequest return false to true - to verify
+ // that responseObserver.onCompleted() isn't erroneously called on error.
+ }
- @Override
- public void onError(Throwable t) {
- onCompleted();
- }
+ @Override
+ public StreamObserver<ClientStatusRequest> streamClientStatus(
+ final StreamObserver<ClientStatusResponse> responseObserver) {
+ return new StreamObserver<ClientStatusRequest>() {
+ @Override
+ public void onNext(ClientStatusRequest request) {
+ handleRequest(request, responseObserver);
+ }
- @Override
- public void onCompleted() {
- responseObserver.onCompleted();
- }
- };
+ @Override
+ public void onError(Throwable t) {
+ onCompleted();
+ }
+
+ @Override
+ public void onCompleted() {
+ responseObserver.onCompleted();
+ }
+ };
+ }
}
private boolean handleRequest(