public String getFileName() { return this.mappedFile.getFileName(); }
public void deleteLastMappedFile() { MappedFile lastMappedFile = getLastMappedFile(); if (lastMappedFile != null) { lastMappedFile.destroy(1000); this.mappedFiles.remove(lastMappedFile); log.info("on recover, destroy a logic mapped file " + lastMappedFile.getFileName()); } }
public void checkSelf() { if (!this.mappedFiles.isEmpty()) { Iterator<MappedFile> iterator = mappedFiles.iterator(); MappedFile pre = null; while (iterator.hasNext()) { MappedFile cur = iterator.next(); if (pre != null) { if (cur.getFileFromOffset() - pre.getFileFromOffset() != this.mappedFileSize) { LOG_ERROR.error("[BUG]The mappedFile queue's data is damaged, the adjacent mappedFile's offset don't match. pre file {}, cur file {}", pre.getFileName(), cur.getFileName()); } } pre = cur; } } }
public void shutdown() { this.stopped = true; this.thread.interrupt(); try { this.thread.join(this.getJointime()); } catch (InterruptedException e) { log.error("Interrupted", e); } for (AllocateRequest req : this.requestTable.values()) { if (req.mappedFile != null) { log.info("delete pre allocated maped file, {}", req.mappedFile.getFileName()); req.mappedFile.destroy(1000); } } }
public boolean retryDeleteFirstFile(final long intervalForcibly) { MappedFile mappedFile = this.getFirstMappedFile(); if (mappedFile != null) { if (!mappedFile.isAvailable()) { log.warn("the mappedFile was destroyed once, but still alive, " + mappedFile.getFileName()); boolean result = mappedFile.destroy(intervalForcibly); if (result) { log.info("the mappedFile re delete OK, " + mappedFile.getFileName()); List<MappedFile> tmpFiles = new ArrayList<MappedFile>(); tmpFiles.add(mappedFile); this.deleteExpiredFile(tmpFiles); } else { log.warn("the mappedFile re delete failed, " + mappedFile.getFileName()); } return result; } } return false; }
void deleteExpiredFile(List<MappedFile> files) { if (!files.isEmpty()) { Iterator<MappedFile> iterator = files.iterator(); while (iterator.hasNext()) { MappedFile cur = iterator.next(); if (!this.mappedFiles.contains(cur)) { iterator.remove(); log.info("This mappedFile {} is not contained by mappedFiles, so skip it.", cur.getFileName()); } } try { if (!this.mappedFiles.removeAll(files)) { log.error("deleteExpiredFile remove failed."); } } catch (Exception e) { log.error("deleteExpiredFile has exception.", e); } } }
this.getFileName(), System.currentTimeMillis() - beginTime); mappedByteBuffer.force(); log.info("mapped file warm-up done. mappedFile={}, costTime={}", this.getFileName(), System.currentTimeMillis() - beginTime);
log.info("recover current consume queue file over, " + mappedFile.getFileName() + " " + offset + " " + size + " " + tagsCode); break; + mappedFile.getFileName()); break; } else { processOffset = mappedFile.getFileFromOffset(); mappedFileOffset = 0; log.info("recover next consume queue file, " + mappedFile.getFileName()); log.info("recover current consume queue queue over " + mappedFile.getFileName() + " " + (processOffset + mappedFileOffset)); break;
/** * Delete files before {@code minAddress}. * * @param minAddress less than 0 */ public void truncateByMinAddress(final long minAddress) { if (!isExtAddr(minAddress)) { return; } log.info("Truncate consume queue ext by min {}.", minAddress); List<MappedFile> willRemoveFiles = new ArrayList<MappedFile>(); List<MappedFile> mappedFiles = this.mappedFileQueue.getMappedFiles(); final long realOffset = unDecorate(minAddress); for (MappedFile file : mappedFiles) { long fileTailOffset = file.getFileFromOffset() + this.mappedFileSize; if (fileTailOffset < realOffset) { log.info("Destroy consume queue ext by min: file={}, fileTailOffset={}, minOffset={}", file.getFileName(), fileTailOffset, realOffset); if (file.destroy(1000)) { willRemoveFiles.add(file); } } } this.mappedFileQueue.deleteExpiredFile(willRemoveFiles); }
processOffset = mappedFile.getFileFromOffset(); mappedFileOffset = 0; log.info("Recover next consume queue extend file, " + mappedFile.getFileName()); continue; + mappedFile.getFileName()); break;
this.mappedFileQueue.setCommittedWhere(expectLogicOffset); this.fillPreBlank(mappedFile, expectLogicOffset); log.info("fill pre blank space " + mappedFile.getFileName() + " " + expectLogicOffset + " " + mappedFile.getWrotePosition());
if (index >= mappedFiles.size()) { log.info("recover last 3 physics file over, last mapped file " + mappedFile.getFileName()); break; } else { processOffset = mappedFile.getFileFromOffset(); mappedFileOffset = 0; log.info("recover next physics file, " + mappedFile.getFileName()); log.info("recover physics file end, " + mappedFile.getFileName()); break;
mappedFile = mappedFiles.get(index); if (this.isMappedFileMatchedRecover(mappedFile)) { log.info("recover from this mapped file " + mappedFile.getFileName()); break; log.info("recover physics file over, last mapped file " + mappedFile.getFileName()); break; } else { processOffset = mappedFile.getFileFromOffset(); mappedFileOffset = 0; log.info("recover next physics file, " + mappedFile.getFileName()); log.info("recover physics file end, " + mappedFile.getFileName()); break;
public String getFileName() { return this.mappedFile.getFileName(); }
fullFillToEnd(mappedFile, wrotePosition); log.info("No enough space(need:{}, has:{}) of file {}, so fill to end", size, blankSize, mappedFile.getFileName()); continue;
public void backupFiles(long offset, String backupPath) { for (MappedFile file : this.mappedFiles) { long fileTailOffset = file.getFileFromOffset() + this.mappedFileSize; if (fileTailOffset > offset) { file.flush(0); try { Path source = Paths.get(file.getFileName()); Path target = Paths.get(StorePathConfigHelper.getBackupStoreFilePath(backupPath, new File(file.getFileName()).getName())); Files.copy(source, target); log.info("backup file:{} to {}", file.getFileName(), target); } catch (Exception ex) { log.error("backup file failed", ex); } } } }
public void deleteLastMappedFile() { MappedFile lastMappedFile = getLastMappedFile(); if (lastMappedFile != null) { lastMappedFile.destroy(1000); this.mappedFiles.remove(lastMappedFile); log.info("on recover, destroy a logic mapped file " + lastMappedFile.getFileName()); } }
public void shutdown() { this.stopped = true; this.thread.interrupt(); try { this.thread.join(this.getJointime()); } catch (InterruptedException e) { log.error("Interrupted", e); } for (AllocateRequest req : this.requestTable.values()) { if (req.mappedFile != null) { log.info("delete pre allocated maped file, {}", req.mappedFile.getFileName()); req.mappedFile.destroy(1000); } } }
void deleteExpiredFile(List<MappedFile> files) { if (!files.isEmpty()) { Iterator<MappedFile> iterator = files.iterator(); while (iterator.hasNext()) { MappedFile cur = iterator.next(); if (!this.mappedFiles.contains(cur)) { iterator.remove(); log.info("This mappedFile {} is not contained by mappedFiles, so skip it.", cur.getFileName()); } } try { if (!this.mappedFiles.removeAll(files)) { log.error("deleteExpiredFile remove failed."); } } catch (Exception e) { log.error("deleteExpiredFile has exception.", e); } } }
public void checkSelf() { if (!this.mappedFiles.isEmpty()) { Iterator<MappedFile> iterator = mappedFiles.iterator(); MappedFile pre = null; while (iterator.hasNext()) { MappedFile cur = iterator.next(); if (pre != null) { if (cur.getFileFromOffset() - pre.getFileFromOffset() != this.mappedFileSize) { LOG_ERROR.error("[BUG]The mappedFile queue's data is damaged, the adjacent mappedFile's offset don't match. pre file {}, cur file {}", pre.getFileName(), cur.getFileName()); } } pre = cur; } } }