/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ /** * These .proto interfaces are private and stable. * Please see https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/Compatibility.html * for what changes are allowed for a *stable* .proto interface. */ syntax = "proto2"; option java_package = "org.apache.hadoop.ha.proto"; option java_outer_classname = "HAServiceProtocolProtos"; option java_generic_services = true; option java_generate_equals_and_hash = true; package hadoop.common; enum HAServiceStateProto { INITIALIZING = 0; ACTIVE = 1; STANDBY = 2; OBSERVER = 3; } enum HARequestSource { REQUEST_BY_USER = 0; REQUEST_BY_USER_FORCED = 1; REQUEST_BY_ZKFC = 2; } message HAStateChangeRequestInfoProto { required HARequestSource reqSource = 1; } /** * void request */ message MonitorHealthRequestProto { } /** * void response */ message MonitorHealthResponseProto { } /** * void request */ message TransitionToActiveRequestProto { required HAStateChangeRequestInfoProto reqInfo = 1; } /** * void response */ message TransitionToActiveResponseProto { } /** * void request */ message TransitionToStandbyRequestProto { required HAStateChangeRequestInfoProto reqInfo = 1; } /** * void response */ message TransitionToStandbyResponseProto { } /** * void request */ message TransitionToObserverRequestProto { required HAStateChangeRequestInfoProto reqInfo = 1; } /** * void response */ message TransitionToObserverResponseProto { } /** * void request */ message GetServiceStatusRequestProto { } /** * Returns the state of the service */ message GetServiceStatusResponseProto { required HAServiceStateProto state = 1; // If state is STANDBY, indicate whether it is // ready to become active. optional bool readyToBecomeActive = 2; // If not ready to become active, a textual explanation of why not optional string notReadyReason = 3; } /** * Protocol interface provides High availability related * primitives to monitor and failover a service. * * For details see o.a.h.ha.HAServiceProtocol. */ service HAServiceProtocolService { /** * Monitor the health of a service. */ rpc monitorHealth(MonitorHealthRequestProto) returns(MonitorHealthResponseProto); /** * Request service to tranisition to active state. */ rpc transitionToActive(TransitionToActiveRequestProto) returns(TransitionToActiveResponseProto); /** * Request service to transition to standby state. */ rpc transitionToStandby(TransitionToStandbyRequestProto) returns(TransitionToStandbyResponseProto); /** * Request service to transition to observer state. */ rpc transitionToObserver(TransitionToObserverRequestProto) returns(TransitionToObserverResponseProto); /** * Get the current status of the service. */ rpc getServiceStatus(GetServiceStatusRequestProto) returns(GetServiceStatusResponseProto); }