private File getSegmentFile() { return isOpen ? storage.getStorageDir().getOpenLogFile(startIndex) : storage.getStorageDir().getClosedLogFile(startIndex, endIndex); }
private File getSegmentFile() { return isOpen ? storage.getStorageDir().getOpenLogFile(startIndex) : storage.getStorageDir().getClosedLogFile(startIndex, endIndex); }
@Override public void execute() throws IOException { IOUtils.cleanup(LOG, out); out = null; File openFile = storage.getStorageDir().getOpenLogFile(startIndex); Preconditions.assertTrue(openFile.exists(), () -> name + ": File " + openFile + " to be rolled does not exist"); if (endIndex - startIndex + 1 > 0) { // finalize the current open segment File dstFile = storage.getStorageDir().getClosedLogFile(startIndex, endIndex); Preconditions.assertTrue(!dstFile.exists()); FileUtils.move(openFile, dstFile); LOG.info("{}: Rolled log segment from {} to {}", name, openFile, dstFile); } else { // delete the file of the empty segment FileUtils.deleteFile(openFile); LOG.info("{}: Deleted empty log segment {}", name, openFile); } updateFlushedIndex(); }
storage.getStorageDir().getOpenLogFile( segments.toTruncate.startIndex) : storage.getStorageDir().getClosedLogFile( segments.toTruncate.startIndex, segments.toTruncate.endIndex); File dstFile = storage.getStorageDir().getClosedLogFile( segments.toTruncate.startIndex, segments.toTruncate.newEndIndex); Preconditions.assertTrue(!dstFile.exists()); } else { delFile = storage.getStorageDir() .getClosedLogFile(del.startIndex, del.endIndex);
storage.getStorageDir().getOpenLogFile( segments.toTruncate.startIndex) : storage.getStorageDir().getClosedLogFile( segments.toTruncate.startIndex, segments.toTruncate.endIndex); File dstFile = storage.getStorageDir().getClosedLogFile( segments.toTruncate.startIndex, segments.toTruncate.newEndIndex); Preconditions.assertTrue(!dstFile.exists(), } else { delFile = storage.getStorageDir() .getClosedLogFile(del.startIndex, del.endIndex);
@Override public void execute() throws IOException { IOUtils.cleanup(LOG, out); out = null; Preconditions.assertTrue(segmentToClose != null); File openFile = storage.getStorageDir() .getOpenLogFile(segmentToClose.getStartIndex()); LOG.debug("{} finalizing log segment {}", name, openFile); Preconditions.assertTrue(openFile.exists(), () -> name + ": File " + openFile + " does not exist, segmentToClose=" + segmentToClose.toDebugString()); if (segmentToClose.numOfEntries() > 0) { // finalize the current open segment File dstFile = storage.getStorageDir().getClosedLogFile( segmentToClose.getStartIndex(), segmentToClose.getEndIndex()); Preconditions.assertTrue(!dstFile.exists()); FileUtils.move(openFile, dstFile); } else { // delete the file of the empty segment FileUtils.deleteFile(openFile); } updateFlushedIndex(); }
private LogEntryProto[] prepareLog(List<SegmentRange> list) throws IOException { List<LogEntryProto> entryList = new ArrayList<>(); for (SegmentRange range : list) { File file = range.isOpen ? storage.getStorageDir().getOpenLogFile(range.start) : storage.getStorageDir().getClosedLogFile(range.start, range.end); final int size = (int) (range.end - range.start + 1); LogEntryProto[] entries = new LogEntryProto[size]; try (LogOutputStream out = new LogOutputStream(file, false, segmentMaxSize, preallocatedSize, bufferSize)) { for (int i = 0; i < size; i++) { SimpleOperation m = new SimpleOperation("m" + (i + range.start)); entries[i] = ProtoUtils.toLogEntryProto(m.getLogEntryContent(), range.term, i + range.start, clientId, callId); out.write(entries[i]); } } Collections.addAll(entryList, entries); } return entryList.toArray(new LogEntryProto[entryList.size()]); }
private LogEntryProto[] prepareLog(List<SegmentRange> list) throws IOException { List<LogEntryProto> entryList = new ArrayList<>(); for (SegmentRange range : list) { File file = range.isOpen ? storage.getStorageDir().getOpenLogFile(range.start) : storage.getStorageDir().getClosedLogFile(range.start, range.end); final int size = (int) (range.end - range.start + 1); LogEntryProto[] entries = new LogEntryProto[size]; try (LogOutputStream out = new LogOutputStream(file, false, segmentMaxSize, preallocatedSize, bufferSize)) { for (int i = 0; i < size; i++) { SimpleOperation m = new SimpleOperation("m" + (i + range.start)); entries[i] = ServerProtoUtils.toLogEntryProto(m.getLogEntryContent(), range.term, i + range.start); out.write(entries[i]); } } Collections.addAll(entryList, entries); } return entryList.toArray(new LogEntryProto[entryList.size()]); }
final File file = isOpen ? storage.getStorageDir().getOpenLogFile(startIndex) : storage.getStorageDir().getClosedLogFile(startIndex, startIndex + numEntries - 1);
private File prepareLog(boolean isOpen, long start, int size, long term) throws IOException { RaftStorage storage = new RaftStorage(storageDir, StartupOption.REGULAR); File file = isOpen ? storage.getStorageDir().getOpenLogFile(start) : storage.getStorageDir().getClosedLogFile(start, start + size - 1); LogEntryProto[] entries = new LogEntryProto[size]; try (LogOutputStream out = new LogOutputStream(file, false, segmentMaxSize, preallocatedSize, bufferSize)) { for (int i = 0; i < size; i++) { SimpleOperation op = new SimpleOperation("m" + i); entries[i] = ProtoUtils.toLogEntryProto(op.getLogEntryContent(), term, i + start, clientId, callId); out.write(entries[i]); } } storage.close(); return file; }