[
https://issues.apache.org/jira/browse/HDFS-15877?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hui Fei resolved HDFS-15877.
----------------------------
Fix Version/s: 3.4.0
Resolution: Fixed
> BlockReconstructionWork should resetTargets() before
> BlockManager#validateReconstructionWork return false
> ---------------------------------------------------------------------------------------------------------
>
> Key: HDFS-15877
> URL: https://issues.apache.org/jira/browse/HDFS-15877
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Haiyang Hu
> Assignee: Haiyang Hu
> Priority: Minor
> Labels: pull-request-available
> Fix For: 3.4.0
>
> Time Spent: 2h 40m
> Remaining Estimate: 0h
>
> BlockReconstructionWork should resetTargets() before
> BlockManager#validateReconstructionWork return false
> the related code is in BlockManager.java
> {code:java}
> // code placeholder
> private boolean validateReconstructionWork(BlockReconstructionWork rw) {
> BlockInfo block = rw.getBlock();
> int priority = rw.getPriority();
> ...
> if (block.isDeleted() || !block.isCompleteOrCommitted()) {
> neededReconstruction.remove(block, priority);
> rw.resetTargets();
> return false;
> }
> // do not schedule more if enough replicas is already pending
> ...
> if (hasEnoughEffectiveReplicas(block, numReplicas, pendingNum)) {
> neededReconstruction.remove(block, priority);
> rw.resetTargets();
> blockLog.debug("BLOCK* Removing {} from neededReconstruction as" +
> " it has enough replicas", block);
> return false;
> }
> DatanodeStorageInfo[] targets = rw.getTargets();
> BlockPlacementStatus placementStatus = getBlockPlacementStatus(block);
> if ((numReplicas.liveReplicas() >= requiredRedundancy) &&
> (!placementStatus.isPlacementPolicySatisfied())) {
> BlockPlacementStatus newPlacementStatus =
> getBlockPlacementStatus(block, targets);
> if (!newPlacementStatus.isPlacementPolicySatisfied() &&
> (newPlacementStatus.getAdditionalReplicasRequired() >=
> placementStatus.getAdditionalReplicasRequired())) {
> ...
> //Here to add rw.resetTargets();
> return false;
> }
>
> rw.setNotEnoughRack();
> }
> ...
> return true;
> }
> {code}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]