/// <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()))); }
public virtual void TestConvertBlock() { Block b = new Block(1, 100, 3); HdfsProtos.BlockProto bProto = PBHelper.Convert(b); Block b2 = PBHelper.Convert(bProto); NUnit.Framework.Assert.AreEqual(b, b2); }