[
https://issues.apache.org/jira/browse/HDFS-3015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13237798#comment-13237798
]
Muddy Dixon commented on HDFS-3015:
-----------------------------------
I surveys NamenodeFsck, JspHelper, DFSInputStream and DFSClient (which referred
in NamenodeFsck#copyBlock comment).
"copyBlock" is declared in
* NamenodeFsck
"bestNode" is declared in
* NamenodeFsck
* DFSInputStream
* JspHelper (3 arg patterns)
At first, copyBlock is not declared duplicate.
And then, all implementations of bestNode have different arg patterns and
implementation.
So these are not duplicated.
NamenodeFsck#bestNode and DFSInputStream#bestNode are similar implementation.
NamenodeFsck
{code}
private DatanodeInfo bestNode(DFSClient dfs, DatanodeInfo[] nodes,
TreeSet<DatanodeInfo> deadNodes) throws
IOException {
if ((nodes == null) ||
(nodes.length - deadNodes.size() < 1)) {
throw new IOException("No live nodes contain current block");
}
DatanodeInfo chosenNode;
do {
chosenNode = nodes[DFSUtil.getRandom().nextInt(nodes.length)];
} while (deadNodes.contains(chosenNode));
return chosenNode;
}
{code}
DFSInputStream#bestNode
{code}
static DatanodeInfo bestNode(DatanodeInfo nodes[],
AbstractMap<DatanodeInfo, DatanodeInfo>
deadNodes)
throws IOException {
if (nodes != null) {
for (int i = 0; i < nodes.length; i++) {
if (!deadNodes.containsKey(nodes[i])) {
return nodes[i];
}
}
}
throw new IOException("No live nodes contain current block");
}
{code}
> NamenodeFsck and JspHelper duplicate DFSInputStream#copyBlock and bestNode
> --------------------------------------------------------------------------
>
> Key: HDFS-3015
> URL: https://issues.apache.org/jira/browse/HDFS-3015
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Eli Collins
> Priority: Minor
> Labels: newbie
>
> Both NamenodeFsck and JspHelper duplicate DFSInputStream#copyBlock and
> bestNode. There should be one shared implementation.
> {code}
> /*
> * XXX (ab) Bulk of this method is copied verbatim from {@link DFSClient},
> which is
> * bad. Both places should be refactored to provide a method to copy blocks
> * around.
> */
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira