This is an automated email from the ASF dual-hosted git repository. hexiaoqiao pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 7c941e00b45 HDFS-16933. A race in SerialNumberMap will cause wrong owner, group and XATTR. (#5430). Contributed by ZanderXu. 7c941e00b45 is described below commit 7c941e00b45ce1ccc02d7a5d7ec575a04c8bfb1e Author: ZanderXu <zande...@apache.org> AuthorDate: Wed Sep 6 10:27:52 2023 +0800 HDFS-16933. A race in SerialNumberMap will cause wrong owner, group and XATTR. (#5430). Contributed by ZanderXu. Signed-off-by: He Xiaoqiao <hexiaoq...@apache.org> --- .../hdfs/server/namenode/SerialNumberMap.java | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SerialNumberMap.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SerialNumberMap.java index ff116b51188..453844ec951 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SerialNumberMap.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SerialNumberMap.java @@ -61,17 +61,22 @@ public class SerialNumberMap<T> { } Integer sn = t2i.get(t); if (sn == null) { - sn = current.getAndIncrement(); - if (sn > max) { - current.getAndDecrement(); - throw new IllegalStateException(name + ": serial number map is full"); + synchronized (this) { + sn = t2i.get(t); + if (sn == null) { + sn = current.getAndIncrement(); + if (sn > max) { + current.getAndDecrement(); + throw new IllegalStateException(name + ": serial number map is full"); + } + Integer old = t2i.putIfAbsent(t, sn); + if (old != null) { + current.getAndDecrement(); + return old; + } + i2t.put(sn, t); + } } - Integer old = t2i.putIfAbsent(t, sn); - if (old != null) { - current.getAndDecrement(); - return old; - } - i2t.put(sn, t); } return sn; } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org