Java Code Examples for org.apache.hadoop.fs.FileUtil#canWrite()

The following examples show how to use org.apache.hadoop.fs.FileUtil#canWrite() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: NNStorage.java    From hadoop with Apache License 2.0 6 votes vote down vote up
/**
 * 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);
      }
    }
  }
}
 
Example 2
Source File: DiskChecker.java    From hadoop with Apache License 2.0 6 votes vote down vote up
/**
 * 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());
  }
}
 
Example 3
Source File: CgroupsLCEResourcesHandler.java    From big-c with Apache License 2.0 6 votes vote down vote up
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());
  }
}
 
Example 4
Source File: NNStorage.java    From big-c with Apache License 2.0 6 votes vote down vote up
/**
 * 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);
      }
    }
  }
}
 
Example 5
Source File: DiskChecker.java    From big-c with Apache License 2.0 6 votes vote down vote up
/**
 * 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());
  }
}
 
Example 6
Source File: DiskChecker.java    From lucene-solr with Apache License 2.0 6 votes vote down vote up
/**
 * 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());
  }
}
 
Example 7
Source File: CGroupsHandlerImpl.java    From hadoop with Apache License 2.0 5 votes vote down vote up
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();
  }
}
 
Example 8
Source File: CgroupsLCEResourcesHandler.java    From hadoop with Apache License 2.0 5 votes vote down vote up
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());
  }
}
 
Example 9
Source File: Storage.java    From hadoop with Apache License 2.0 4 votes vote down vote up
/**
 * 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 + "'");
      }
    }
  }
}
 
Example 10
Source File: Storage.java    From big-c with Apache License 2.0 4 votes vote down vote up
/**
 * 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 + "'");
      }
    }
  }
}