Example usage for org.apache.hadoop.fs FileUtil canWrite

List of usage examples for org.apache.hadoop.fs FileUtil canWrite

Introduction

In this page you can find the example usage for org.apache.hadoop.fs FileUtil canWrite.

Prototype

public static boolean canWrite(File f) 

Source Link

Document

Platform independent implementation for File#canWrite()

Usage

From source file:com.mellanox.r4h.MiniDFSCluster.java

License:Apache License

/**
 * @return a debug string which can help diagnose an error of why
 *         a given directory might have a permissions error in the context
 *         of a test case//from   ww  w  .  j  a  va 2 s  .  c o m
 */
private String createPermissionsDiagnosisString(File path) {
    StringBuilder sb = new StringBuilder();
    while (path != null) {
        sb.append("path '" + path + "': ").append("\n");
        sb.append("\tabsolute:").append(path.getAbsolutePath()).append("\n");
        sb.append("\tpermissions: ");
        sb.append(path.isDirectory() ? "d" : "-");
        sb.append(FileUtil.canRead(path) ? "r" : "-");
        sb.append(FileUtil.canWrite(path) ? "w" : "-");
        sb.append(FileUtil.canExecute(path) ? "x" : "-");
        sb.append("\n");
        path = path.getParentFile();
    }
    return sb.toString();
}

From source file:com.splicemachine.fs.localfs.SpliceFileSystem.java

License:Apache License

/**
 * Moves files to a bad file directory on the same device, so that their
 * storage will not be reused./*w ww.ja va  2 s .  c o m*/
 */
@Override
public boolean reportChecksumFailure(Path p, FSDataInputStream in, long inPos, FSDataInputStream sums,
        long sumsPos) {
    try {
        // canonicalize f
        File f = ((RawLocalFileSystem) fs).pathToFile(p).getCanonicalFile();

        // find highest writable parent dir of f on the same device
        String device = new DF(f, getConf()).getMount();
        File parent = f.getParentFile();
        File dir = null;
        while (parent != null && FileUtil.canWrite(parent) && parent.toString().startsWith(device)) {
            dir = parent;
            parent = parent.getParentFile();
        }

        if (dir == null) {
            throw new IOException("not able to find the highest writable parent dir");
        }

        // move the file there
        File badDir = new File(dir, "bad_files");
        if (!badDir.mkdirs()) {
            if (!badDir.isDirectory()) {
                throw new IOException("Mkdirs failed to create " + badDir.toString());
            }
        }
        String suffix = "." + rand.nextInt();
        File badFile = new File(badDir, f.getName() + suffix);
        LOG.warn("Moving bad file " + f + " to " + badFile);
        in.close(); // close it first
        boolean b = f.renameTo(badFile); // rename it
        if (!b) {
            LOG.warn("Ignoring failure of renameTo");
        }
        // move checksum file too
        File checkFile = ((RawLocalFileSystem) fs).pathToFile(getChecksumFile(p));
        // close the stream before rename to release the file handle
        sums.close();
        b = checkFile.renameTo(new File(badDir, checkFile.getName() + suffix));
        if (!b) {
            LOG.warn("Ignoring failure of renameTo");
        }
    } catch (IOException e) {
        LOG.warn("Error moving bad file " + p + ": " + e);
    }
    return false;
}