001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase.master; 019 020import org.apache.hadoop.hbase.client.VersionInfoUtil; 021import org.apache.yetus.audience.InterfaceAudience; 022 023import org.apache.hbase.thirdparty.com.google.protobuf.RpcController; 024import org.apache.hbase.thirdparty.com.google.protobuf.ServiceException; 025 026import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos; 027import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLiveRegionServersRequest; 028import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetLiveRegionServersResponse; 029import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetThrottleStateRequest; 030import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.GetThrottleStateResponse; 031 032/** 033 * A wrapper class for MasterRpcServices shortcut that ensures a client version is available to the 034 * callee without a current RPC call. 035 */ 036@InterfaceAudience.Private 037public class MasterRpcServicesVersionWrapper 038 implements RegionServerStatusProtos.RegionServerStatusService.BlockingInterface { 039 040 @FunctionalInterface 041 public interface ServiceCallFunction<Req, Resp> 042 extends VersionInfoUtil.ServiceCallFunction<RpcController, Req, Resp, ServiceException> { 043 } 044 045 private final MasterRpcServices masterRpcServices; 046 private final ServiceCallFunction<RegionServerStatusProtos.RegionServerStartupRequest, 047 RegionServerStatusProtos.RegionServerStartupResponse> startupCall; 048 private final ServiceCallFunction<RegionServerStatusProtos.RegionServerReportRequest, 049 RegionServerStatusProtos.RegionServerReportResponse> reportCall; 050 051 public MasterRpcServicesVersionWrapper(MasterRpcServices masterRpcServices) { 052 this.masterRpcServices = masterRpcServices; 053 this.startupCall = (c, req) -> masterRpcServices.regionServerStartup(c, req); 054 this.reportCall = (c, req) -> masterRpcServices.regionServerReport(c, req); 055 } 056 057 @Override 058 public RegionServerStatusProtos.RegionServerStartupResponse regionServerStartup( 059 RpcController controller, RegionServerStatusProtos.RegionServerStartupRequest request) 060 throws ServiceException { 061 return VersionInfoUtil.callWithVersion(startupCall, controller, request); 062 } 063 064 @Override 065 public RegionServerStatusProtos.RegionServerReportResponse regionServerReport( 066 RpcController controller, RegionServerStatusProtos.RegionServerReportRequest request) 067 throws ServiceException { 068 return VersionInfoUtil.callWithVersion(reportCall, controller, request); 069 } 070 071 @Override 072 public RegionServerStatusProtos.ReportRSFatalErrorResponse reportRSFatalError( 073 RpcController controller, RegionServerStatusProtos.ReportRSFatalErrorRequest request) 074 throws ServiceException { 075 return masterRpcServices.reportRSFatalError(controller, request); 076 } 077 078 @Override 079 public RegionServerStatusProtos.GetLastFlushedSequenceIdResponse getLastFlushedSequenceId( 080 RpcController controller, RegionServerStatusProtos.GetLastFlushedSequenceIdRequest request) 081 throws ServiceException { 082 return masterRpcServices.getLastFlushedSequenceId(controller, request); 083 } 084 085 @Override 086 public RegionServerStatusProtos.ReportRegionStateTransitionResponse reportRegionStateTransition( 087 RpcController controller, RegionServerStatusProtos.ReportRegionStateTransitionRequest request) 088 throws ServiceException { 089 return masterRpcServices.reportRegionStateTransition(controller, request); 090 } 091 092 @Override 093 public RegionServerStatusProtos.RegionSpaceUseReportResponse reportRegionSpaceUse( 094 RpcController controller, RegionServerStatusProtos.RegionSpaceUseReportRequest request) 095 throws ServiceException { 096 return masterRpcServices.reportRegionSpaceUse(controller, request); 097 } 098 099 @Override 100 public RegionServerStatusProtos.ReportProcedureDoneResponse reportProcedureDone( 101 RpcController controller, RegionServerStatusProtos.ReportProcedureDoneRequest request) 102 throws ServiceException { 103 return masterRpcServices.reportProcedureDone(controller, request); 104 } 105 106 @Override 107 public RegionServerStatusProtos.FileArchiveNotificationResponse reportFileArchival( 108 RpcController controller, RegionServerStatusProtos.FileArchiveNotificationRequest request) 109 throws ServiceException { 110 return masterRpcServices.reportFileArchival(controller, request); 111 } 112 113 @Override 114 public GetLiveRegionServersResponse getLiveRegionServers(RpcController controller, 115 GetLiveRegionServersRequest request) throws ServiceException { 116 return masterRpcServices.getLiveRegionServers(controller, request); 117 } 118 119 @Override 120 public GetThrottleStateResponse getThrottleState(RpcController controller, 121 GetThrottleStateRequest request) throws ServiceException { 122 return masterRpcServices.getThrottleState(controller, request); 123 } 124}