List of usage examples for org.apache.hadoop.fs FileUtil canWrite
public static boolean canWrite(File f)
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; }