@Override public ReadableLogChannel getReader( LogPosition position, LogVersionBridge logVersionBridge ) throws IOException { PhysicalLogVersionedStoreChannel logChannel = logFiles.openForVersion( position.getLogVersion() ); logChannel.position( position.getByteOffset() ); return new ReadAheadLogChannel( logChannel, logVersionBridge ); }
public static List<LogEntry> logEntries( FileSystemAbstraction fileSystem, String logPath ) throws IOException { File logFile = new File( logPath ); StoreChannel fileChannel = fileSystem.open( logFile, OpenMode.READ ); // Always a header LogHeader header = readLogHeader( ByteBuffer.allocate( LOG_HEADER_SIZE ), fileChannel, true, logFile ); // Read all log entries PhysicalLogVersionedStoreChannel versionedStoreChannel = new PhysicalLogVersionedStoreChannel( fileChannel, header.logVersion, header.logFormatVersion ); ReadableLogChannel logChannel = new ReadAheadLogChannel( versionedStoreChannel ); LogEntryCursor logEntryCursor = new LogEntryCursor( new VersionAwareLogEntryReader<>(), logChannel ); return Iterables.asList( new IOCursorAsResourceIterable<>( logEntryCursor ) ); }
public List<CheckPoint> find( long version ) throws IOException { List<CheckPoint> checkPoints = new ArrayList<>(); for (; version >= INITIAL_LOG_VERSION && logFiles.versionExists( version ); version-- ) { LogVersionedStoreChannel channel = logFiles.openForVersion( version ); ReadableClosablePositionAwareChannel recoveredDataChannel = new ReadAheadLogChannel( channel ); try ( LogEntryCursor cursor = new LogEntryCursor( logEntryReader, recoveredDataChannel ) ) { while ( cursor.next() ) { LogEntry entry = cursor.get(); if ( entry instanceof CheckPoint ) { checkPoints.add( entry.as() ); } } } } return checkPoints; } }
private ReadableLogChannel openLogFile( FileSystemAbstraction fs, int version ) throws IOException { LogFiles logFiles = LogFilesBuilder.logFilesBasedOnlyBuilder( workingDirectory, fs ).build(); PhysicalLogVersionedStoreChannel channel = logFiles.openForVersion( version ); return new ReadAheadLogChannel( channel, new ReaderLogVersionBridge( logFiles ) ); } }
static void filterTransactionLogFile( FileSystemAbstraction fileSystem, File file, final LogHook<LogEntry> filter ) throws IOException { filter.file( file ); try ( StoreChannel in = fileSystem.open( file, OpenMode.READ ) ) { LogHeader logHeader = readLogHeader( ByteBuffer.allocate( LOG_HEADER_SIZE ), in, true, file ); PhysicalLogVersionedStoreChannel inChannel = new PhysicalLogVersionedStoreChannel( in, logHeader.logVersion, logHeader.logFormatVersion ); ReadableLogChannel inBuffer = new ReadAheadLogChannel( inChannel ); LogEntryReader<ReadableLogChannel> entryReader = new VersionAwareLogEntryReader<>(); LogEntry entry; while ( (entry = entryReader.readLogEntry( inBuffer )) != null ) { filter.test( entry ); } } } }
private int transactionCount() throws IOException { return aggregateLogData( version -> { int counter = 0; LogVersionBridge bridge = channel -> channel; LogVersionedStoreChannel versionedStoreChannel = files.openForVersion( version ); try ( ReadableLogChannel channel = new ReadAheadLogChannel( versionedStoreChannel, bridge, 1000 ) ) { try ( PhysicalTransactionCursor<ReadableLogChannel> physicalTransactionCursor = new PhysicalTransactionCursor<>( channel, new VersionAwareLogEntryReader<>() ) ) { while ( physicalTransactionCursor.next() ) { counter++; } } } return counter; } ); } }
PhysicalLogVersionedStoreChannel versionedStoreChannel = new PhysicalLogVersionedStoreChannel( storeChannel, -1 /* ignored */, (byte) -1 /* ignored */ ); try ( ReadAheadLogChannel channel = new ReadAheadLogChannel( versionedStoreChannel, NO_MORE_CHANNELS, 16 ) )
PhysicalLogVersionedStoreChannel versionedStoreChannel = new PhysicalLogVersionedStoreChannel( storeChannel, -1 /* ignored */, (byte) -1 /* ignored */ ); try ( ReadAheadLogChannel channel = new ReadAheadLogChannel( versionedStoreChannel, new LogVersionBridge()
try ( ReadAheadLogChannel logChannel = new ReadAheadLogChannel( storeChannel ); LogEntryCursor cursor = new LogEntryCursor( logEntryReader, logChannel ) )
CheckPoint latestCheckPoint = null; try ( LogVersionedStoreChannel channel = logFiles.openForVersion( version ); ReadAheadLogChannel readAheadLogChannel = new ReadAheadLogChannel( channel ); LogEntryCursor cursor = new LogEntryCursor( logEntryReader, readAheadLogChannel ) )
@Override public ReadableLogChannel getReader( LogPosition position, LogVersionBridge logVersionBridge ) throws IOException { PhysicalLogVersionedStoreChannel logChannel = logFiles.openForVersion( position.getLogVersion() ); logChannel.position( position.getByteOffset() ); return new ReadAheadLogChannel( logChannel, logVersionBridge ); }
try ( ReadAheadLogChannel logChannel = new ReadAheadLogChannel( storeChannel ); LogEntryCursor cursor = new LogEntryCursor( logEntryReader, logChannel ) )
CheckPoint latestCheckPoint = null; try ( LogVersionedStoreChannel channel = logFiles.openForVersion( version ); ReadAheadLogChannel readAheadLogChannel = new ReadAheadLogChannel( channel ); LogEntryCursor cursor = new LogEntryCursor( logEntryReader, readAheadLogChannel ) )