/// <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())));
 }
Example #2
0
        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);
        }