/** * @param file * @throws Exception */ public synchronized void addFreeFile(final JournalFile file, final boolean renameTmp) throws Exception { addFreeFile(file, renameTmp, true); }
/** * You need to guarantee lock.acquire() before calling this method! */ protected void moveNextFile(final boolean scheduleReclaim) throws Exception { filesRepository.closeFile(currentFile); currentFile = filesRepository.openFile(); if (scheduleReclaim) { scheduleReclaim(); } if (logger.isTraceEnabled()) { logger.trace("Moving next file " + currentFile); } fileFactory.activateBuffer(currentFile.getFile()); }
/** * Creates files for journal synchronization of a replicated backup. * * In order to simplify synchronization, the file IDs in the backup match those in the live * server. * * @param fileID the fileID to use when creating the file. */ public JournalFile createRemoteBackupSyncFile(long fileID) throws Exception { return createFile(false, false, true, false, fileID); }
/** * @param lastDataPos * @return * @throws Exception */ protected JournalFile setUpCurrentFile(int lastDataPos) throws Exception { // Create any more files we need filesRepository.ensureMinFiles(); // The current file is the last one that has data currentFile = filesRepository.pollLastDataFile(); if (currentFile != null) { if (!currentFile.getFile().isOpen()) currentFile.getFile().open(); currentFile.getFile().position(currentFile.getFile().calculateBlockStart(lastDataPos)); } else { currentFile = filesRepository.getFreeFile(); filesRepository.openFile(currentFile, true); } fileFactory.activateBuffer(currentFile.getFile()); filesRepository.pushOpenedFile(); return currentFile; }
filesRepository.clear(); filesRepository.calculateNextfileID(orderedFiles); filesRepository.addDataFileOnBottom(file); } else { if (changeData) { filesRepository.addFreeFile(file, false, false); assert filesRepository.getDataFiles().isEmpty(); setJournalState(JournalState.SYNCING); return new JournalLoadInformation(0, -1);
reclaimer.scan(getDataFiles()); for (JournalFile file : filesRepository.getDataFiles()) { if (file.isCanReclaim()) { filesRepository.removeDataFile(file); filesRepository.addFreeFile(file, false);
ArrayList<JournalFile> dataFilesToProcess = new ArrayList<>(filesRepository.getDataFilesCount()); dataFilesToProcess.addAll(filesRepository.getDataFiles()); filesRepository.clearDataFiles(); logger.trace("Adding file " + fileToAdd + " back as datafile"); filesRepository.addDataFileOnTop(fileToAdd); logger.trace("There are " + filesRepository.getDataFilesCount() + " datafiles Now");
/** * This will get a File from freeFile without initializing it * * @return uninitialized JournalFile * @throws Exception * @see JournalImpl#initFileHeader(SequentialFileFactory, SequentialFile, int, long) */ private JournalFile takeFile(final boolean keepOpened, final boolean multiAIO, final boolean initFile, final boolean tmpCompactExtension) throws Exception { JournalFile nextFile = null; nextFile = freeFiles.poll(); if (nextFile != null) { freeFilesCount.getAndDecrement(); } if (nextFile == null) { nextFile = createFile(keepOpened, multiAIO, initFile, tmpCompactExtension, -1); } else { if (tmpCompactExtension) { SequentialFile sequentialFile = nextFile.getFile(); sequentialFile.renameTo(sequentialFile.getFileName() + ".cmp"); } if (keepOpened) { openFile(nextFile, multiAIO); } } return nextFile; }
public JournalFile openFileCMP() throws Exception { JournalFile file = openFile(); SequentialFile sequentialFile = file.getFile(); sequentialFile.close(); sequentialFile.renameTo(sequentialFile.getFileName() + ".cmp"); return file; }
currentFile.getFile().close(); filesRepository.clear();
filesRepository = new JournalFilesRepository(fileFactory, this, filePrefix, fileExtension, userVersion, maxAIO, fileSize, minFiles, poolSize, journalFileOpenTimeout);
/** * @param lastDataPos * @return * @throws Exception */ protected JournalFile setUpCurrentFile(int lastDataPos) throws Exception { // Create any more files we need filesRepository.ensureMinFiles(); // The current file is the last one that has data currentFile = filesRepository.pollLastDataFile(); if (currentFile != null) { if (!currentFile.getFile().isOpen()) currentFile.getFile().open(); currentFile.getFile().position(currentFile.getFile().calculateBlockStart(lastDataPos)); } else { currentFile = filesRepository.getFreeFile(); filesRepository.openFile(currentFile, true); } fileFactory.activateBuffer(currentFile.getFile()); filesRepository.pushOpenedFile(); return currentFile; }
filesRepository.clear(); filesRepository.calculateNextfileID(orderedFiles); filesRepository.addDataFileOnBottom(file); } else { if (changeData) { filesRepository.addFreeFile(file, false, false); assert filesRepository.getDataFiles().isEmpty(); setJournalState(JournalState.SYNCING); return new JournalLoadInformation(0, -1);
reclaimer.scan(getDataFiles()); for (JournalFile file : filesRepository.getDataFiles()) { if (file.isCanReclaim()) { filesRepository.removeDataFile(file); filesRepository.addFreeFile(file, false);
ArrayList<JournalFile> dataFilesToProcess = new ArrayList<>(filesRepository.getDataFilesCount()); dataFilesToProcess.addAll(filesRepository.getDataFiles()); filesRepository.clearDataFiles(); logger.trace("Adding file " + fileToAdd + " back as datafile"); filesRepository.addDataFileOnTop(fileToAdd); logger.trace("There are " + filesRepository.getDataFilesCount() + " datafiles Now");
/** * This will get a File from freeFile without initializing it * * @return uninitialized JournalFile * @throws Exception * @see JournalImpl#initFileHeader(SequentialFileFactory, SequentialFile, int, long) */ private JournalFile takeFile(final boolean keepOpened, final boolean multiAIO, final boolean initFile, final boolean tmpCompactExtension) throws Exception { JournalFile nextFile = null; nextFile = freeFiles.poll(); if (nextFile != null) { freeFilesCount.getAndDecrement(); } if (nextFile == null) { nextFile = createFile(keepOpened, multiAIO, initFile, tmpCompactExtension, -1); } else { if (tmpCompactExtension) { SequentialFile sequentialFile = nextFile.getFile(); sequentialFile.renameTo(sequentialFile.getFileName() + ".cmp"); } if (keepOpened) { openFile(nextFile, multiAIO); } } return nextFile; }
public JournalFile openFileCMP() throws Exception { JournalFile file = openFile(); SequentialFile sequentialFile = file.getFile(); sequentialFile.close(); sequentialFile.renameTo(sequentialFile.getFileName() + ".cmp"); return file; }
currentFile.getFile().close(); filesRepository.clear();
filesRepository = new JournalFilesRepository(fileFactory, this, filePrefix, fileExtension, userVersion, maxAIO, fileSize, minFiles, poolSize, journalFileOpenTimeout);
/** * @param file * @throws Exception */ public synchronized void addFreeFile(final JournalFile file, final boolean renameTmp) throws Exception { addFreeFile(file, renameTmp, true); }