boolean isBPDirEmpty(String bpid) throws IOException { File volumeCurrentDir = this.getCurrentDir(); File bpDir = new File(volumeCurrentDir, bpid); File bpCurrentDir = new File(bpDir, DataStorage.STORAGE_DIR_CURRENT); File finalizedDir = new File(bpCurrentDir, DataStorage.STORAGE_DIR_FINALIZED); File rbwDir = new File(bpCurrentDir, DataStorage.STORAGE_DIR_RBW); if (fileIoProvider.exists(this, finalizedDir) && !DatanodeUtil.dirNoFilesRecursive(this, finalizedDir, fileIoProvider)) { return false; } if (fileIoProvider.exists(this, rbwDir) && fileIoProvider.list(this, rbwDir).length != 0) { return false; } return true; }
/** * Create a new file. * @throws IOException * if the file already exists or if the file cannot be created. */ public static File createFileWithExistsCheck( FsVolumeSpi volume, Block b, File f, FileIoProvider fileIoProvider) throws IOException { if (fileIoProvider.exists(volume, f)) { throw new IOException("Failed to create temporary file for " + b + ". File " + f + " should not be present, but is."); } // Create the zero-length temp file final boolean fileCreated; try { fileCreated = fileIoProvider.createFile(volume, f); } catch (IOException ioe) { throw new IOException(DISK_ERROR + "Failed to create " + f, ioe); } if (!fileCreated) { throw new IOException("Failed to create temporary file for " + b + ". File " + f + " should be creatable, but is already present."); } return f; }
@Override public boolean blockDataExists() { return getFileIoProvider().exists(getVolume(), getBlockFile()); }
@Override public boolean metadataExists() { return getFileIoProvider().exists(getVolume(), getMetaFile()); }
fileIoProvider.exists(vol, diskMetaFile); final boolean diskFileExists = diskFile != null && fileIoProvider.exists(vol, diskFile); File memMetaFile = FsDatasetUtil.getMetaFile(diskFile, memBlockInfo.getGenerationStamp()); if (fileIoProvider.exists(vol, memMetaFile)) { String warningPrefix = "Metadata file in memory " + memMetaFile.getAbsolutePath()