[ https://issues.apache.org/jira/browse/HDFS-14761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16911950#comment-16911950 ]
Chen Zhang edited comment on HDFS-14761 at 8/21/19 5:04 AM: ------------------------------------------------------------ This method is intend to invalidate all the cached path under the new added mountTable entry. So I guess we should not check the location path(value of the cache), instead we should check all the "real source" path, which is the key of the cache. was (Author: zhangchen): This method is intend to invalidate all the cached path under the new added mountTable entry. So I guess we should not check the location path, instead we should check all the "real source" path, which is the key of the cache. > RBF: MountTableResolver cannot invalidate cache correctly > --------------------------------------------------------- > > Key: HDFS-14761 > URL: https://issues.apache.org/jira/browse/HDFS-14761 > Project: Hadoop HDFS > Issue Type: Bug > Components: rbf > Reporter: Yuxuan Wang > Assignee: Yuxuan Wang > Priority: Major > Labels: RBF > Attachments: draft-reproduce-patch-HDFS-14761.patch > > > STEPS TO REPRODUCE: > add mount table entry 1->/ > mountTable.getDestinationForPath("/foo/a") will return "1->/foo/a", that's > correct > add mount table entry 2->/foo > mountTable.getDestinationForPath("/foo/a") should return "2->/foo/a", but it > still return "1->/foo/a" > WHY: > {code:title=MountTableResolver.java|borderStyle=solid} > private void invalidateLocationCache(...) > { > ... > String src = loc.getSourcePath(); > if (src != null) { > if (isParentEntry(src, path)) { > LOG.debug("Removing {}", src); > it.remove(); > } > } > ... > } > {code} > *path* is the new entry, in our case is "/foo" > But *src* is the mount point path, in our case is "/", which isn't child of > "/foo" > So, it can't invalidate the cache entry. > HOW TO FIX: > Just reverse the parameters of *isParentEntry* . > PS: > *PathLocation#getSourcePath()* will return *PathLocation#sourcePath*, which > attached a comment about "Source path in global namespace.". But I think the > field indeed denotes the mount point path after I review the code. I think > it's confused. -- This message was sent by Atlassian Jira (v8.3.2#803003) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org