Amir Langer created HDFS-6552:
---------------------------------
Summary: 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.4.0, 2.3.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)