コード例 #1
0
 /** Move a persisted replica from lazypersist directory to a subdirectory under finalized. */
 File activateSavedReplica(Block b, File metaFile, File blockFile) throws IOException {
   final File blockDir = DatanodeUtil.idToBlockDir(finalizedDir, b.getBlockId());
   final File targetBlockFile = new File(blockDir, blockFile.getName());
   final File targetMetaFile = new File(blockDir, metaFile.getName());
   FileUtils.moveFile(blockFile, targetBlockFile);
   FsDatasetImpl.LOG.info("Moved " + blockFile + " to " + targetBlockFile);
   FileUtils.moveFile(metaFile, targetMetaFile);
   FsDatasetImpl.LOG.info("Moved " + metaFile + " to " + targetMetaFile);
   return targetBlockFile;
 }
コード例 #2
0
  /**
   * Read in the cached DU value and return it if it is less than 600 seconds old (DU update
   * interval). Slight imprecision of dfsUsed is not critical and skipping DU can significantly
   * shorten the startup time. If the cached value is not available or too old, -1 is returned.
   */
  long loadDfsUsed() {
    long cachedDfsUsed;
    long mtime;
    Scanner sc;

    try {
      sc = new Scanner(new File(currentDir, DU_CACHE_FILE), "UTF-8");
    } catch (FileNotFoundException fnfe) {
      return -1;
    }

    try {
      // Get the recorded dfsUsed from the file.
      if (sc.hasNextLong()) {
        cachedDfsUsed = sc.nextLong();
      } else {
        return -1;
      }
      // Get the recorded mtime from the file.
      if (sc.hasNextLong()) {
        mtime = sc.nextLong();
      } else {
        return -1;
      }

      // Return the cached value if mtime is okay.
      if (mtime > 0 && (Time.now() - mtime < 600000L)) {
        FsDatasetImpl.LOG.info("Cached dfsUsed found for " + currentDir + ": " + cachedDfsUsed);
        return cachedDfsUsed;
      }
      return -1;
    } finally {
      sc.close();
    }
  }
コード例 #3
0
  void getVolumeMap(ReplicaMap volumeMap, final RamDiskReplicaTracker lazyWriteReplicaMap)
      throws IOException {
    // Recover lazy persist replicas, they will be added to the volumeMap
    // when we scan the finalized directory.
    if (lazypersistDir.exists()) {
      int numRecovered = moveLazyPersistReplicasToFinalized(lazypersistDir);
      FsDatasetImpl.LOG.info("Recovered " + numRecovered + " replicas from " + lazypersistDir);
    }

    // add finalized replicas
    addToReplicasMap(volumeMap, finalizedDir, lazyWriteReplicaMap, true);
    // add rbw replicas
    addToReplicasMap(volumeMap, rbwDir, lazyWriteReplicaMap, false);
  }