[ https://issues.apache.org/jira/browse/HDFS-13769?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16573844#comment-16573844 ]
Wei-Chiu Chuang commented on HDFS-13769: ---------------------------------------- Thanks for the new revision. IMO, this jira should convert to a HADOOP jira. Trash is not a HDFS-specific feature and this is Instead of calling fs.listStatus(), would you please use fs.listStatusIterator()? The former gets *everything* under a path, so you would see a bump in JVM heap usage for a large dir. I am still not satisfied with FileSystem#contentSummary(). The closest I could find is FileSystem#getQuotaUsage() which would return number of objects in a directory. but quota is not enabled by default. Nits: {code} import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.*; {code} TrashPolicyWithSafeDelete should not do wildcard import {code} LOG.debug("DIR "+ path + " in trash is too large, try safe delete."); {code} This is not necessarily true, if skipCheckLimit is true. > Namenode gets stuck when deleting large dir in trash > ---------------------------------------------------- > > Key: HDFS-13769 > URL: https://issues.apache.org/jira/browse/HDFS-13769 > Project: Hadoop HDFS > Issue Type: Improvement > Affects Versions: 2.8.2, 3.1.0 > Reporter: Tao Jie > Assignee: Tao Jie > Priority: Major > Attachments: HDFS-13769.001.patch, HDFS-13769.002.patch, > HDFS-13769.003.patch, HDFS-13769.004.patch > > > Similar to the situation discussed in HDFS-13671, Namenode gets stuck for a > long time when deleting trash dir with a large mount of data. We found log in > namenode: > {quote} > 2018-06-08 20:00:59,042 INFO namenode.FSNamesystem > (FSNamesystemLock.java:writeUnlock(252)) - FSNamesystem write lock held for > 23018 ms via > java.lang.Thread.getStackTrace(Thread.java:1552) > org.apache.hadoop.util.StringUtils.getStackTrace(StringUtils.java:1033) > org.apache.hadoop.hdfs.server.namenode.FSNamesystemLock.writeUnlock(FSNamesystemLock.java:254) > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.writeUnlock(FSNamesystem.java:1567) > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.delete(FSNamesystem.java:2820) > org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.delete(NameNodeRpcServer.java:1047) > {quote} > One simple solution is to avoid deleting large data in one delete RPC call. > We implement a trashPolicy that divide the delete operation into several > delete RPCs, and each single deletion would not delete too many files. > Any thought? [~linyiqun] -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org