Exemplo n.º 1
0
 /*
  * Finalize the upgrade for a block pool
  */
 void finalizeUpgrade(String bpID) throws IOException {
   // To handle finalizing a snapshot taken at datanode level while
   // upgrading to federation, if datanode level snapshot previous exists,
   // then finalize it. Else finalize the corresponding BP.
   for (StorageDirectory sd : storageDirs) {
     File prevDir = sd.getPreviousDir();
     if (prevDir.exists()) {
       // data node level storage finalize
       doFinalize(sd);
     } else {
       // block pool storage finalize using specific bpID
       BlockPoolSliceStorage bpStorage = bpStorageMap.get(bpID);
       bpStorage.doFinalize(sd.getCurrentDir());
     }
   }
 }
 /**
  * Check whether the rolling upgrade marker file exists for each BP storage root. If it does
  * exist, then the marker file is cleared and more importantly the layout upgrade is finalized.
  */
 public void clearRollingUpgradeMarkers(List<StorageDirectory> dnStorageDirs) throws IOException {
   for (StorageDirectory sd : dnStorageDirs) {
     File bpRoot = getBpRoot(blockpoolID, sd.getCurrentDir());
     File markerFile = new File(bpRoot, ROLLING_UPGRADE_MARKER_FILE);
     if (!storagesWithoutRollingUpgradeMarker.contains(bpRoot.toString())) {
       if (markerFile.exists()) {
         LOG.info("Deleting " + markerFile);
         doFinalize(sd.getCurrentDir());
         if (!markerFile.delete()) {
           LOG.warn("Failed to delete " + markerFile);
         }
       }
       storagesWithoutRollingUpgradeMarker.add(bpRoot.toString());
       storagesWithRollingUpgradeMarker.remove(bpRoot.toString());
     }
   }
 }