[ https://issues.apache.org/jira/browse/HDFS-16933?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xiaoqiao He resolved HDFS-16933. -------------------------------- Fix Version/s: 3.4.0 Hadoop Flags: Reviewed Resolution: Fixed > A race in SerialNumberMap will cause wrong owner, group and XATTR > ----------------------------------------------------------------- > > Key: HDFS-16933 > URL: https://issues.apache.org/jira/browse/HDFS-16933 > Project: Hadoop HDFS > Issue Type: Bug > Reporter: ZanderXu > Assignee: ZanderXu > Priority: Major > Labels: pull-request-available > Fix For: 3.4.0 > > > If namenode enables parallel fsimage loading, a race that occurs in > SerialNumberMap will cause wrong owner ship for INodes. > {code:java} > public int get(T t) { > if (t == null) { > return 0; > } > Integer sn = t2i.get(t); > if (sn == null) { > // Assume there are two thread with different t, such as: > // T1 with hbase > // T2 with hdfs > // If T1 and T2 get the sn in the same time, they will get the same sn, > such as 10 > 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; > } > // If T1 puts the 10->hbase to the i2t first, T2 will use 10 -> hdfs to > overwrite it. So it will cause that the Inodes will get a wrong owner hdfs, > actual it should be hbase. > i2t.put(sn, t); > } > return sn; > } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org