/** {@inheritDoc} */ @Override public T2<Long, Long> times(String path) throws IOException { IgfsFile info = igfsEx.info(new IgfsPath(path)); if (info == null) throw new IOException("Path not found: " + path); return new T2<>(info.modificationTime(), info.accessTime()); }
null, status.properties(), status.accessTime(), status.modificationTime() ) : igfsCtx.igfs().evictExclude(curPath, false), status.properties(), status.accessTime(), status.modificationTime() );
/** * Convert IGFS file information into Hadoop file status. * * @param file IGFS file information. * @return Hadoop file status. */ private FileStatus convert(IgfsFile file) { return new FileStatus( file.length(), file.isDirectory(), dfltReplication, file.groupBlockSize(), file.modificationTime(), file.accessTime(), permission(file), file.property(IgfsUtils.PROP_USER_NAME, user), file.property(IgfsUtils.PROP_GROUP_NAME, "users"), convert(file.path())) { @Override public String toString() { return "FileStatus [path=" + getPath() + ", isDir=" + isDirectory() + ", len=" + getLen() + "]"; } }; }
/** * A copy constructor. All the fields are copied from the copied {@code igfsFile}, but the {@code groupBlockSize} * which is specified separately. * * @param igfsFile The file to copy. * @param grpBlockSize Group block size. */ public IgfsFileImpl(IgfsFile igfsFile, long grpBlockSize) { A.notNull(igfsFile, "igfsFile"); this.path = igfsFile.path(); this.fileId = igfsFile instanceof IgfsFileImpl ? ((IgfsFileImpl)igfsFile).fileId : IgniteUuid.randomUuid(); this.blockSize = igfsFile.blockSize(); this.len = igfsFile.length(); this.grpBlockSize = igfsFile.isFile() ? grpBlockSize : 0L; this.props = igfsFile.properties(); this.accessTime = igfsFile.accessTime(); this.modificationTime = igfsFile.modificationTime(); this.flags = IgfsUtils.flags(igfsFile.isDirectory(), igfsFile.isFile()); }
/** * Convert IGFS file information into Hadoop file status. * * @param file IGFS file information. * @return Hadoop file status. */ @SuppressWarnings("deprecation") private FileStatus convert(IgfsFile file) { return new FileStatus( file.length(), file.isDirectory(), getDefaultReplication(), file.groupBlockSize(), file.modificationTime(), file.accessTime(), permission(file), file.property(IgfsUtils.PROP_USER_NAME, user), file.property(IgfsUtils.PROP_GROUP_NAME, "users"), convert(file.path())) { @Override public String toString() { return "FileStatus [path=" + getPath() + ", isDir=" + isDir() + ", len=" + getLen() + ", mtime=" + getModificationTime() + ", atime=" + getAccessTime() + ']'; } }; }
assertEquals(info.accessTime(), newInfo.accessTime()); assertEquals(info.modificationTime(), newInfo.modificationTime()); igfs.setTimes(path, -1, info.accessTime() + 1000); assertEquals(info.accessTime() + 1000, newInfo.accessTime()); assertEquals(info.modificationTime(), newInfo.modificationTime()); T2<Long, Long> newSecondaryTimes = igfsSecondary.times(path.toString()); assertEquals(newInfo.accessTime(), (long) newSecondaryTimes.get2()); assertEquals(secondaryTimes.get1(), newSecondaryTimes.get1()); assertEquals(info.accessTime() + 1000, newInfo.accessTime()); assertEquals(info.modificationTime() + 1000, newInfo.modificationTime()); T2<Long, Long> newSecondaryTimes = igfsSecondary.times(path.toString()); assertEquals(newInfo.accessTime(), (long) newSecondaryTimes.get2()); igfs.setTimes(path, info.modificationTime() + 2000, info.accessTime() + 2000); assertEquals(info.accessTime() + 2000, newInfo.accessTime()); assertEquals(info.modificationTime() + 2000, newInfo.modificationTime()); assertEquals(newInfo.accessTime(), (long) newSecondaryTimes.get2());
/** * Checks file access & modification time equality in the file itself and in the same file found through * the listing of its parent. * * @param fs The file system. * @param p The file path. * * @return Tuple of access and modification times of the file. */ private T2<Long, Long> checkParentListingTime(IgfsSecondaryFileSystem fs, IgfsPath p) { IgfsFile f0 = fs.info(p); T2<Long, Long> t0 = new T2<>(f0.accessTime(), f0.modificationTime()); // Root cannot be seen through the parent listing: if (!F.eq(IgfsPath.ROOT, p)) { assertNotNull(f0); Collection<IgfsFile> listing = fs.listFiles(p.parent()); IgfsFile f1 = null; for (IgfsFile fi : listing) { if (F.eq(fi.path(), p)) { f1 = fi; break; } } assertNotNull(f1); // file should be found in parent listing. T2<Long, Long> t1 = new T2<>(f1.accessTime(), f1.modificationTime()); assertEquals(t0, t1); } return t0; }
igfsCtx.igfs().evictExclude(path, false), status.properties(), status.accessTime(), status.modificationTime() );
/** * Test setTimes method when path is partially missing. * * @throws Exception If failed. */ @Test public void testSetTimesMissingPartially() throws Exception { if (!timesSupported()) return; create(igfs, paths(DIR, SUBDIR), null); createFile(igfsSecondary, FILE, chunk); final long MAX_ALIGN_ON_SECOND = (long)Integer.MAX_VALUE * 1000; igfs.setTimes(FILE, MAX_ALIGN_ON_SECOND, MAX_ALIGN_ON_SECOND - 1000); IgfsFile info = igfs.info(FILE); assert info != null; assertEquals(MAX_ALIGN_ON_SECOND - 1000, info.accessTime()); assertEquals(MAX_ALIGN_ON_SECOND, info.modificationTime()); T2<Long, Long> secondaryTimes = igfsSecondary.times(FILE.toString()); assertEquals(info.modificationTime(), (long) secondaryTimes.get1()); assertEquals(info.accessTime(), (long) secondaryTimes.get2()); try { igfs.setTimes(FILE2, MAX_ALIGN_ON_SECOND, MAX_ALIGN_ON_SECOND); fail("Exception is not thrown for missing file."); } catch (Exception ignore) { // No-op. } }
null, status.properties(), status.accessTime(), status.modificationTime() ) : igfsCtx.igfs().evictExclude(curPath, false), status.properties(), status.accessTime(), status.modificationTime() );
/** * A copy constructor. All the fields are copied from the copied {@code igfsFile}, but the {@code groupBlockSize} * which is specified separately. * * @param igfsFile The file to copy. * @param grpBlockSize Group block size. */ public IgfsFileImpl(IgfsFile igfsFile, long grpBlockSize) { A.notNull(igfsFile, "igfsFile"); this.path = igfsFile.path(); this.fileId = igfsFile instanceof IgfsFileImpl ? ((IgfsFileImpl)igfsFile).fileId : IgniteUuid.randomUuid(); this.blockSize = igfsFile.blockSize(); this.len = igfsFile.length(); this.grpBlockSize = igfsFile.isFile() ? grpBlockSize : 0L; this.props = igfsFile.properties(); this.accessTime = igfsFile.accessTime(); this.modificationTime = igfsFile.modificationTime(); this.flags = IgfsUtils.flags(igfsFile.isDirectory(), igfsFile.isFile()); }
igfsCtx.igfs().evictExclude(path, false), status.properties(), status.accessTime(), status.modificationTime() );