Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-6552

add DN storage to a BlockInfo will not replace the different storage from same DN

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Trivial
    • Resolution: Fixed
    • Affects Version/s: 2.3.0, 2.4.0
    • Fix Version/s: 2.5.0
    • Component/s: namenode
    • Labels:
      None
    • Target Version/s:
    • Hadoop Flags:
      Reviewed

      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}
      

        Attachments

          Activity

            People

            • Assignee:
              langera Amir Langer
              Reporter:
              langera Amir Langer
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: