Class MasterCallable<V>

java.lang.Object
org.apache.hadoop.hbase.client.MasterCallable<V>
Type Parameters:
V - return type
All Implemented Interfaces:
Closeable, AutoCloseable, RetryingCallable<V>

@Private abstract class MasterCallable<V> extends Object implements RetryingCallable<V>, Closeable
A RetryingCallable for Master RPC operations. Implement the #rpcCall method. It will be retried on error. See its javadoc and the javadoc of #call(int). See HBaseAdmin for examples of how this is used. To get at the rpcController that has been created and configured to make this rpc call, use getRpcController(). We are trying to contain all protobuf references including references to rpcController so we don't pollute codebase with protobuf references; keep the protobuf references contained and only present in a few classes rather than all about the code base.

Like RegionServerCallable only in here, we can safely be PayloadCarryingRpcController all the time. This is not possible in the similar RegionServerCallable Callable because it has to deal with Coprocessor Endpoints.

  • Field Details

  • Constructor Details

  • Method Details

    • prepare

      public void prepare(boolean reload) throws IOException
      Description copied from interface: RetryingCallable
      Prepare by setting up any connections to servers, etc., ahead of call invocation. TODO: We call prepare before EVERY call. Seems wrong. FIX!!!!
      Specified by:
      prepare in interface RetryingCallable<V>
      Parameters:
      reload - Set this to true if need to requery locations
      Throws:
      IOException - e
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • throwable

      public void throwable(Throwable t, boolean retrying)
      Description copied from interface: RetryingCallable
      Called when call throws an exception and we are going to retry; take action to make it so we succeed on next call (clear caches, do relookup of locations, etc.).
      Specified by:
      throwable in interface RetryingCallable<V>
      Parameters:
      t - throwable which was thrown
      retrying - True if we are in retrying mode (we are not in retrying mode when max retries == 1; we ARE in retrying mode if retries > 1 even when we are the last attempt)
    • getExceptionMessageAdditionalDetail

      Description copied from interface: RetryingCallable
      Returns Some details from the implementation that we would like to add to a terminating exception; i.e. a fatal exception is being thrown ending retries and we might like to add more implementation-specific detail on to the exception being thrown.
      Specified by:
      getExceptionMessageAdditionalDetail in interface RetryingCallable<V>
    • sleep

      public long sleep(long pause, int tries)
      Description copied from interface: RetryingCallable
      Sleep and retry.
      Specified by:
      sleep in interface RetryingCallable<V>
      Parameters:
      pause - time to pause
      tries - amount of tries until till sleep
      Returns:
      Suggestion on how much to sleep between retries
    • call

      public V call(int callTimeout) throws IOException
      Override that changes the Callable.call() Exception from Exception to IOException. It also does setup of an rpcController and calls through to the rpcCall() method which callers are expected to implement. If rpcController is an instance of PayloadCarryingRpcController, we will set a timeout on it.
      Specified by:
      call in interface RetryingCallable<V>
      Parameters:
      callTimeout - - the time available for this call. 0 for infinite.
      Returns:
      computed result
      Throws:
      IOException
    • rpcCall

      protected abstract V rpcCall() throws Exception
      Run the RPC call. Implement this method. To get at the rpcController that has been created and configured to make this rpc call, use getRpcController(). We are trying to contain rpcController references so we don't pollute codebase with protobuf references; keep the protobuf references contained and only present in a few classes rather than all about the code base.
      Throws:
      Exception
    • getRpcController

    • setPriority

      void setPriority(int priority)
    • setPriority

      void setPriority(TableName tableName)
    • setPriority

      void setPriority(byte[] regionName)
      Parameters:
      regionName - RegionName. If hbase:meta, we'll set high priority.
    • isMetaRegion

      private static boolean isMetaRegion(byte[] regionName)