org.apache.hadoop.fs.FileUtil#canWrite ( )源码实例Demo

下面列出了org.apache.hadoop.fs.FileUtil#canWrite ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: hadoop   文件: NNStorage.java
/**
 * See if any of removed storages is "writable" again, and can be returned
 * into service.
 */
void attemptRestoreRemovedStorage() {
  // if directory is "alive" - copy the images there...
  if(!restoreFailedStorage || removedStorageDirs.size() == 0)
    return; //nothing to restore

  /* We don't want more than one thread trying to restore at a time */
  synchronized (this.restorationLock) {
    LOG.info("NNStorage.attemptRestoreRemovedStorage: check removed(failed) "+
             "storarge. removedStorages size = " + removedStorageDirs.size());
    for(Iterator<StorageDirectory> it
          = this.removedStorageDirs.iterator(); it.hasNext();) {
      StorageDirectory sd = it.next();
      File root = sd.getRoot();
      LOG.info("currently disabled dir " + root.getAbsolutePath() +
               "; type="+sd.getStorageDirType() 
               + ";canwrite="+FileUtil.canWrite(root));
      if(root.exists() && FileUtil.canWrite(root)) {
        LOG.info("restoring dir " + sd.getRoot().getAbsolutePath());
        this.addStorageDir(sd); // restore
        this.removedStorageDirs.remove(sd);
      }
    }
  }
}
 
源代码2 项目: hadoop   文件: DiskChecker.java
/**
 * Checks that the current running process can read, write, and execute the
 * given directory by using methods of the File object.
 * 
 * @param dir File to check
 * @throws DiskErrorException if dir is not readable, not writable, or not
 *   executable
 */
private static void checkAccessByFileMethods(File dir)
    throws DiskErrorException {
  if (!FileUtil.canRead(dir)) {
    throw new DiskErrorException("Directory is not readable: "
                                 + dir.toString());
  }

  if (!FileUtil.canWrite(dir)) {
    throw new DiskErrorException("Directory is not writable: "
                                 + dir.toString());
  }

  if (!FileUtil.canExecute(dir)) {
    throw new DiskErrorException("Directory is not executable: "
                                 + dir.toString());
  }
}
 
源代码3 项目: big-c   文件: CgroupsLCEResourcesHandler.java
private void initializeControllerPaths() throws IOException {
  String controllerPath;
  Map<String, List<String>> parsedMtab = parseMtab();

  // CPU

  controllerPath = findControllerInMtab(CONTROLLER_CPU, parsedMtab);

  if (controllerPath != null) {
    File f = new File(controllerPath + "/" + this.cgroupPrefix);

    if (FileUtil.canWrite(f)) {
      controllerPaths.put(CONTROLLER_CPU, controllerPath);
    } else {
      throw new IOException("Not able to enforce cpu weights; cannot write "
          + "to cgroup at: " + controllerPath);
    }
  } else {
    throw new IOException("Not able to enforce cpu weights; cannot find "
        + "cgroup for cpu controller in " + getMtabFileName());
  }
}
 
源代码4 项目: big-c   文件: NNStorage.java
/**
 * See if any of removed storages is "writable" again, and can be returned
 * into service.
 */
void attemptRestoreRemovedStorage() {
  // if directory is "alive" - copy the images there...
  if(!restoreFailedStorage || removedStorageDirs.size() == 0)
    return; //nothing to restore

  /* We don't want more than one thread trying to restore at a time */
  synchronized (this.restorationLock) {
    LOG.info("NNStorage.attemptRestoreRemovedStorage: check removed(failed) "+
             "storarge. removedStorages size = " + removedStorageDirs.size());
    for(Iterator<StorageDirectory> it
          = this.removedStorageDirs.iterator(); it.hasNext();) {
      StorageDirectory sd = it.next();
      File root = sd.getRoot();
      LOG.info("currently disabled dir " + root.getAbsolutePath() +
               "; type="+sd.getStorageDirType() 
               + ";canwrite="+FileUtil.canWrite(root));
      if(root.exists() && FileUtil.canWrite(root)) {
        LOG.info("restoring dir " + sd.getRoot().getAbsolutePath());
        this.addStorageDir(sd); // restore
        this.removedStorageDirs.remove(sd);
      }
    }
  }
}
 
源代码5 项目: big-c   文件: DiskChecker.java
/**
 * Checks that the current running process can read, write, and execute the
 * given directory by using methods of the File object.
 * 
 * @param dir File to check
 * @throws DiskErrorException if dir is not readable, not writable, or not
 *   executable
 */
private static void checkAccessByFileMethods(File dir)
    throws DiskErrorException {
  if (!FileUtil.canRead(dir)) {
    throw new DiskErrorException("Directory is not readable: "
                                 + dir.toString());
  }

  if (!FileUtil.canWrite(dir)) {
    throw new DiskErrorException("Directory is not writable: "
                                 + dir.toString());
  }

  if (!FileUtil.canExecute(dir)) {
    throw new DiskErrorException("Directory is not executable: "
                                 + dir.toString());
  }
}
 
源代码6 项目: lucene-solr   文件: DiskChecker.java
/**
 * Checks that the current running process can read, write, and execute the
 * given directory by using methods of the File object.
 *
 * @param dir File to check
 * @throws DiskErrorException if dir is not readable, not writable, or not
 *   executable
 */
private static void checkAccessByFileMethods(File dir)
    throws DiskErrorException {
  if (!dir.isDirectory()) {
    throw new DiskErrorException("Not a directory: "
        + dir.toString());
  }

  if (!FileUtil.canRead(dir)) {
    throw new DiskErrorException("Directory is not readable: "
        + dir.toString());
  }

  if (!FileUtil.canWrite(dir)) {
    throw new DiskErrorException("Directory is not writable: "
        + dir.toString());
  }
}
 
源代码7 项目: hadoop   文件: CGroupsHandlerImpl.java
private void initializeControllerPathsFromMtab()
    throws ResourceHandlerException {
  try {
    Map<String, List<String>> parsedMtab = parseMtab();

    //we want to do a bulk update without the paths changing concurrently
    rwLock.writeLock().lock();

    for (CGroupController controller : CGroupController.values()) {
      String name = controller.getName();
      String controllerPath = findControllerInMtab(name, parsedMtab);

      if (controllerPath != null) {
        File f = new File(controllerPath + "/" + this.cGroupPrefix);

        if (FileUtil.canWrite(f)) {
          controllerPaths.put(controller, controllerPath);
        } else {
          String error =
              new StringBuffer("Mount point Based on mtab file: ")
                  .append(MTAB_FILE).append(
                  ". Controller mount point not writable for: ")
                  .append(name).toString();

          LOG.error(error);
          throw new ResourceHandlerException(error);
        }
      } else {

          LOG.warn("Controller not mounted but automount disabled: " + name);
      }
    }
  } catch (IOException e) {
    LOG.warn("Failed to initialize controller paths! Exception: " + e);
    throw new ResourceHandlerException(
        "Failed to initialize controller paths!");
  } finally {
    rwLock.writeLock().unlock();
  }
}
 
源代码8 项目: hadoop   文件: CgroupsLCEResourcesHandler.java
private void initializeControllerPaths() throws IOException {
  String controllerPath;


  Boolean isCentos7 = conf.getBoolean("os.centos7",false);

  if (isCentos7) {
    // centos7
    controllerPath = cgroupMountPath+"/"+CONTROLLER_CPU;  //   "/sys/fs/cgroup/cpu"

  }else {
    Map<String, List<String>> parsedMtab = parseMtab();

    // CPU

    controllerPath = findControllerInMtab(CONTROLLER_CPU, parsedMtab);
  }



  if (controllerPath != null) {
    File f = new File(controllerPath + "/" + this.cgroupPrefix);

    if (FileUtil.canWrite(f)) {
      controllerPaths.put(CONTROLLER_CPU, controllerPath);
    } else {
      throw new IOException("Not able to enforce cpu weights; cannot write "
          + "to cgroup at: " + controllerPath);
    }
  } else {
    throw new IOException("Not able to enforce cpu weights; cannot find "
        + "cgroup for cpu controller in " + getMtabFileName());
  }
}
 
源代码9 项目: hadoop   文件: Storage.java
/**
 * Copies a file (usually large) to a new location using native unbuffered IO.
 * <p>
 * This method copies the contents of the specified source file
 * to the specified destination file using OS specific unbuffered IO.
 * The goal is to avoid churning the file system buffer cache when copying
 * large files.
 *
 * We can't use FileUtils#copyFile from apache-commons-io because it
 * is a buffered IO based on FileChannel#transferFrom, which uses MmapByteBuffer
 * internally.
 *
 * The directory holding the destination file is created if it does not exist.
 * If the destination file exists, then this method will delete it first.
 * <p>
 * <strong>Note:</strong> Setting <code>preserveFileDate</code> to
 * {@code true} tries to preserve the file's last modified
 * date/times using {@link File#setLastModified(long)}, however it is
 * not guaranteed that the operation will succeed.
 * If the modification operation fails, no indication is provided.
 *
 * @param srcFile  an existing file to copy, must not be {@code null}
 * @param destFile  the new file, must not be {@code null}
 * @param preserveFileDate  true if the file date of the copy
 *  should be the same as the original
 *
 * @throws NullPointerException if source or destination is {@code null}
 * @throws IOException if source or destination is invalid
 * @throws IOException if an IO error occurs during copying
 */
public static void nativeCopyFileUnbuffered(File srcFile, File destFile,
    boolean preserveFileDate) throws IOException {
  if (srcFile == null) {
    throw new NullPointerException("Source must not be null");
  }
  if (destFile == null) {
    throw new NullPointerException("Destination must not be null");
  }
  if (srcFile.exists() == false) {
    throw new FileNotFoundException("Source '" + srcFile + "' does not exist");
  }
  if (srcFile.isDirectory()) {
    throw new IOException("Source '" + srcFile + "' exists but is a directory");
  }
  if (srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) {
    throw new IOException("Source '" + srcFile + "' and destination '" +
        destFile + "' are the same");
  }
  File parentFile = destFile.getParentFile();
  if (parentFile != null) {
    if (!parentFile.mkdirs() && !parentFile.isDirectory()) {
      throw new IOException("Destination '" + parentFile
          + "' directory cannot be created");
    }
  }
  if (destFile.exists()) {
    if (FileUtil.canWrite(destFile) == false) {
      throw new IOException("Destination '" + destFile
          + "' exists but is read-only");
    } else {
      if (destFile.delete() == false) {
        throw new IOException("Destination '" + destFile
            + "' exists but cannot be deleted");
      }
    }
  }
  try {
    NativeIO.copyFileUnbuffered(srcFile, destFile);
  } catch (NativeIOException e) {
    throw new IOException("Failed to copy " + srcFile.getCanonicalPath()
        + " to " + destFile.getCanonicalPath()
        + " due to failure in NativeIO#copyFileUnbuffered(). "
        + e.toString());
  }
  if (srcFile.length() != destFile.length()) {
    throw new IOException("Failed to copy full contents from '" + srcFile
        + "' to '" + destFile + "'");
  }
  if (preserveFileDate) {
    if (destFile.setLastModified(srcFile.lastModified()) == false) {
      if (LOG.isDebugEnabled()) {
        LOG.debug("Failed to preserve last modified date from'" + srcFile
          + "' to '" + destFile + "'");
      }
    }
  }
}
 
源代码10 项目: big-c   文件: Storage.java
/**
 * Copies a file (usually large) to a new location using native unbuffered IO.
 * <p>
 * This method copies the contents of the specified source file
 * to the specified destination file using OS specific unbuffered IO.
 * The goal is to avoid churning the file system buffer cache when copying
 * large files.
 *
 * We can't use FileUtils#copyFile from apache-commons-io because it
 * is a buffered IO based on FileChannel#transferFrom, which uses MmapByteBuffer
 * internally.
 *
 * The directory holding the destination file is created if it does not exist.
 * If the destination file exists, then this method will delete it first.
 * <p>
 * <strong>Note:</strong> Setting <code>preserveFileDate</code> to
 * {@code true} tries to preserve the file's last modified
 * date/times using {@link File#setLastModified(long)}, however it is
 * not guaranteed that the operation will succeed.
 * If the modification operation fails, no indication is provided.
 *
 * @param srcFile  an existing file to copy, must not be {@code null}
 * @param destFile  the new file, must not be {@code null}
 * @param preserveFileDate  true if the file date of the copy
 *  should be the same as the original
 *
 * @throws NullPointerException if source or destination is {@code null}
 * @throws IOException if source or destination is invalid
 * @throws IOException if an IO error occurs during copying
 */
public static void nativeCopyFileUnbuffered(File srcFile, File destFile,
    boolean preserveFileDate) throws IOException {
  if (srcFile == null) {
    throw new NullPointerException("Source must not be null");
  }
  if (destFile == null) {
    throw new NullPointerException("Destination must not be null");
  }
  if (srcFile.exists() == false) {
    throw new FileNotFoundException("Source '" + srcFile + "' does not exist");
  }
  if (srcFile.isDirectory()) {
    throw new IOException("Source '" + srcFile + "' exists but is a directory");
  }
  if (srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) {
    throw new IOException("Source '" + srcFile + "' and destination '" +
        destFile + "' are the same");
  }
  File parentFile = destFile.getParentFile();
  if (parentFile != null) {
    if (!parentFile.mkdirs() && !parentFile.isDirectory()) {
      throw new IOException("Destination '" + parentFile
          + "' directory cannot be created");
    }
  }
  if (destFile.exists()) {
    if (FileUtil.canWrite(destFile) == false) {
      throw new IOException("Destination '" + destFile
          + "' exists but is read-only");
    } else {
      if (destFile.delete() == false) {
        throw new IOException("Destination '" + destFile
            + "' exists but cannot be deleted");
      }
    }
  }
  try {
    NativeIO.copyFileUnbuffered(srcFile, destFile);
  } catch (NativeIOException e) {
    throw new IOException("Failed to copy " + srcFile.getCanonicalPath()
        + " to " + destFile.getCanonicalPath()
        + " due to failure in NativeIO#copyFileUnbuffered(). "
        + e.toString());
  }
  if (srcFile.length() != destFile.length()) {
    throw new IOException("Failed to copy full contents from '" + srcFile
        + "' to '" + destFile + "'");
  }
  if (preserveFileDate) {
    if (destFile.setLastModified(srcFile.lastModified()) == false) {
      if (LOG.isDebugEnabled()) {
        LOG.debug("Failed to preserve last modified date from'" + srcFile
          + "' to '" + destFile + "'");
      }
    }
  }
}