From f330bd7e33226cf83c4e5a4c6d74e22f366104de Mon Sep 17 00:00:00 2001 From: Minh Nguyen Date: Thu, 13 Feb 2025 15:09:15 -0800 Subject: [PATCH] Add grpc endpoint for updateAdminOperationProtocolVersion --- .../ClusterAdminOpsGrpcServiceImpl.java | 14 +++++++++++ .../server/ClusterAdminOpsRequestHandler.java | 24 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/services/venice-controller/src/main/java/com/linkedin/venice/controller/grpc/server/ClusterAdminOpsGrpcServiceImpl.java b/services/venice-controller/src/main/java/com/linkedin/venice/controller/grpc/server/ClusterAdminOpsGrpcServiceImpl.java index b248752e98..9fb84c9fd0 100644 --- a/services/venice-controller/src/main/java/com/linkedin/venice/controller/grpc/server/ClusterAdminOpsGrpcServiceImpl.java +++ b/services/venice-controller/src/main/java/com/linkedin/venice/controller/grpc/server/ClusterAdminOpsGrpcServiceImpl.java @@ -15,6 +15,7 @@ import com.linkedin.venice.protocols.controller.ClusterAdminOpsGrpcServiceGrpc; import com.linkedin.venice.protocols.controller.LastSuccessfulAdminCommandExecutionGrpcRequest; import com.linkedin.venice.protocols.controller.LastSuccessfulAdminCommandExecutionGrpcResponse; +import com.linkedin.venice.protocols.controller.UpdateAdminOperationProtocolVersionGrpcRequest; import com.linkedin.venice.protocols.controller.UpdateAdminTopicMetadataGrpcRequest; import io.grpc.Context; import io.grpc.stub.StreamObserver; @@ -88,4 +89,17 @@ public void updateAdminTopicMetadata( return requestHandler.updateAdminTopicMetadata(request); }, responseObserver, metadata.getClusterName(), metadata.hasStoreName() ? metadata.getStoreName() : null); } + + @Override + public void updateAdminOperationProtocolVersion( + UpdateAdminOperationProtocolVersionGrpcRequest request, + StreamObserver responseObserver) { + LOGGER.debug("Received updateAdminOperationProtocolVersion request: {}", request); + ControllerGrpcServerUtils.handleRequest( + ClusterAdminOpsGrpcServiceGrpc.getUpdateAdminOperationProtocolVersionMethod(), + () -> requestHandler.updateAdminOperationProtocolVersion(request), + responseObserver, + request.getClusterName(), + null); + } } diff --git a/services/venice-controller/src/main/java/com/linkedin/venice/controller/server/ClusterAdminOpsRequestHandler.java b/services/venice-controller/src/main/java/com/linkedin/venice/controller/server/ClusterAdminOpsRequestHandler.java index ece228b282..5942f39025 100644 --- a/services/venice-controller/src/main/java/com/linkedin/venice/controller/server/ClusterAdminOpsRequestHandler.java +++ b/services/venice-controller/src/main/java/com/linkedin/venice/controller/server/ClusterAdminOpsRequestHandler.java @@ -14,6 +14,7 @@ import com.linkedin.venice.protocols.controller.AdminTopicMetadataGrpcResponse; import com.linkedin.venice.protocols.controller.LastSuccessfulAdminCommandExecutionGrpcRequest; import com.linkedin.venice.protocols.controller.LastSuccessfulAdminCommandExecutionGrpcResponse; +import com.linkedin.venice.protocols.controller.UpdateAdminOperationProtocolVersionGrpcRequest; import com.linkedin.venice.protocols.controller.UpdateAdminTopicMetadataGrpcRequest; import com.linkedin.venice.utils.Pair; import java.util.Map; @@ -148,4 +149,27 @@ public AdminTopicMetadataGrpcResponse updateAdminTopicMetadata(UpdateAdminTopicM AdminTopicMetadataGrpcResponse.newBuilder().setMetadata(adminTopicGrpcMetadataBuilder.build()); return responseBuilder.build(); } + + public AdminTopicMetadataGrpcResponse updateAdminOperationProtocolVersion( + UpdateAdminOperationProtocolVersionGrpcRequest request) { + String clusterName = request.getClusterName(); + if (StringUtils.isBlank(clusterName)) { + throw new IllegalArgumentException("Cluster name is required for updating admin operation protocol version"); + } + + long adminOperationProtocolVersion = request.getAdminOperationProtocolVersion(); + + LOGGER.info( + "Updating admin operation protocol version for cluster: {} to version: {}", + clusterName, + adminOperationProtocolVersion); + + // TODO: Call the actual method to update the admin operation protocol version (#1418) + // admin.updateAdminOperationProtocolVersion(clusterName, adminOperationProtocolVersion); + + AdminTopicGrpcMetadata.Builder adminMetadataBuilder = AdminTopicGrpcMetadata.newBuilder() + .setClusterName(clusterName) + .setAdminOperationProtocolVersion(adminOperationProtocolVersion); + return AdminTopicMetadataGrpcResponse.newBuilder().setMetadata(adminMetadataBuilder.build()).build(); + } }