hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amir Langer (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-6552) add DN storage to a BlockInfo will not replace the different storage from same DN
Date Tue, 17 Jun 2014 07:56:02 GMT

     [ https://issues.apache.org/jira/browse/HDFS-6552?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Amir Langer updated HDFS-6552:
------------------------------

    Description: 
In BlockInfo - addStorage code looks wrong.
At line 10 (below) - we remove the storage we're about to add from the list of storages, then
add it. 
If the aim was to replace the different storage that was there the line should have been:

{{removeStorage(getStorageInfo(idx));}}

method code:
{{
1 boolean addStorage(DatanodeStorageInfo storage) \{
2   boolean added = true;
3    int idx = findDatanode(storage.getDatanodeDescriptor());
4   if(idx >= 0) \{
5      if (getStorageInfo(idx) == storage) \{ // the storage is already there
6        return false;
7      \} else \{
8        // The block is on the DN but belongs to a different storage.
9        // Update our state.
10        removeStorage(storage);
11        added = false;      // Just updating storage. Return false.
12     \}
13  \}
14  // find the last null node
15  int lastNode = ensureCapacity(1);
16  setStorageInfo(lastNode, storage);
17  setNext(lastNode, null);
18  setPrevious(lastNode, null);
19  return added;
20\}
}}

  was:
In BlockInfo - addStorage code looks wrong.
At line 10 (below) - we remove the storage we're about to add from the list of storages, then
add it. 
If the aim was to replace the different storage that was there the line should have been:

removeStorage(getStorageInfo(idx));

method code:

1 boolean addStorage(DatanodeStorageInfo storage) {
2   boolean added = true;
3    int idx = findDatanode(storage.getDatanodeDescriptor());
4   if(idx >= 0) {
5      if (getStorageInfo(idx) == storage) { // the storage is already there

6        return false;

7      } else {

8        // The block is on the DN but belongs to a different storage.

9        // Update our state.

10        removeStorage(storage);

11        added = false;      // Just updating storage. Return false.

12     }
13  }
14  // find the last null node
15  int lastNode = ensureCapacity(1);
16  setStorageInfo(lastNode, storage);
17  setNext(lastNode, null);
18  setPrevious(lastNode, null);
19  return added;
20}


> add DN storage to a BlockInfo will not replace the different storage from same DN
> ---------------------------------------------------------------------------------
>
>                 Key: HDFS-6552
>                 URL: https://issues.apache.org/jira/browse/HDFS-6552
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: namenode
>    Affects Versions: 2.3.0, 2.4.0
>            Reporter: Amir Langer
>            Priority: Trivial
>             Fix For: Heterogeneous Storage (HDFS-2832)
>
>
> In BlockInfo - addStorage code looks wrong.
> At line 10 (below) - we remove the storage we're about to add from the list of storages,
then add it. 
> If the aim was to replace the different storage that was there the line should have been:
> {{removeStorage(getStorageInfo(idx));}}
> method code:
> {{
> 1 boolean addStorage(DatanodeStorageInfo storage) \{
> 2   boolean added = true;
> 3    int idx = findDatanode(storage.getDatanodeDescriptor());
> 4   if(idx >= 0) \{
> 5      if (getStorageInfo(idx) == storage) \{ // the storage is already there
> 6        return false;
> 7      \} else \{
> 8        // The block is on the DN but belongs to a different storage.
> 9        // Update our state.
> 10        removeStorage(storage);
> 11        added = false;      // Just updating storage. Return false.
> 12     \}
> 13  \}
> 14  // find the last null node
> 15  int lastNode = ensureCapacity(1);
> 16  setStorageInfo(lastNode, storage);
> 17  setNext(lastNode, null);
> 18  setPrevious(lastNode, null);
> 19  return added;
> 20\}
> }}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message