Interface RpcObserver


@LimitedPrivate("Coprocesssor") @Evolving public interface RpcObserver
Coprocessors implement this interface to observe and mediate RPC events in Master and RS instances.

Since most implementations will be interested in only a subset of hooks, this class uses 'default' functions to avoid having to add unnecessary overrides. When the functions are non-empty, it's simply to satisfy the compiler by returning value of expected (non-void) type. It is done in a way that these default definitions act as no-op. So our suggestion to implementation would be to not call these 'default' methods from overrides.

Exception Handling


For all functions, exception handling is done as follows:
  • Exceptions of type IOException are reported back to client.
  • For any other kind of exception:
    • Be aware that this coprocessor doesn't support abortion. If the configuration CoprocessorHost.ABORT_ON_ERROR_KEY is set to true, the event will be logged, but the RPC server won't be aborted.
    • Otherwise, coprocessor is removed from the server.