private LogTailScanner getTailScanner( LogFiles logFiles, LogEntryReader<ReadableClosablePositionAwareChannel> reader ) { return new LogTailScanner( logFiles, reader, monitors, false ); }
private LogTailScanner getTailScanner( File databaseDirectory ) throws IOException { LogFiles logFiles = LogFilesBuilder.logFilesBasedOnlyBuilder( databaseDirectory, fs ).build(); return new LogTailScanner( logFiles, new VersionAwareLogEntryReader<>(), monitors ); }
public boolean isRecoveryRequiredAt( DatabaseLayout databaseLayout ) throws IOException { // We need config to determine where the logical log files are if ( !NeoStores.isStorePresent( pageCache, databaseLayout ) ) { return false; } LogEntryReader<ReadableClosablePositionAwareChannel> reader = new VersionAwareLogEntryReader<>(); LogFiles logFiles = LogFilesBuilder.activeFilesBuilder( databaseLayout, fs, pageCache ) .withConfig( config ) .withLogEntryReader( reader ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, reader, monitors ); return new RecoveryStartInformationProvider( tailScanner, NO_MONITOR ).get().isRecoveryRequired(); }
private UpgradableDatabase getUpgradableDatabase( StoreVersionCheck check ) throws IOException { VersionAwareLogEntryReader<ReadableClosablePositionAwareChannel> logEntryReader = new VersionAwareLogEntryReader<>(); LogFiles logFiles = LogFilesBuilder.logFilesBasedOnlyBuilder( workingDatabaseLayout.databaseDirectory(), fs ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, logEntryReader, new Monitors() ); return new UpgradableDatabase( check, Standard.LATEST_RECORD_FORMATS, tailScanner ); }
@Before public void setUp() throws IOException { logVersionRepository = new SimpleLogVersionRepository(); logFiles = LogFilesBuilder .activeFilesBuilder( testDirectory.databaseLayout(), fsRule, pageCacheRule.getPageCache( fsRule ) ) .withLogVersionRepository( logVersionRepository ) .build(); tailScanner = new LogTailScanner( logFiles, reader, monitors ); }
private UpgradableDatabase getUpgradableDatabase( PageCache pageCache ) throws IOException { VersionAwareLogEntryReader<ReadableClosablePositionAwareChannel> entryReader = new VersionAwareLogEntryReader<>(); LogFiles logFiles = LogFilesBuilder.logFilesBasedOnlyBuilder( databaseLayout.databaseDirectory(), fileSystem ) .withLogEntryReader( entryReader ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, entryReader, new Monitors() ); return new UpgradableDatabase( new StoreVersionCheck( pageCache ), getRecordFormats(), tailScanner ); }
public static void removeCheckPointFromTxLog( FileSystemAbstraction fileSystem, File databaseDirectory ) throws IOException { LogFiles logFiles = LogFilesBuilder.logFilesBasedOnlyBuilder( databaseDirectory, fileSystem ).build(); LogEntryReader<ReadableClosablePositionAwareChannel> logEntryReader = new VersionAwareLogEntryReader<>(); LogTailScanner tailScanner = new LogTailScanner( logFiles, logEntryReader, new Monitors() ); LogTailScanner.LogTailInformation logTailInformation = tailScanner.getTailInformation(); if ( logTailInformation.commitsAfterLastCheckpoint() ) { // done already return; } // let's assume there is at least a checkpoint assertNotNull( logTailInformation.lastCheckPoint ); LogPosition logPosition = logTailInformation.lastCheckPoint.getLogPosition(); File logFile = logFiles.getLogFileForVersion( logPosition.getLogVersion() ); fileSystem.truncate( logFile, logPosition.getByteOffset() ); } }
private void appendCheckpoint( LogEntryVersion logVersion ) throws IOException { PageCache pageCache = pageCacheRule.getPageCache( fs ); VersionAwareLogEntryReader<ReadableClosablePositionAwareChannel> logEntryReader = new VersionAwareLogEntryReader<>(); LogFiles logFiles = LogFilesBuilder.activeFilesBuilder( storeDirectory.databaseLayout(), fs, pageCache ).withLogEntryReader( logEntryReader ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, logEntryReader, new Monitors() ); LogTailScanner.LogTailInformation tailInformation = tailScanner.getTailInformation(); try ( Lifespan lifespan = new Lifespan( logFiles ) ) { FlushablePositionAwareChannel channel = logFiles.getLogFile().getWriter(); LogPosition logPosition = tailInformation.lastCheckPoint.getLogPosition(); // Fake record channel.put( logVersion.byteCode() ) .put( CHECK_POINT ) .putLong( logPosition.getLogVersion() ) .putLong( logPosition.getByteOffset() ); channel.prepareForFlush().flush(); } } }
.withDependencies( dataSourceDependencies ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, logEntryReader, monitors, failOnCorruptedLogFiles ); monitors.addMonitorListener( new LoggingLogTailScannerMonitor( logService.getInternalLog( LogTailScanner.class ) ) );
public boolean isRecoveryRequiredAt( DatabaseLayout databaseLayout ) throws IOException { // We need config to determine where the logical log files are if ( !NeoStores.isStorePresent( pageCache, databaseLayout ) ) { return false; } LogEntryReader<ReadableClosablePositionAwareChannel> reader = new VersionAwareLogEntryReader<>(); LogFiles logFiles = LogFilesBuilder.activeFilesBuilder( databaseLayout, fs, pageCache ) .withConfig( config ) .withLogEntryReader( reader ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, reader, monitors ); return new RecoveryStartInformationProvider( tailScanner, NO_MONITOR ).get().isRecoveryRequired(); }
.withDependencies( dataSourceDependencies ).build(); LogTailScanner tailScanner = new LogTailScanner( logFiles, logEntryReader, monitors, failOnCorruptedLogFiles ); monitors.addMonitorListener( new LoggingLogTailScannerMonitor( logService.getInternalLog( LogTailScanner.class ) ) );