RpcEngine implementations have to register themselves associated with an RpcKind. Both WritableRpcEngine and ProtobufRpcEngine do this registration in static initialization blocks. It used to be that the static initializer block for WritableRpcEngine was triggered when AvroRpcEngine was initialized, since this instantiated a WritableRpcEngine object. With AvroRpcEngine gone, there's nothing in the NN to trigger the WritableRpcEngine static initialization block. Therefore, those RPC services which still use Writable and not PB no longer work.
For example, if I try to run `hdfs groups' on trunk, which uses the GetUserMappingsProtocol, this error gets spit out: