@Override // FsDatasetSpi public Replica recoverClose(ExtendedBlock b, long newGS, long expectedBlockLen) throws IOException { LOG.info("Recover failed close " + b); while (true) { try { try (AutoCloseableLock lock = datasetLock.acquire()) { // check replica's state ReplicaInfo replicaInfo = recoverCheck(b, newGS, expectedBlockLen); // bump the replica's GS replicaInfo.bumpReplicaGS(newGS); // finalize the replica if RBW if (replicaInfo.getState() == ReplicaState.RBW) { finalizeReplica(b.getBlockPoolId(), replicaInfo); } return replicaInfo; } } catch (MustStopExistingWriter e) { e.getReplicaInPipeline() .stopWriter(datanode.getDnConf().getXceiverStopTimeout()); } } }
rur.bumpReplicaGS(recoveryId);
newGS, b.getNumBytes()); } else { //RBW replicaInfo.bumpReplicaGS(newGS); replica = (ReplicaInPipeline) replicaInfo;
rbw.getReplicaInfo().bumpReplicaGS(newGS); } catch (IOException e) { IOUtils.cleanup(null, ref);