/** * @param file * @return * @throws Exception */ private JournalFileImpl readFileHeader(final SequentialFile file) throws Exception { ByteBuffer bb = fileFactory.newBuffer(JournalImpl.SIZE_HEADER); file.read(bb); int journalVersion = bb.getInt(); if (journalVersion != JournalImpl.FORMAT_VERSION) { boolean isCompatible = false; for (int v : JournalImpl.COMPATIBLE_VERSIONS) { if (v == journalVersion) { isCompatible = true; } } if (!isCompatible) { throw ActiveMQJournalBundle.BUNDLE.journalFileMisMatch(); } } int readUserVersion = bb.getInt(); if (readUserVersion != userVersion) { throw ActiveMQJournalBundle.BUNDLE.journalDifferentVersion(); } long fileID = bb.getLong(); fileFactory.releaseBuffer(bb); bb = null; return new JournalFileImpl(file, fileID, journalVersion); }
@Override public String debug() throws Exception { reclaimer.scan(getDataFiles()); StringBuilder builder = new StringBuilder(); for (JournalFile file : filesRepository.getDataFiles()) { builder.append("DataFile:" + file + " posCounter = " + file.getPosCount() + " reclaimStatus = " + file.isCanReclaim() + " live size = " + file.getLiveSize() + "\n"); if (file instanceof JournalFileImpl) { builder.append(((JournalFileImpl) file).debug()); } } for (JournalFile file : filesRepository.getFreeFiles()) { builder.append("FreeFile:" + file + "\n"); } if (currentFile != null) { builder.append("CurrentFile:" + currentFile + " posCounter = " + currentFile.getPosCount() + "\n"); if (currentFile instanceof JournalFileImpl) { builder.append(((JournalFileImpl) currentFile).debug()); } } else { builder.append("CurrentFile: No current file at this point!"); } return builder.toString(); }
/** * @param file * @return * @throws Exception */ private JournalFileImpl readFileHeader(final SequentialFile file) throws Exception { ByteBuffer bb = fileFactory.newBuffer(JournalImpl.SIZE_HEADER); file.read(bb); int journalVersion = bb.getInt(); if (journalVersion != JournalImpl.FORMAT_VERSION) { boolean isCompatible = false; for (int v : JournalImpl.COMPATIBLE_VERSIONS) { if (v == journalVersion) { isCompatible = true; } } if (!isCompatible) { throw ActiveMQJournalBundle.BUNDLE.journalFileMisMatch(); } } int readUserVersion = bb.getInt(); if (readUserVersion != userVersion) { throw ActiveMQJournalBundle.BUNDLE.journalDifferentVersion(); } long fileID = bb.getLong(); fileFactory.releaseBuffer(bb); bb = null; return new JournalFileImpl(file, fileID, journalVersion); }
@Override public String debug() throws Exception { reclaimer.scan(getDataFiles()); StringBuilder builder = new StringBuilder(); for (JournalFile file : filesRepository.getDataFiles()) { builder.append("DataFile:" + file + " posCounter = " + file.getPosCount() + " reclaimStatus = " + file.isCanReclaim() + " live size = " + file.getLiveSize() + "\n"); if (file instanceof JournalFileImpl) { builder.append(((JournalFileImpl) file).debug()); } } for (JournalFile file : filesRepository.getFreeFiles()) { builder.append("FreeFile:" + file + "\n"); } if (currentFile != null) { builder.append("CurrentFile:" + currentFile + " posCounter = " + currentFile.getPosCount() + "\n"); if (currentFile instanceof JournalFileImpl) { builder.append(((JournalFileImpl) currentFile).debug()); } } else { builder.append("CurrentFile: No current file at this point!"); } return builder.toString(); }
private JournalFile reinitializeFile(final JournalFile file) throws Exception { long newFileID = generateFileID(); SequentialFile sf = file.getFile(); sf.open(1, false); int position = JournalImpl.initFileHeader(fileFactory, sf, userVersion, newFileID); JournalFile jf = new JournalFileImpl(sf, newFileID, JournalImpl.FORMAT_VERSION); sf.position(position); sf.close(); return jf; }
private JournalFile reinitializeFile(final JournalFile file) throws Exception { long newFileID = generateFileID(); SequentialFile sf = file.getFile(); sf.open(1, false); int position = JournalImpl.initFileHeader(fileFactory, sf, userVersion, newFileID); JournalFile jf = new JournalFileImpl(sf, newFileID, JournalImpl.FORMAT_VERSION); sf.position(position); sf.close(); return jf; }
JournalFile file = new JournalFileImpl(controlFile, 0, JournalImpl.FORMAT_VERSION);
JournalFile file = new JournalFileImpl(controlFile, 0, JournalImpl.FORMAT_VERSION);
return new JournalFileImpl(sequentialFile, fileID, JournalImpl.FORMAT_VERSION);
return new JournalFileImpl(sequentialFile, fileID, JournalImpl.FORMAT_VERSION);
/** * @throws Exception */ protected void openFile() throws Exception { flush(false); currentFile = filesRepository.openFileCMP(); sequentialFile = currentFile.getFile(); sequentialFile.open(1, false); currentFile = new JournalFileImpl(sequentialFile, nextOrderingID++, JournalImpl.FORMAT_VERSION); final int fileSize = journal.getFileSize(); if (bufferWrite != null && bufferWrite.capacity() < fileSize) { fileFactory.releaseDirectBuffer(bufferWrite); bufferWrite = null; writingChannel = null; } if (bufferWrite == null) { final ByteBuffer bufferWrite = fileFactory.allocateDirectBuffer(fileSize); this.bufferWrite = bufferWrite; writingChannel = ActiveMQBuffers.wrappedBuffer(bufferWrite); } else { writingChannel.clear(); bufferWrite.clear(); } JournalImpl.writeHeader(writingChannel, journal.getUserVersion(), currentFile.getFileID()); }
/** * @throws Exception */ protected void openFile() throws Exception { flush(false); currentFile = filesRepository.openFileCMP(); sequentialFile = currentFile.getFile(); sequentialFile.open(1, false); currentFile = new JournalFileImpl(sequentialFile, nextOrderingID++, JournalImpl.FORMAT_VERSION); final int fileSize = journal.getFileSize(); if (bufferWrite != null && bufferWrite.capacity() < fileSize) { fileFactory.releaseDirectBuffer(bufferWrite); bufferWrite = null; writingChannel = null; } if (bufferWrite == null) { final ByteBuffer bufferWrite = fileFactory.allocateDirectBuffer(fileSize); this.bufferWrite = bufferWrite; writingChannel = ActiveMQBuffers.wrappedBuffer(bufferWrite); } else { writingChannel.clear(); bufferWrite.clear(); } JournalImpl.writeHeader(writingChannel, journal.getUserVersion(), currentFile.getFileID()); }
dataFiles.add(new JournalFileImpl(file, 0, JournalImpl.FORMAT_VERSION)); newFiles.add(new JournalFileImpl(file, 0, JournalImpl.FORMAT_VERSION));