[
https://issues.apache.org/jira/browse/HDFS-14908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16956621#comment-16956621
]
Jinglun edited comment on HDFS-14908 at 10/22/19 2:44 AM:
----------------------------------------------------------
Introduce a new method startsWith(String str, int sStart, int sLen, String
prefix, int pStart, int pLen) to replace String.startsWith() in isParent(). The
new method compares strings with index so we can avoid copying the strings.
Test file is TestV2.java
*Result*
Case 1:
path= /dir0/dir1/dir2/dir3
parent=/dir0/dir1
||Time||10,000,000,000||
|startsWith()|40,070ms|
|isParent()|33,152ms|
Case 2:
path= /dir0/dir1/dir2/dir3
parent=/dir0/dir2
||Time||10,000,000,000||
|startsWith()|39,779ms|
|isParent()|32,019ms|
Case 3:
path= dir0/dir1/dir2/dir3
parent=dir0/dir1
||Time||10,000,000,000||
|startsWith()| 34,331ms|
|isParent()| 2,298ms|
Case 4:
path= /dir0/dir1/dir2/dir3/
parent=/dir0/dir1/
||Time||10,000,000,000||
|startsWith()|44,839ms|
|isParent()|37,311ms |
*Conclusion*
After optimizing, isParent() is a little faster than Strings.startsWith().
was (Author: lijinglun):
Introduce a new method startsWith(String str, int sStart, int sLen, String
prefix, int pStart, int pLen) to replace String.startsWith() in isParent(). The
new method compares strings with index so we can avoid copying the strings.
Test file is TestV2.java
*Result*
Case 1:
path= /dir0/dir1/dir2/dir3
parent=/dir0/dir1
||Time||10,000,000,000||
|startsWith()| 40,070ms|
|isParent()|33,152ms|
Case 2:
path= /dir0/dir1/dir2/dir3
parent=/dir0/dir2
||Time||10,000,000,000||
|startsWith()| 39,779ms|
|isParent()|32,019 |
Case 3:
path= dir0/dir1/dir2/dir3
parent=dir0/dir1
||Time||10,000,000,000||
|startsWith()| 34,331ms|
|isParent()| 2,298ms|
Case 4:
path= /dir0/dir1/dir2/dir3/
parent=/dir0/dir1/
||Time||10,000,000,000||
|startsWith()| 44,839ms|
|isParent()|37,311ms |
> LeaseManager should check parent-child relationship when filter open files.
> ---------------------------------------------------------------------------
>
> Key: HDFS-14908
> URL: https://issues.apache.org/jira/browse/HDFS-14908
> Project: Hadoop HDFS
> Issue Type: Bug
> Affects Versions: 3.1.0, 3.0.1
> Reporter: Jinglun
> Assignee: Jinglun
> Priority: Minor
> Attachments: HDFS-14908.001.patch, HDFS-14908.002.patch,
> HDFS-14908.003.patch, Test.java, TestV2.java
>
>
> Now when doing listOpenFiles(), LeaseManager only checks whether the filter
> path is the prefix of the open files. We should check whether the filter path
> is the parent/ancestor of the open files.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]