From 76c40a52d76671df4c46d131e85478b50697dedf Mon Sep 17 00:00:00 2001 From: Ayush Saxena Date: Wed, 24 Mar 2021 02:10:02 +0530 Subject: [PATCH] HDFS-15907. Reduce Memory Overhead of AclFeature by avoiding AtomicInteger. Contributed by Stephen O'Donnell. --- .../hadoop/hdfs/server/namenode/AclFeature.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java index 6b2baa4e31..2dfe50742d 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java @@ -19,7 +19,6 @@ package org.apache.hadoop.hdfs.server.namenode; import java.util.Arrays; -import java.util.concurrent.atomic.AtomicInteger; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.fs.permission.AclEntry; @@ -35,7 +34,7 @@ public class AclFeature implements INode.Feature, ReferenceCounter { public static final ImmutableList EMPTY_ENTRY_LIST = ImmutableList.of(); - private AtomicInteger value = new AtomicInteger(); + private int refCount = 0; private final int [] entries; @@ -84,17 +83,17 @@ public int hashCode() { } @Override - public int getRefCount() { - return value.get(); + public synchronized int getRefCount() { + return refCount; } @Override - public int incrementAndGetRefCount() { - return value.incrementAndGet(); + public synchronized int incrementAndGetRefCount() { + return ++refCount; } @Override - public int decrementAndGetRefCount() { - return value.updateAndGet(i -> i > 0 ? i - 1 : i); + public synchronized int decrementAndGetRefCount() { + return (refCount > 0) ? --refCount : 0; } }