Skip to content

Commit d46ae4b

Browse files
zhangshuyan0ShimmerGlass
authored andcommitted
[BACKPORT][HDFS-16939] Fix the thread safety bug in LowRedundancyBlocks. (apache#5450 apache#5471).
Contributed by Shuyan Zhang. Signed-off-by: He Xiaoqiao <hexiaoqiao@apache.org> (cherry picked from commit 8cc57f5)
1 parent 464eba7 commit d46ae4b

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/LowRedundancyBlocks.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,10 @@ class LowRedundancyBlocks implements Iterable<BlockInfo> {
8585
private final List<LightWeightLinkedSet<BlockInfo>> priorityQueues
8686
= new ArrayList<>(LEVEL);
8787

88-
/** The number of corrupt blocks with replication factor 1 */
8988

9089
private final LongAdder lowRedundancyBlocks = new LongAdder();
9190
private final LongAdder corruptBlocks = new LongAdder();
91+
/** The number of corrupt blocks with replication factor 1 */
9292
private final LongAdder corruptReplicationOneBlocks = new LongAdder();
9393
private final LongAdder lowRedundancyECBlockGroups = new LongAdder();
9494
private final LongAdder corruptECBlockGroups = new LongAdder();
@@ -366,11 +366,11 @@ synchronized boolean remove(BlockInfo block,
366366
* @return true if the block was found and removed from one of the priority
367367
* queues
368368
*/
369-
boolean remove(BlockInfo block, int priLevel) {
369+
synchronized boolean remove(BlockInfo block, int priLevel) {
370370
return remove(block, priLevel, block.getReplication());
371371
}
372372

373-
boolean remove(BlockInfo block, int priLevel, int oldExpectedReplicas) {
373+
synchronized boolean remove(BlockInfo block, int priLevel, int oldExpectedReplicas) {
374374
if(priLevel >= 0 && priLevel < LEVEL
375375
&& priorityQueues.get(priLevel).remove(block)) {
376376
NameNode.blockStateChangeLog.debug(

0 commit comments

Comments
 (0)