/// <exception cref="Com.Google.Protobuf.ServiceException"/> public virtual InterDatanodeProtocolProtos.InitReplicaRecoveryResponseProto InitReplicaRecovery (RpcController unused, InterDatanodeProtocolProtos.InitReplicaRecoveryRequestProto request) { BlockRecoveryCommand.RecoveringBlock b = PBHelper.Convert(request.GetBlock()); ReplicaRecoveryInfo r; try { r = impl.InitReplicaRecovery(b); } catch (IOException e) { throw new ServiceException(e); } if (r == null) { return((InterDatanodeProtocolProtos.InitReplicaRecoveryResponseProto)InterDatanodeProtocolProtos.InitReplicaRecoveryResponseProto .NewBuilder().SetReplicaFound(false).Build()); } else { return((InterDatanodeProtocolProtos.InitReplicaRecoveryResponseProto)InterDatanodeProtocolProtos.InitReplicaRecoveryResponseProto .NewBuilder().SetReplicaFound(true).SetBlock(PBHelper.Convert(r)).SetState(PBHelper .Convert(r.GetOriginalReplicaState())).Build()); } }
/// <exception cref="System.IO.IOException"/> public virtual ReplicaRecoveryInfo InitReplicaRecovery(BlockRecoveryCommand.RecoveringBlock rBlock) { InterDatanodeProtocolProtos.InitReplicaRecoveryRequestProto req = ((InterDatanodeProtocolProtos.InitReplicaRecoveryRequestProto )InterDatanodeProtocolProtos.InitReplicaRecoveryRequestProto.NewBuilder().SetBlock (PBHelper.Convert(rBlock)).Build()); InterDatanodeProtocolProtos.InitReplicaRecoveryResponseProto resp; try { resp = rpcProxy.InitReplicaRecovery(NullController, req); } catch (ServiceException e) { throw ProtobufHelper.GetRemoteException(e); } if (!resp.GetReplicaFound()) { // No replica found on the remote node. return(null); } else { if (!resp.HasBlock() || !resp.HasState()) { throw new IOException("Replica was found but missing fields. " + "Req: " + req + "\n" + "Resp: " + resp); } } HdfsProtos.BlockProto b = resp.GetBlock(); return(new ReplicaRecoveryInfo(b.GetBlockId(), b.GetNumBytes(), b.GetGenStamp(), PBHelper.Convert(resp.GetState()))); }