Search in sources :

Example 1 with SwitchRpcThrottleState

use of org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SwitchRpcThrottleState in project hbase by apache.

the class SwitchRpcThrottleProcedure method executeFromState.

@Override
protected Flow executeFromState(MasterProcedureEnv env, SwitchRpcThrottleState state) throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {
    switch(state) {
        case UPDATE_SWITCH_RPC_THROTTLE_STORAGE:
            try {
                switchThrottleState(env, rpcThrottleEnabled);
            } catch (IOException e) {
                if (retryCounter == null) {
                    retryCounter = ProcedureUtil.createRetryCounter(env.getMasterConfiguration());
                }
                long backoff = retryCounter.getBackoffTimeAndIncrementAttempts();
                LOG.warn("Failed to store rpc throttle value {}, sleep {} secs and retry", rpcThrottleEnabled, backoff / 1000, e);
                setTimeout(Math.toIntExact(backoff));
                setState(ProcedureProtos.ProcedureState.WAITING_TIMEOUT);
                skipPersistence();
                throw new ProcedureSuspendedException();
            }
            setNextState(SwitchRpcThrottleState.SWITCH_RPC_THROTTLE_ON_RS);
            return Flow.HAS_MORE_STATE;
        case SWITCH_RPC_THROTTLE_ON_RS:
            SwitchRpcThrottleRemoteProcedure[] subProcedures = env.getMasterServices().getServerManager().getOnlineServersList().stream().map(sn -> new SwitchRpcThrottleRemoteProcedure(sn, rpcThrottleEnabled)).toArray(SwitchRpcThrottleRemoteProcedure[]::new);
            addChildProcedure(subProcedures);
            setNextState(SwitchRpcThrottleState.POST_SWITCH_RPC_THROTTLE);
            return Flow.HAS_MORE_STATE;
        case POST_SWITCH_RPC_THROTTLE:
            ProcedurePrepareLatch.releaseLatch(syncLatch, this);
            return Flow.NO_MORE_STATE;
        default:
            throw new UnsupportedOperationException("unhandled state=" + state);
    }
}
Also used : StateMachineProcedure(org.apache.hadoop.hbase.procedure2.StateMachineProcedure) Logger(org.slf4j.Logger) SwitchRpcThrottleState(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SwitchRpcThrottleState) ProcedureSuspendedException(org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException) ProcedureProtos(org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos) RetryCounter(org.apache.hadoop.hbase.util.RetryCounter) LoggerFactory(org.slf4j.LoggerFactory) IOException(java.io.IOException) RpcThrottleStorage(org.apache.hadoop.hbase.quotas.RpcThrottleStorage) ProcedureUtil(org.apache.hadoop.hbase.procedure2.ProcedureUtil) InterfaceAudience(org.apache.yetus.audience.InterfaceAudience) ProcedureYieldException(org.apache.hadoop.hbase.procedure2.ProcedureYieldException) ProcedureStateSerializer(org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer) ServerName(org.apache.hadoop.hbase.ServerName) SwitchRpcThrottleStateData(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SwitchRpcThrottleStateData) IOException(java.io.IOException) ProcedureSuspendedException(org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException)

Aggregations

IOException (java.io.IOException)1 ServerName (org.apache.hadoop.hbase.ServerName)1 ProcedureStateSerializer (org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer)1 ProcedureSuspendedException (org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException)1 ProcedureUtil (org.apache.hadoop.hbase.procedure2.ProcedureUtil)1 ProcedureYieldException (org.apache.hadoop.hbase.procedure2.ProcedureYieldException)1 StateMachineProcedure (org.apache.hadoop.hbase.procedure2.StateMachineProcedure)1 RpcThrottleStorage (org.apache.hadoop.hbase.quotas.RpcThrottleStorage)1 SwitchRpcThrottleState (org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SwitchRpcThrottleState)1 SwitchRpcThrottleStateData (org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.SwitchRpcThrottleStateData)1 ProcedureProtos (org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos)1 RetryCounter (org.apache.hadoop.hbase.util.RetryCounter)1 InterfaceAudience (org.apache.yetus.audience.InterfaceAudience)1 Logger (org.slf4j.Logger)1 LoggerFactory (org.slf4j.LoggerFactory)1