/** * Constructs file information. * * @param info File information to copy data from. * @param lockId Lock ID. * @param modificationTime Last modification time. */ GridGgfsFileInfo(GridGgfsFileInfo info, @Nullable GridUuid lockId, long modificationTime) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, info.props, info.fileMap(), lockId, true, info.accessTime, modificationTime, info.evictExclude()); }
/** * Constructs file information. * * @param info File information to copy data from. * @param props File properties to set. */ GridGgfsFileInfo(GridGgfsFileInfo info, @Nullable Map<String, String> props) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, props, info.fileMap(), info.lockId, true, info.accessTime, info.modificationTime, info.evictExclude()); }
/** * Constructs file information. * * @param info File information to copy data from. * @param lockId Lock ID. * @param modificationTime Last modification time. */ GridGgfsFileInfo(GridGgfsFileInfo info, @Nullable GridUuid lockId, long modificationTime) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, info.props, info.fileMap(), lockId, true, info.accessTime, modificationTime, info.evictExclude()); }
/** * Constructs file information. * * @param info File information to copy data from. * @param props File properties to set. */ GridGgfsFileInfo(GridGgfsFileInfo info, @Nullable Map<String, String> props) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, props, info.fileMap(), info.lockId, true, info.accessTime, info.modificationTime, info.evictExclude()); }
/** * Constructs file information. * * @param info File information to copy data from. * @param len Size of a file. */ GridGgfsFileInfo(GridGgfsFileInfo info, long len) { this(info.isDirectory(), info.id, info.blockSize, len, info.affKey, info.listing, info.props, info.fileMap(), info.lockId, true, info.accessTime, info.modificationTime, info.evictExclude()); }
/** * Constructs file info. * * @param listing New directory listing. * @param old Old file info. */ GridGgfsFileInfo(Map<String, GridGgfsListingEntry> listing, GridGgfsFileInfo old) { this(old.isDirectory(), old.id, old.blockSize, old.len, old.affKey, listing, old.props, old.fileMap(), old.lockId, false, old.accessTime, old.modificationTime, old.evictExclude()); }
/** * Constructs file info. * * @param info File info. * @param accessTime Last access time. * @param modificationTime Last modification time. */ GridGgfsFileInfo(GridGgfsFileInfo info, long accessTime, long modificationTime) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, info.props, info.fileMap(), info.lockId, false, accessTime, modificationTime, info.evictExclude()); }
/** * A copy constructor, which takes all data from the specified * object field-by-field. * * @param info An object to copy data info. */ public GridGgfsFileInfo(GridGgfsFileInfo info) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, info.props, info.fileMap(), info.lockId, true, info.accessTime, info.modificationTime, info.evictExclude()); }
/** * Constructs file info. * * @param listing New directory listing. * @param old Old file info. */ GridGgfsFileInfo(Map<String, GridGgfsListingEntry> listing, GridGgfsFileInfo old) { this(old.isDirectory(), old.id, old.blockSize, old.len, old.affKey, listing, old.props, old.fileMap(), old.lockId, false, old.accessTime, old.modificationTime, old.evictExclude()); }
/** * Constructs file information. * * @param info File information to copy data from. * @param len Size of a file. */ GridGgfsFileInfo(GridGgfsFileInfo info, long len) { this(info.isDirectory(), info.id, info.blockSize, len, info.affKey, info.listing, info.props, info.fileMap(), info.lockId, true, info.accessTime, info.modificationTime, info.evictExclude()); }
/** * Constructs file info. * * @param info File info. * @param accessTime Last access time. * @param modificationTime Last modification time. */ GridGgfsFileInfo(GridGgfsFileInfo info, long accessTime, long modificationTime) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, info.props, info.fileMap(), info.lockId, false, accessTime, modificationTime, info.evictExclude()); }
/** * A copy constructor, which takes all data from the specified * object field-by-field. * * @param info An object to copy data info. */ public GridGgfsFileInfo(GridGgfsFileInfo info) { this(info.isDirectory(), info.id, info.blockSize, info.len, info.affKey, info.listing, info.props, info.fileMap(), info.lockId, true, info.accessTime, info.modificationTime, info.evictExclude()); }
/** * @param blockIdx Block index. * @param fileInfo File info. * @return Block key. */ public GridGgfsBlockKey blockKey(long blockIdx, GridGgfsFileInfo fileInfo) { if (fileInfo.affinityKey() != null) return new GridGgfsBlockKey(fileInfo.id(), fileInfo.affinityKey(), fileInfo.evictExclude(), blockIdx); if (fileInfo.fileMap() != null) { GridUuid affKey = fileInfo.fileMap().affinityKey(blockIdx * fileInfo.blockSize(), false); return new GridGgfsBlockKey(fileInfo.id(), affKey, fileInfo.evictExclude(), blockIdx); } return new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), blockIdx); }
/** * @param blockIdx Block index. * @param fileInfo File info. * @return Block key. */ public GridGgfsBlockKey blockKey(long blockIdx, GridGgfsFileInfo fileInfo) { if (fileInfo.affinityKey() != null) return new GridGgfsBlockKey(fileInfo.id(), fileInfo.affinityKey(), fileInfo.evictExclude(), blockIdx); if (fileInfo.fileMap() != null) { GridUuid affKey = fileInfo.fileMap().affinityKey(blockIdx * fileInfo.blockSize(), false); return new GridGgfsBlockKey(fileInfo.id(), affKey, fileInfo.evictExclude(), blockIdx); } return new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), blockIdx); }
fileInfo.evictExclude(), i);
fileInfo.evictExclude(), i);
return new GridGgfsBlockKey(fileInfo.id(), fileInfo.affinityKey(), fileInfo.evictExclude(), block); return new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), block); GridUuid affKey = fileInfo.fileMap().affinityKey(blockStart, false); return new GridGgfsBlockKey(fileInfo.id(), affKey, fileInfo.evictExclude(), block); return new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), block); locRange.expand(blockStart, fileInfo.blockSize()); return new GridGgfsBlockKey(fileInfo.id(), locRange.affinityKey(), fileInfo.evictExclude(), block);
return new GridGgfsBlockKey(fileInfo.id(), fileInfo.affinityKey(), fileInfo.evictExclude(), block); return new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), block); GridUuid affKey = fileInfo.fileMap().affinityKey(blockStart, false); return new GridGgfsBlockKey(fileInfo.id(), affKey, fileInfo.evictExclude(), block); return new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), block); locRange.expand(blockStart, fileInfo.blockSize()); return new GridGgfsBlockKey(fileInfo.id(), locRange.affinityKey(), fileInfo.evictExclude(), block);
/** * Tries to remove blocks affected by fragmentizer. If {@code cleanNonColocated} is {@code true}, will remove * non-colocated blocks as well. * * @param fileInfo File info to clean up. * @param range Range to clean up. * @param cleanNonColocated {@code True} if all blocks should be cleaned. */ public void cleanBlocks(GridGgfsFileInfo fileInfo, GridGgfsFileAffinityRange range, boolean cleanNonColocated) { long startIdx = range.startOffset() / fileInfo.blockSize(); long endIdx = range.endOffset() / fileInfo.blockSize(); if (log.isDebugEnabled()) log.debug("Cleaning blocks [fileInfo=" + fileInfo + ", range=" + range + ", cleanNonColocated=" + cleanNonColocated + ", startIdx=" + startIdx + ", endIdx=" + endIdx + ']'); try { try (GridDataLoader<GridGgfsBlockKey, byte[]> ldr = dataLoader()) { for (long idx = startIdx; idx <= endIdx; idx++) { ldr.removeData(new GridGgfsBlockKey(fileInfo.id(), range.affinityKey(), fileInfo.evictExclude(), idx)); if (cleanNonColocated) ldr.removeData(new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), idx)); } } } catch (GridException e) { log.error("Failed to clean up file range [fileInfo=" + fileInfo + ", range=" + range + ']', e); } }
/** * Tries to remove blocks affected by fragmentizer. If {@code cleanNonColocated} is {@code true}, will remove * non-colocated blocks as well. * * @param fileInfo File info to clean up. * @param range Range to clean up. * @param cleanNonColocated {@code True} if all blocks should be cleaned. */ public void cleanBlocks(GridGgfsFileInfo fileInfo, GridGgfsFileAffinityRange range, boolean cleanNonColocated) { long startIdx = range.startOffset() / fileInfo.blockSize(); long endIdx = range.endOffset() / fileInfo.blockSize(); if (log.isDebugEnabled()) log.debug("Cleaning blocks [fileInfo=" + fileInfo + ", range=" + range + ", cleanNonColocated=" + cleanNonColocated + ", startIdx=" + startIdx + ", endIdx=" + endIdx + ']'); try { try (GridDataLoader<GridGgfsBlockKey, byte[]> ldr = dataLoader()) { for (long idx = startIdx; idx <= endIdx; idx++) { ldr.removeData(new GridGgfsBlockKey(fileInfo.id(), range.affinityKey(), fileInfo.evictExclude(), idx)); if (cleanNonColocated) ldr.removeData(new GridGgfsBlockKey(fileInfo.id(), null, fileInfo.evictExclude(), idx)); } } } catch (GridException e) { log.error("Failed to clean up file range [fileInfo=" + fileInfo + ", range=" + range + ']', e); } }