From 82342d3d4c9003739a90cb12369027fa2e8fce4c Mon Sep 17 00:00:00 2001 From: Jim Webber Date: Wed, 13 Jan 2016 16:01:30 +0000 Subject: [PATCH] Made some wiggle room in the interface hierarchy to decouple buffer reading from logs specifically. --- .../org/neo4j/kernel/NeoStoreDataSource.java | 16 +++--- .../recovery/RecoveryRequiredChecker.java | 7 ++- .../CountsSnapshotDeserializer.java | 4 +- .../impl/store/counts/TransactionStream.java | 24 ++++---- .../storemigration/UpgradableDatabase.java | 4 +- .../legacylogs/LegacyLogEntryReader.java | 12 ++-- .../legacylogs/LogEntrySortingCursor.java | 10 ++-- .../command/BaseCommandReader.java | 9 +-- .../impl/transaction/log/LogEntryCursor.java | 7 ++- .../kernel/impl/transaction/log/LogFile.java | 6 +- .../transaction/log/LogFileRecoverer.java | 8 +-- .../impl/transaction/log/PhysicalLogFile.java | 6 +- .../log/PhysicalLogicalTransactionStore.java | 12 ++-- .../log/PhysicalTransactionCursor.java | 6 +- ...ReadAheadPositionableReadableChannel.java} | 7 ++- .../log/ReadOnlyTransactionStore.java | 2 +- ...nnel.java => ReadableClosableChannel.java} | 2 +- ...ReadableClosablePositionAwareChannel.java} | 2 +- ...eReadableClosablePositionAwareChannel.java | 25 +++++++++ .../transaction/log/entry/LogEntryParser.java | 10 ++-- .../log/entry/LogEntryParsersV1_9.java | 16 +++--- .../log/entry/LogEntryParsersV2_0.java | 16 +++--- .../log/entry/LogEntryParsersV2_1.java | 16 +++--- .../log/entry/LogEntryParsersV2_2.java | 18 +++--- .../log/entry/LogEntryParsersV2_2_4.java | 18 +++--- .../log/entry/LogEntryParsersV2_3.java | 22 ++++---- .../transaction/log/entry/LogEntryReader.java | 9 +-- .../log/entry/LogHeaderReader.java | 4 +- .../log/entry/VersionAwareLogEntryReader.java | 4 +- .../recovery/LatestCheckPointFinder.java | 12 ++-- .../batchimport/input/InputEntityReader.java | 13 +++-- .../impl/batchimport/input/ValueType.java | 24 ++++---- .../java/org/neo4j/kernel/RecoveryTest.java | 12 ++-- ...untsSnapshotSerializerIntegrationTest.java | 10 ++-- ...untsStoreCountsSnapshotSerializerTest.java | 8 +-- ...ryCountsStoreSnapshotDeserializerTest.java | 20 +++---- .../legacylogs/LegacyLogEntryReaderTest.java | 14 ++--- .../legacylogs/LogEntrySortingCursorTest.java | 6 +- .../kernel/impl/transaction/LogMatchers.java | 7 ++- .../PhysicalTransactionCursorTest.java | 8 +-- ...nelTest.java => ReadAheadChannelTest.java} | 8 +-- .../PhysicalLogCommandReaderV2_1Test.java | 4 +- .../PhysicalLogCommandReaderV2_2_4Test.java | 4 +- .../PhysicalLogCommandReaderV3_0Test.java | 10 ++-- .../PhysicalLogNeoCommandReaderV2Test.java | 6 +- ...ingTransactionAppenderConcurrencyTest.java | 2 +- .../log/BatchingTransactionAppenderTest.java | 16 +++--- ...nnel.java => InMemoryClosableChannel.java} | 29 ++++------ ...ReadableClosablePositionAwareChannel.java} | 7 ++- .../transaction/log/PhysicalLogFileTest.java | 47 +++++----------- .../log/TransactionPositionLocatorTest.java | 4 +- .../CheckPointerIntegrationTest.java | 18 +++--- .../entry/LogEntryParserDispatcherV6Test.java | 12 ++-- .../log/entry/LogEntryParserV2_1Test.java | 16 +++--- .../log/entry/LogEntryParserV2_2Test.java | 10 ++-- .../log/entry/LogHeaderReaderTest.java | 4 +- .../log/entry/LogHeaderWriterTest.java | 4 +- .../entry/VersionAwareLogEntryReaderTest.java | 44 +++++++-------- .../log/pruning/TestLogPruning.java | 12 ++-- .../TransactionAppenderStressTest.java | 19 ++++--- .../transaction/state/LogTruncationTest.java | 18 +++--- .../transaction/state/NodeCommandTest.java | 4 +- .../state/RelationshipGroupCommandTest.java | 4 +- .../state/SchemaRuleCommandTest.java | 6 +- .../state/TransactionRecordStateTest.java | 12 ++-- .../recovery/LatestCheckPointFinderTest.java | 56 +++++++++---------- .../java/org/neo4j/test/LogTestUtils.java | 11 ++-- .../impl/lucene/legacy/IndexCreationTest.java | 4 +- .../java/org/neo4j/backup/BackupClient.java | 4 +- .../org/neo4j/backup/BackupProtocolTest.java | 4 +- .../src/main/java/org/neo4j/com/Client.java | 18 +++--- ...va => NetworkReadableClosableChannel.java} | 6 +- .../src/main/java/org/neo4j/com/Protocol.java | 15 ++--- .../org/neo4j/com/ChannelBufferWrapper.java | 8 +-- .../test/java/org/neo4j/com/ProtocolTest.java | 14 ++--- ...va => NetworkReadableClosableByteBuf.java} | 6 +- .../tx/edge/TxPullResponseDecoder.java | 6 +- ...NetworkReadableClosableChannelNetty4.java} | 6 +- .../ReplicatedTokenRequestSerializer.java | 8 +-- .../tx/ReplicatedTransactionFactory.java | 10 ++-- .../org/neo4j/kernel/ha/HaRequestType210.java | 8 +-- .../org/neo4j/kernel/ha/MasterClient210.java | 11 ++-- .../org/neo4j/kernel/ha/MasterClient214.java | 6 +- .../ha/com/master/DefaultSlaveFactory.java | 6 +- .../kernel/ha/com/master/MasterServer.java | 6 +- .../kernel/ha/com/master/SlaveClient.java | 4 +- .../ha/com/slave/MasterClientResolver.java | 7 ++- .../factory/HighlyAvailableEditionModule.java | 7 ++- .../neo4j/ha/upgrade/MasterClientTest.java | 4 +- .../member/HighAvailabilitySlavesTest.java | 4 +- .../ha/com/master/MasterServerTest.java | 4 +- .../com/slave/MasterClientResolverTest.java | 4 +- .../org/neo4j/tools/dump/DumpLogicalLog.java | 10 ++-- .../neo4j/tools/rawstorereader/RsdrMain.java | 10 ++-- .../neo4j/tools/rebuild/RebuildFromLogs.java | 14 ++--- 95 files changed, 526 insertions(+), 511 deletions(-) rename community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/{ReadAheadLogChannel.java => ReadAheadPositionableReadableChannel.java} (92%) rename community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/{ReadableLogChannel.java => ReadableClosableChannel.java} (90%) rename community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/{ReadableVersionableLogChannel.java => ReadableClosablePositionAwareChannel.java} (88%) create mode 100644 community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/VersionableReadableClosablePositionAwareChannel.java rename community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/{ReadAheadLogChannelTest.java => ReadAheadChannelTest.java} (93%) rename community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/{InMemoryLogChannel.java => InMemoryClosableChannel.java} (85%) rename community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/{InMemoryVersionableLogChannel.java => InMemoryVersionableReadableClosablePositionAwareChannel.java} (79%) rename enterprise/com/src/main/java/org/neo4j/com/{NetworkReadableLogChannel.java => NetworkReadableClosableChannel.java} (93%) rename enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/{NetworkReadableLogByteBuf.java => NetworkReadableClosableByteBuf.java} (93%) rename enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/{NetworkReadableLogChannelNetty4.java => NetworkReadableClosableChannelNetty4.java} (93%) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java index b2584b971760b..5a944d6b06389 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java @@ -44,6 +44,7 @@ import org.neo4j.kernel.api.exceptions.ProcedureException; import org.neo4j.kernel.api.index.SchemaIndexProvider; import org.neo4j.kernel.api.labelscan.LabelScanStore; +import org.neo4j.kernel.builtinprocs.BuiltInProcedures; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.dependency.HighestSelectionStrategy; import org.neo4j.kernel.guard.Guard; @@ -80,8 +81,6 @@ import org.neo4j.kernel.impl.locking.Locks; import org.neo4j.kernel.impl.locking.ReentrantLockService; import org.neo4j.kernel.impl.logging.LogService; -import org.neo4j.kernel.builtinprocs.BuiltInProcedures; -import org.neo4j.proc.Procedures; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine; import org.neo4j.kernel.impl.store.MetaDataStore; import org.neo4j.kernel.impl.store.NeoStores; @@ -105,11 +104,11 @@ import org.neo4j.kernel.impl.transaction.log.PhysicalLogFileInformation; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; import org.neo4j.kernel.impl.transaction.log.PhysicalLogicalTransactionStore; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.TransactionAppender; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.transaction.log.TransactionMetadataCache; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointScheduler; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointThreshold; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointThresholds; @@ -153,6 +152,7 @@ import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; import org.neo4j.logging.Logger; +import org.neo4j.proc.Procedures; import org.neo4j.storageengine.api.StorageEngine; import org.neo4j.storageengine.api.StoreReadLayer; @@ -459,7 +459,7 @@ public void start() throws IOException storageEngine = buildStorageEngine( propertyKeyTokenHolder, labelTokens, relationshipTypeTokens, legacyIndexProviderLookup, indexConfigStore, updateableSchemaState::clear ); - LogEntryReader logEntryReader = + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( storageEngine.commandReaderFactory() ); TransactionLogModule transactionLogModule = @@ -592,7 +592,7 @@ private TransactionLogModule buildTransactionLogs( JobScheduler scheduler, FileSystemAbstraction fileSystemAbstraction, Iterable indexProviders, - StorageEngine storageEngine, LogEntryReader logEntryReader ) + StorageEngine storageEngine, LogEntryReader logEntryReader ) { TransactionMetadataCache transactionMetadataCache = new TransactionMetadataCache( 1000, 100_000 ); final PhysicalLogFiles logFiles = new PhysicalLogFiles( storeDir, PhysicalLogFile.DEFAULT_NAME, @@ -613,7 +613,7 @@ private TransactionLogModule buildTransactionLogs( public long getTimestampForVersion( long version ) throws IOException { LogPosition position = LogPosition.start( version ); - try ( ReadableVersionableLogChannel channel = logFile.getReader( position ) ) + try ( VersionableReadableClosablePositionAwareChannel channel = logFile.getReader( position ) ) { LogEntry entry; while ( (entry = logEntryReader.readLogEntry( channel )) != null ) @@ -738,7 +738,7 @@ private void buildRecovery( final StoreFlusher storeFlusher, final StartupStatisticsProvider startupStatistics, StorageEngine storageEngine, - LogEntryReader logEntryReader ) + LogEntryReader logEntryReader ) { MetaDataStore metaDataStore = neoStores.getMetaDataStore(); RecoveryVisitor recoveryVisitor = new RecoveryVisitor( metaDataStore, storageEngine, recoveryVisitorMonitor ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/recovery/RecoveryRequiredChecker.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/recovery/RecoveryRequiredChecker.java index 9cbfbf256a22b..c28180af0b15f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/recovery/RecoveryRequiredChecker.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/recovery/RecoveryRequiredChecker.java @@ -29,7 +29,7 @@ import org.neo4j.kernel.impl.store.NeoStores; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryVersion; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; @@ -65,8 +65,9 @@ public boolean isRecoveryRequiredAt( File dataDir ) throws IOException long logVersion = MetaDataStore.getRecord( pageCache, neoStore, MetaDataStore.Position.LOG_VERSION ); PhysicalLogFiles logFiles = new PhysicalLogFiles( dataDir, fs ); - LogEntryReader reader = new VersionAwareLogEntryReader<>( LogEntryVersion.CURRENT.byteCode(), - new RecordStorageCommandReaderFactory() ); + LogEntryReader reader = + new VersionAwareLogEntryReader<>( LogEntryVersion.CURRENT.byteCode(), + new RecordStorageCommandReaderFactory() ); LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); return new PositionToRecoverFrom( finder ).apply( logVersion ) != LogPosition.UNSPECIFIED; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/countStore/CountsSnapshotDeserializer.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/countStore/CountsSnapshotDeserializer.java index 2439b3ac15c5a..04663588cc987 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/countStore/CountsSnapshotDeserializer.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/countStore/CountsSnapshotDeserializer.java @@ -25,7 +25,7 @@ import org.neo4j.kernel.impl.store.counts.keys.CountsKey; import org.neo4j.kernel.impl.store.counts.keys.CountsKeyType; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import static org.neo4j.kernel.impl.store.counts.keys.CountsKeyFactory.indexSampleKey; import static org.neo4j.kernel.impl.store.counts.keys.CountsKeyFactory.indexStatisticsKey; @@ -35,7 +35,7 @@ public class CountsSnapshotDeserializer { - public static CountsSnapshot deserialize( ReadableLogChannel channel ) throws IOException + public static CountsSnapshot deserialize( ReadableClosableChannel channel ) throws IOException { long txid = channel.getLong(); int size = channel.getInt(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/TransactionStream.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/TransactionStream.java index 82fe588121461..86363bb05f1c3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/TransactionStream.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/counts/TransactionStream.java @@ -35,8 +35,8 @@ import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommit; @@ -55,9 +55,10 @@ class TransactionStream private final FileSystemAbstraction fs; private final boolean isContiguous; private final LogFile firstFile; - private final LogEntryReader logEntryReader; + private final LogEntryReader logEntryReader; - public TransactionStream( FileSystemAbstraction fs, File path, LogEntryReader logEntryReader ) + public TransactionStream( FileSystemAbstraction fs, File path, + LogEntryReader logEntryReader ) throws IOException { this.fs = fs; @@ -201,9 +202,9 @@ else if ( entry instanceof LogEntryCommit && start != null ) PhysicalTransactionRepresentation transaction = new PhysicalTransactionRepresentation( commands ); transaction.setHeader( start.getAdditionalHeader(), start.getMasterId(), - start.getLocalId(), start.getTimeWritten(), - start.getLastCommittedTxWhenTransactionStarted(), - commit.getTimeWritten(), -1 ); + start.getLocalId(), start.getTimeWritten(), + start.getLastCommittedTxWhenTransactionStarted(), + commit.getTimeWritten(), -1 ); return new CommittedTransactionRepresentation( start, transaction, commit ); } else @@ -223,7 +224,7 @@ private static class LogFile implements Comparable long cap = Long.MAX_VALUE; LogFile( FileSystemAbstraction fs, File file, ByteBuffer buffer, - LogEntryReader logEntryReader ) throws IOException + LogEntryReader logEntryReader ) throws IOException { this.file = file; try ( StoreChannel channel = fs.open( file, "r" ) ) @@ -287,7 +288,7 @@ public int compareTo( LogFile that ) StringBuilder rangeString( StringBuilder target ) { return target.append( ']' ).append( header.lastCommittedTxId ) - .append( ", " ).append( lastTxId ).append( ']' ); + .append( ", " ).append( lastTxId ).append( ']' ); } } @@ -309,10 +310,11 @@ private IOCursor logEntryCursor( LogFile file, ByteBuffer buffer ) thr return logEntryCursor( logEntryReader, channel, file.header ); } - private static IOCursor logEntryCursor( LogEntryReader logEntryReader, + private static IOCursor logEntryCursor( + LogEntryReader logEntryReader, StoreChannel channel, LogHeader header ) throws IOException { - return new LogEntryCursor( logEntryReader, new ReadAheadLogChannel( + return new LogEntryCursor( logEntryReader, new ReadAheadPositionableReadableChannel( new PhysicalLogVersionedStoreChannel( channel, header.logVersion, header.logFormatVersion ), NO_MORE_CHANNELS ) ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/UpgradableDatabase.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/UpgradableDatabase.java index bb982a54154ae..6022cc7e4a4eb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/UpgradableDatabase.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/UpgradableDatabase.java @@ -34,7 +34,7 @@ import org.neo4j.kernel.impl.storemigration.legacystore.v22.Legacy22Store; import org.neo4j.kernel.impl.storemigration.legacystore.v23.Legacy23Store; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.kernel.recovery.LatestCheckPointFinder; @@ -140,7 +140,7 @@ private Result checkUpgradeableFor( File storeDirectory, String version ) } PhysicalLogFiles logFiles = new PhysicalLogFiles( storeDirectory, fs ); - LogEntryReader logEntryReader = + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); LatestCheckPointFinder latestCheckPointFinder = new LatestCheckPointFinder( logFiles, fs, logEntryReader ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReader.java index 821e488e0349c..b107b0b816a02 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReader.java @@ -30,8 +30,8 @@ import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogHeader; @@ -46,10 +46,10 @@ class LegacyLogEntryReader { private final FileSystemAbstraction fs; - private final Function> readerFactory; + private final Function> readerFactory; LegacyLogEntryReader( FileSystemAbstraction fs, - Function> readerFactory ) + Function> readerFactory ) { this.fs = fs; this.readerFactory = readerFactory; @@ -66,14 +66,14 @@ public Pair> openReadableChannel( File logFile ) t final StoreChannel rawChannel = fs.open( logFile, "r" ); final LogHeader header = readLogHeader( ByteBuffer.allocate( LOG_HEADER_SIZE ), rawChannel, false ); - LogEntryReader reader = readerFactory.apply( header ); + LogEntryReader reader = readerFactory.apply( header ); // this ensures that the last committed txId field in the header is initialized properly long lastCommittedTxId = Math.max( BASE_TX_ID, header.lastCommittedTxId ); final PhysicalLogVersionedStoreChannel channel = new PhysicalLogVersionedStoreChannel( rawChannel, header.logVersion, header.logFormatVersion ); - final ReadableVersionableLogChannel readableChannel = new ReadAheadLogChannel( channel, NO_MORE_CHANNELS ); + final VersionableReadableClosablePositionAwareChannel readableChannel = new ReadAheadPositionableReadableChannel( channel, NO_MORE_CHANNELS ); final IOCursor cursor = new LogEntrySortingCursor( reader, readableChannel ); return Pair.of( new LogHeader( CURRENT_LOG_VERSION, header.logVersion, lastCommittedTxId ), cursor ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursor.java index b3f03c530e217..af32e834ee1eb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursor.java @@ -26,7 +26,7 @@ import java.util.Map; import org.neo4j.cursor.IOCursor; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.IdentifiableLogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommit; @@ -34,16 +34,16 @@ class LogEntrySortingCursor implements IOCursor { - private final ReadableVersionableLogChannel channel; - private final LogEntryReader reader; + private final VersionableReadableClosablePositionAwareChannel channel; + private final LogEntryReader reader; // identifier -> log entry private final Map> idToEntries = new HashMap<>(); private LogEntry toReturn; private int idToFetchFrom = -1; - LogEntrySortingCursor( LogEntryReader reader, - ReadableVersionableLogChannel channel ) + LogEntrySortingCursor( LogEntryReader reader, + VersionableReadableClosablePositionAwareChannel channel ) { this.reader = reader; this.channel = channel; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/BaseCommandReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/BaseCommandReader.java index d5e560c1bcf1f..afd8fde938a84 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/BaseCommandReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/command/BaseCommandReader.java @@ -23,7 +23,8 @@ import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.PositionAwareChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReader; import org.neo4j.storageengine.api.ReadableChannel; @@ -56,7 +57,7 @@ public final Command read( ReadableChannel channel ) throws IOException * Reads the next {@link Command} from {@code channel}. * * @param commandType type of command to read, f.ex. node command, relationship command a.s.o. - * @param channel {@link ReadableLogChannel} to read from. + * @param channel {@link ReadableClosableChannel} to read from. * @return {@link Command} or {@code null} if end reached. * @throws IOException if channel throws exception. */ @@ -65,9 +66,9 @@ public final Command read( ReadableChannel channel ) throws IOException protected IOException unknownCommandType( byte commandType, ReadableChannel channel ) throws IOException { String message = "Unknown command type[" + commandType + "]"; - if ( channel instanceof ReadableLogChannel ) + if ( channel instanceof PositionAwareChannel ) { - ReadableLogChannel logChannel = (ReadableLogChannel) channel; + PositionAwareChannel logChannel = (PositionAwareChannel) channel; LogPositionMarker position = new LogPositionMarker(); logChannel.getCurrentPosition( position ); message += " near " + position.newPosition(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogEntryCursor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogEntryCursor.java index 731c3c966df1f..386321cb19efb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogEntryCursor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogEntryCursor.java @@ -27,11 +27,12 @@ public class LogEntryCursor implements IOCursor { - private final LogEntryReader logEntryReader; - private final ReadableLogChannel channel; + private final LogEntryReader logEntryReader; + private final ReadableClosablePositionAwareChannel channel; private LogEntry entry; - public LogEntryCursor( LogEntryReader logEntryReader, ReadableLogChannel channel ) + public LogEntryCursor( LogEntryReader logEntryReader, + ReadableClosablePositionAwareChannel channel ) { this.logEntryReader = logEntryReader; this.channel = channel; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFile.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFile.java index b1bb56c776f59..306a8038b4a4c 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFile.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFile.java @@ -29,7 +29,7 @@ public interface LogFile { interface LogFileVisitor { - boolean visit( LogPosition position, ReadableLogChannel channel ) throws IOException; + boolean visit( LogPosition position, ReadableClosablePositionAwareChannel channel ) throws IOException; } /** @@ -39,10 +39,10 @@ interface LogFileVisitor /** * @param position {@link LogPosition} to position the returned reader at. - * @return {@link ReadableLogChannel} capable of reading log data, starting from {@link LogPosition position}. + * @return {@link ReadableClosableChannel} capable of reading log data, starting from {@link LogPosition position}. * @throws IOException */ - ReadableLogChannel getReader( LogPosition position ) throws IOException; + VersionableReadableClosablePositionAwareChannel getReader( LogPosition position ) throws IOException; void accept( LogFileVisitor visitor, LogPosition startingFromPosition ) throws IOException; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFileRecoverer.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFileRecoverer.java index e2f18ec56b4aa..765eff536c102 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFileRecoverer.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/LogFileRecoverer.java @@ -29,10 +29,10 @@ public class LogFileRecoverer implements Visitor { - private final LogEntryReader logEntryReader; + private final LogEntryReader logEntryReader; private final CloseableVisitor visitor; - public LogFileRecoverer( LogEntryReader logEntryReader, + public LogFileRecoverer( LogEntryReader logEntryReader, CloseableVisitor visitor ) { this.logEntryReader = logEntryReader; @@ -42,9 +42,9 @@ public LogFileRecoverer( LogEntryReader logEntryReader, @Override public boolean visit( LogVersionedStoreChannel channel ) throws Exception { - final ReadableVersionableLogChannel recoveredDataChannel = new ReadAheadLogChannel( channel, NO_MORE_CHANNELS ); + final VersionableReadableClosablePositionAwareChannel recoveredDataChannel = new ReadAheadPositionableReadableChannel( channel, NO_MORE_CHANNELS ); - try ( final PhysicalTransactionCursor physicalTransactionCursor = + try ( final PhysicalTransactionCursor physicalTransactionCursor = new PhysicalTransactionCursor<>( recoveredDataChannel, logEntryReader ) ) { RecoverableTransaction recoverableTransaction = new RecoverableTransaction() diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFile.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFile.java index 43bb1b589e2c6..b1753f17a46f5 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFile.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFile.java @@ -187,11 +187,11 @@ public FlushablePositionAwareChannel getWriter() } @Override - public ReadableVersionableLogChannel getReader( LogPosition position ) throws IOException + public VersionableReadableClosablePositionAwareChannel getReader( LogPosition position ) throws IOException { PhysicalLogVersionedStoreChannel logChannel = openForVersion( logFiles, fileSystem, position.getLogVersion() ); logChannel.position( position.getByteOffset() ); - return new ReadAheadLogChannel( logChannel, readerLogVersionBridge ); + return new ReadAheadPositionableReadableChannel( logChannel, readerLogVersionBridge ); } public static PhysicalLogVersionedStoreChannel openForVersion( PhysicalLogFiles logFiles, @@ -241,7 +241,7 @@ public static PhysicalLogVersionedStoreChannel tryOpenForVersion( PhysicalLogFil @Override public void accept( LogFileVisitor visitor, LogPosition startingFromPosition ) throws IOException { - try ( ReadableVersionableLogChannel reader = getReader( startingFromPosition ) ) + try ( VersionableReadableClosablePositionAwareChannel reader = getReader( startingFromPosition ) ) { visitor.visit( startingFromPosition, reader ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogicalTransactionStore.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogicalTransactionStore.java index 333f7f086107f..2299a2b6afaa0 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogicalTransactionStore.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogicalTransactionStore.java @@ -39,10 +39,10 @@ public class PhysicalLogicalTransactionStore implements LogicalTransactionStore { private final LogFile logFile; private final TransactionMetadataCache transactionMetadataCache; - private final LogEntryReader logEntryReader; + private final LogEntryReader logEntryReader; public PhysicalLogicalTransactionStore( LogFile logFile, TransactionMetadataCache transactionMetadataCache, - LogEntryReader logEntryReader ) + LogEntryReader logEntryReader ) { this.logFile = logFile; this.transactionMetadataCache = transactionMetadataCache; @@ -61,7 +61,7 @@ public IOCursor getTransactions( final long if ( transactionMetadata != null ) { // we're good - ReadableLogChannel channel = logFile.getReader( transactionMetadata.getStartPosition() ); + VersionableReadableClosablePositionAwareChannel channel = logFile.getReader( transactionMetadata.getStartPosition() ); return new PhysicalTransactionCursor<>( channel, logEntryReader ); } @@ -125,18 +125,18 @@ public TransactionMetadata getMetadataFor( long transactionId ) throws IOExcepti public static class TransactionPositionLocator implements LogFile.LogFileVisitor { private final long startTransactionId; - private final LogEntryReader logEntryReader; + private final LogEntryReader logEntryReader; private LogEntryStart startEntryForFoundTransaction; public TransactionPositionLocator( long startTransactionId, - LogEntryReader logEntryReader ) + LogEntryReader logEntryReader ) { this.startTransactionId = startTransactionId; this.logEntryReader = logEntryReader; } @Override - public boolean visit( LogPosition position, ReadableLogChannel channel ) throws IOException + public boolean visit( LogPosition position, ReadableClosablePositionAwareChannel channel ) throws IOException { LogEntry logEntry; LogEntryStart startEntry = null; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalTransactionCursor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalTransactionCursor.java index fdd4527ef7266..cb536b3290386 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalTransactionCursor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/PhysicalTransactionCursor.java @@ -33,7 +33,7 @@ import org.neo4j.kernel.impl.transaction.log.entry.LogEntryStart; import org.neo4j.storageengine.api.StorageCommand; -public class PhysicalTransactionCursor +public class PhysicalTransactionCursor implements IOCursor { private final LogEntryCursor logEntryCursor; @@ -46,7 +46,7 @@ public PhysicalTransactionCursor( T channel, LogEntryReader entryReader ) thr { this.marker = new Marker<>( channel ); this.lastKnownGoodPosition = marker.currentPosition(); - this.logEntryCursor = new LogEntryCursor( (LogEntryReader) entryReader, channel ); + this.logEntryCursor = new LogEntryCursor( (LogEntryReader) entryReader, channel ); } protected List commandList() @@ -122,7 +122,7 @@ public long lastKnownGoodPosition() return lastKnownGoodPosition; } - private static class Marker + private static class Marker { private final LogPositionMarker marker = new LogPositionMarker(); private final T channel; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadAheadLogChannel.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadAheadPositionableReadableChannel.java similarity index 92% rename from community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadAheadLogChannel.java rename to community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadAheadPositionableReadableChannel.java index 4da69d7199183..81a393b53095d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadAheadLogChannel.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadAheadPositionableReadableChannel.java @@ -31,21 +31,22 @@ /** * Basically a sequence of {@link StoreChannel channels} seamlessly seen as one. */ -public class ReadAheadLogChannel implements ReadableVersionableLogChannel +public class ReadAheadPositionableReadableChannel implements VersionableReadableClosablePositionAwareChannel { private static final int DEFAULT_READ_AHEAD_SIZE = 1024 * 4; private final ByteBuffer aheadBuffer; private LogVersionedStoreChannel channel; +// private StoreChannel channel; private final LogVersionBridge bridge; private final int readAheadSize; - public ReadAheadLogChannel( LogVersionedStoreChannel startingChannel, LogVersionBridge bridge ) + public ReadAheadPositionableReadableChannel( LogVersionedStoreChannel startingChannel, LogVersionBridge bridge ) { this(startingChannel, bridge, DEFAULT_READ_AHEAD_SIZE); } - public ReadAheadLogChannel( LogVersionedStoreChannel startingChannel, LogVersionBridge bridge, int readAheadSize ) + public ReadAheadPositionableReadableChannel( LogVersionedStoreChannel startingChannel, LogVersionBridge bridge, int readAheadSize ) { this.channel = startingChannel; this.bridge = bridge; diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadOnlyTransactionStore.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadOnlyTransactionStore.java index 10e069af3df79..223e8417c3dcc 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadOnlyTransactionStore.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadOnlyTransactionStore.java @@ -51,7 +51,7 @@ public ReadOnlyTransactionStore( PageCache pageCache, FileSystemAbstraction fs, PhysicalLogFile logFile = life.add( new PhysicalLogFile( fs, logFiles, 0, transactionIdStore, new ReadOnlyLogVersionRepository( pageCache, fromPath ), monitors.newMonitor( PhysicalLogFile.Monitor.class ), transactionMetadataCache ) ); - LogEntryReader logEntryReader = + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); physicalStore = new PhysicalLogicalTransactionStore( logFile, transactionMetadataCache, logEntryReader ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableLogChannel.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableClosableChannel.java similarity index 90% rename from community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableLogChannel.java rename to community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableClosableChannel.java index 1858e11595c86..81380e6d508a7 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableLogChannel.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableClosableChannel.java @@ -22,6 +22,6 @@ import java.io.Closeable; import org.neo4j.storageengine.api.ReadableChannel; -public interface ReadableLogChannel extends ReadableChannel, PositionAwareChannel, Closeable +public interface ReadableClosableChannel extends ReadableChannel, Closeable { } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableVersionableLogChannel.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableClosablePositionAwareChannel.java similarity index 88% rename from community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableVersionableLogChannel.java rename to community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableClosablePositionAwareChannel.java index d75613306ca44..b07a6d85b1d17 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableVersionableLogChannel.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/ReadableClosablePositionAwareChannel.java @@ -19,6 +19,6 @@ */ package org.neo4j.kernel.impl.transaction.log; -public interface ReadableVersionableLogChannel extends ReadableLogChannel, VersionableLog +public interface ReadableClosablePositionAwareChannel extends ReadableClosableChannel, PositionAwareChannel { } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/VersionableReadableClosablePositionAwareChannel.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/VersionableReadableClosablePositionAwareChannel.java new file mode 100644 index 0000000000000..6557181762494 --- /dev/null +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/VersionableReadableClosablePositionAwareChannel.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2002-2016 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.kernel.impl.transaction.log; + +public interface VersionableReadableClosablePositionAwareChannel + extends VersionableLog, ReadableClosablePositionAwareChannel +{ +} diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParser.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParser.java index 6068513f85dd0..a3f2354a5d09a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParser.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParser.java @@ -22,15 +22,15 @@ import java.io.IOException; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReader; import org.neo4j.storageengine.api.CommandReaderFactory; /** - * Reads and parses the next {@link LogEntry} from {@link ReadableLogChannel}, given the {@link LogEntryVersion}. + * Reads and parses the next {@link LogEntry} from {@link ReadableClosableChannel}, given the {@link LogEntryVersion}. * * @param Specific type of {@link LogEntry} returned from - * {@link #parse(LogEntryVersion, ReadableLogChannel, LogPositionMarker, CommandReaderFactory)}. + * {@link #parse(LogEntryVersion, ReadableClosableChannel, LogPositionMarker, CommandReaderFactory)}. */ public interface LogEntryParser { @@ -38,7 +38,7 @@ public interface LogEntryParser * Parses the next {@link LogEntry} read from the {@code channel}. * * @param version {@link LogEntryVersion} this log entry is determined to be of. - * @param channel {@link ReadableLogChannel} to read the data from. + * @param channel {@link ReadableClosableChannel} to read the data from. * @param marker {@link LogPositionMarker} marking the position in the {@code channel} that is the * start of this entry. * @param commandReaderFactory {@link CommandReaderFactory} for retrieving a {@link CommandReader} @@ -46,7 +46,7 @@ public interface LogEntryParser * @return the next {@link LogEntry} read and parsed from the {@code channel}. * @throws IOException I/O error from channel or if data was read past the end of the channel. */ - T parse( LogEntryVersion version, ReadableLogChannel channel, + T parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReaderFactory ) throws IOException; /** diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV1_9.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV1_9.java index ff883e4d4b968..1a57178e936e0 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV1_9.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV1_9.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.StorageCommand; @@ -35,7 +35,7 @@ public enum LogEntryParsersV1_9 implements LogEntryParser EMPTY { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { return null; @@ -57,7 +57,7 @@ public boolean skip() TX_PREPARE { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { // we ignore this we do not this in the new log format, just parse data to be skipped in the @@ -84,7 +84,7 @@ public boolean skip() TX_START { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { LogPosition position = marker.newPosition(); @@ -122,7 +122,7 @@ public boolean skip() COMMAND { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { int identifier = channel.getInt(); @@ -148,7 +148,7 @@ public boolean skip() DONE { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -174,7 +174,7 @@ public boolean skip() TX_1P_COMMIT { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -200,7 +200,7 @@ public boolean skip() TX_2P_COMMIT { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_0.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_0.java index 69dfce8afacb0..0d07bbfaf590e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_0.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_0.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.StorageCommand; @@ -35,7 +35,7 @@ public enum LogEntryParsersV2_0 implements LogEntryParser EMPTY { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -58,7 +58,7 @@ public boolean skip() TX_PREPARE { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -86,7 +86,7 @@ public boolean skip() TX_START { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -127,7 +127,7 @@ public boolean skip() COMMAND { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -154,7 +154,7 @@ public boolean skip() DONE { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -180,7 +180,7 @@ public boolean skip() TX_1P_COMMIT { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { @@ -205,7 +205,7 @@ public boolean skip() TX_2P_COMMIT { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_1.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_1.java index 7d5f961a55721..b50dfc4a2991f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_1.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_1.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.StorageCommand; @@ -35,7 +35,7 @@ public enum LogEntryParsersV2_1 implements LogEntryParser EMPTY { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { return null; @@ -57,7 +57,7 @@ public boolean skip() TX_PREPARE { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { // we ignore this we do not this in the new log format, just parse data to be skipped in the @@ -84,7 +84,7 @@ public boolean skip() TX_START { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { LogPosition position = marker.newPosition(); @@ -124,7 +124,7 @@ public boolean skip() COMMAND { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { int identifier = channel.getInt(); @@ -150,7 +150,7 @@ public boolean skip() DONE { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { // we ignore this we do not this in the new log format, just parse data to be skipped in the @@ -175,7 +175,7 @@ public boolean skip() TX_1P_COMMIT { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { int identifier = channel.getInt(); @@ -199,7 +199,7 @@ public boolean skip() TX_2P_COMMIT { @Override - public IdentifiableLogEntry parse( LogEntryVersion version, ReadableLogChannel channel, + public IdentifiableLogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, CommandReaderFactory commandReader ) throws IOException { int identifier = channel.getInt(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2.java index e51d772e317ef..8b97afd237aab 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.StorageCommand; @@ -33,8 +33,8 @@ public enum LogEntryParsersV2_2 implements LogEntryParser EMPTY { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { return null; @@ -56,8 +56,8 @@ public boolean skip() TX_START { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { LogPosition position = marker.newPosition(); int masterId = channel.getInt(); @@ -88,8 +88,8 @@ public boolean skip() COMMAND { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { StorageCommand command = commandReader.byVersion( version.byteCode(), version.logHeaderFormatVersion() ).read( channel ); @@ -112,8 +112,8 @@ public boolean skip() TX_1P_COMMIT { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { long txId = channel.getLong(); long timeWritten = channel.getLong(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2_4.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2_4.java index 440d1ea2ce170..9e3287a9f5dfa 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2_4.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_2_4.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.StorageCommand; @@ -33,8 +33,8 @@ public enum LogEntryParsersV2_2_4 implements LogEntryParser EMPTY { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { return null; @@ -56,8 +56,8 @@ public boolean skip() TX_START { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { LogPosition position = marker.newPosition(); int masterId = channel.getInt(); @@ -88,8 +88,8 @@ public boolean skip() COMMAND { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { StorageCommand command = commandReader.byVersion( version.byteCode(), version.logHeaderFormatVersion() ).read( channel ); @@ -112,8 +112,8 @@ public boolean skip() TX_1P_COMMIT { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { long txId = channel.getLong(); long timeWritten = channel.getLong(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_3.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_3.java index 8998a6763519b..a3749fd3f7660 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_3.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParsersV2_3.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.StorageCommand; @@ -33,8 +33,8 @@ public enum LogEntryParsersV2_3 implements LogEntryParser EMPTY { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { return null; @@ -56,8 +56,8 @@ public boolean skip() TX_START { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { LogPosition position = marker.newPosition(); int masterId = channel.getInt(); @@ -88,8 +88,8 @@ public boolean skip() COMMAND { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { StorageCommand command = commandReader.byVersion( version.byteCode(), version.logHeaderFormatVersion() ).read( channel ); @@ -112,8 +112,8 @@ public boolean skip() TX_1P_COMMIT { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { long txId = channel.getLong(); long timeWritten = channel.getLong(); @@ -135,8 +135,8 @@ public boolean skip() CHECK_POINT { @Override - public LogEntry parse( LogEntryVersion version, ReadableLogChannel channel, LogPositionMarker marker, - CommandReaderFactory commandReader ) throws IOException + public LogEntry parse( LogEntryVersion version, ReadableClosableChannel channel, LogPositionMarker marker, + CommandReaderFactory commandReader ) throws IOException { long logVersion = channel.getLong(); long byteOffset = channel.getLong(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryReader.java index 60db0c203adba..c631b7c52677e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryReader.java @@ -21,20 +21,21 @@ import java.io.IOException; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; /** - * Reads {@link LogEntry} instances from a {@link ReadableLogChannel source}. Instances are expected to be + * Reads {@link LogEntry} instances from a {@link ReadableClosableChannel source}. Instances are expected to be * immutable and handle concurrent calls from multiple threads. * * @param source to read bytes from. */ -public interface LogEntryReader +public interface LogEntryReader { /** * Reads the next {@link LogEntry} from the given source. * - * @param source {@link ReadableLogChannel} to read from. + * @param source {@link ReadableClosableChannel} to read from. * @return the read {@link LogEntry} or {@code null} if there were no more complete entries in the given source. * @throws IOException if source throws exception. */ diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReader.java index 2907310108415..fc9fb2d68169a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReader.java @@ -27,13 +27,13 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.transaction.log.IllegalLogFormatException; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; import static org.neo4j.kernel.impl.transaction.log.entry.LogHeader.LOG_HEADER_SIZE; public class LogHeaderReader { - public static LogHeader readLogHeader( ReadableLogChannel channel ) throws IOException + public static LogHeader readLogHeader( ReadableClosableChannel channel ) throws IOException { long encodedLogVersions = channel.getLong(); byte logFormatVersion = decodeLogFormatVersion( encodedLogVersions ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReader.java index 40f4746dde27a..25e28f774270e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReader.java @@ -23,7 +23,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.storageengine.api.CommandReaderFactory; import org.neo4j.storageengine.api.ReadPastEndException; @@ -41,7 +41,7 @@ * * Read all about it at {@link LogEntryVersion}. */ -public class VersionAwareLogEntryReader implements LogEntryReader +public class VersionAwareLogEntryReader implements LogEntryReader { // Exists for backwards compatibility until we drop support for one of the two versions (1.9 and 2.0) // that doesn't have log entry version in its format. diff --git a/community/kernel/src/main/java/org/neo4j/kernel/recovery/LatestCheckPointFinder.java b/community/kernel/src/main/java/org/neo4j/kernel/recovery/LatestCheckPointFinder.java index 3bf72509c9e02..7670c96bd8db9 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/recovery/LatestCheckPointFinder.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/recovery/LatestCheckPointFinder.java @@ -26,8 +26,9 @@ import org.neo4j.kernel.impl.transaction.log.LogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.CheckPoint; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; @@ -40,10 +41,10 @@ public class LatestCheckPointFinder { private final PhysicalLogFiles logFiles; private final FileSystemAbstraction fileSystem; - private final LogEntryReader logEntryReader; + private final LogEntryReader logEntryReader; public LatestCheckPointFinder( PhysicalLogFiles logFiles, FileSystemAbstraction fileSystem, - LogEntryReader logEntryReader ) + LogEntryReader logEntryReader ) { this.logFiles = logFiles; this.fileSystem = fileSystem; @@ -67,7 +68,8 @@ public LatestCheckPoint find( long fromVersionBackwards ) throws IOException oldestVersionFound = version; CheckPoint latestCheckPoint = null; - ReadableLogChannel recoveredDataChannel = new ReadAheadLogChannel( channel, NO_MORE_CHANNELS ); + VersionableReadableClosablePositionAwareChannel recoveredDataChannel = + new ReadAheadPositionableReadableChannel( channel, NO_MORE_CHANNELS ); try ( LogEntryCursor cursor = new LogEntryCursor( logEntryReader, recoveredDataChannel ) ) { diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/InputEntityReader.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/InputEntityReader.java index e43316f08f6dc..ff22a095b5bf8 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/InputEntityReader.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/InputEntityReader.java @@ -28,8 +28,9 @@ import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.unsafe.impl.batchimport.InputIterator; import static org.neo4j.kernel.impl.transaction.log.LogVersionBridge.NO_MORE_CHANNELS; @@ -45,7 +46,7 @@ abstract class InputEntityReader extends PrefetchingIterator implements InputIterator { - protected final ReadableLogChannel channel; + protected final VersionableReadableClosablePositionAwareChannel channel; private final LogPositionMarker positionMarker = new LogPositionMarker(); private int lineNumber; private final Group[] previousGroups; @@ -62,15 +63,15 @@ abstract class InputEntityReader extends Prefetching readHeader( header ); } - private ReadAheadLogChannel reader( StoreChannel channel, int bufferSize ) throws IOException + private ReadAheadPositionableReadableChannel reader( StoreChannel channel, int bufferSize ) throws IOException { - return new ReadAheadLogChannel( + return new ReadAheadPositionableReadableChannel( new PhysicalLogVersionedStoreChannel( channel, 0, (byte) 0 ), NO_MORE_CHANNELS, bufferSize ); } private void readHeader( StoreChannel header ) throws IOException { - try ( ReadableLogChannel reader = reader( header, (int) ByteUnit.kibiBytes( 8 ) ) ) + try ( ReadableClosableChannel reader = reader( header, (int) ByteUnit.kibiBytes( 8 ) ) ) { for ( short id = 0; reader.get() == TOKEN; id++ ) { diff --git a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/ValueType.java b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/ValueType.java index eac1b5d1d9dcb..554149605bc15 100644 --- a/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/ValueType.java +++ b/community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/input/ValueType.java @@ -26,7 +26,7 @@ import org.neo4j.helpers.UTF8; import org.neo4j.kernel.impl.transaction.log.FlushableChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; /** * Utility for reading and writing property values from/into a channel. Supports neo4j property types, @@ -43,7 +43,7 @@ public abstract class ValueType add( new ValueType( Boolean.TYPE, Boolean.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.get() == 0 ? Boolean.FALSE : Boolean.TRUE; } @@ -57,7 +57,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Byte.TYPE, Byte.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.get(); } @@ -71,7 +71,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Short.TYPE, Short.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.getShort(); } @@ -85,7 +85,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Character.TYPE, Character.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return (char)from.getInt(); } @@ -99,7 +99,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Integer.TYPE, Integer.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.getInt(); } @@ -113,7 +113,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Long.TYPE, Long.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.getLong(); } @@ -127,7 +127,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Float.TYPE, Float.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.getFloat(); } @@ -141,7 +141,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( stringType = new ValueType( String.class ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { int length = from.getInt(); byte[] bytes = new byte[length]; // TODO wasteful @@ -159,7 +159,7 @@ public void write( Object value, FlushableChannel into ) throws IOException add( new ValueType( Double.class, Double.TYPE ) { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { return from.getDouble(); } @@ -174,7 +174,7 @@ public void write( Object value, FlushableChannel into ) throws IOException private static final ValueType arrayType = new ValueType() { @Override - public Object read( ReadableLogChannel from ) throws IOException + public Object read( ReadableClosableChannel from ) throws IOException { ValueType componentType = typeOf( from.get() ); int length = from.getInt(); @@ -261,7 +261,7 @@ public final byte id() return id; } - public abstract Object read( ReadableLogChannel from ) throws IOException; + public abstract Object read( ReadableClosableChannel from ) throws IOException; public abstract void write( Object value, FlushableChannel into ) throws IOException; } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/RecoveryTest.java b/community/kernel/src/test/java/org/neo4j/kernel/RecoveryTest.java index 7cdded3eb9d60..f447cf8ae5458 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/RecoveryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/RecoveryTest.java @@ -44,11 +44,11 @@ import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PositionAwarePhysicalFlushableChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.transaction.log.TransactionMetadataCache; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.CheckPoint; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; @@ -139,7 +139,7 @@ public boolean visit( Pair> pair ) th try { StoreFlusher flusher = mock( StoreFlusher.class ); - final LogEntryReader reader = new VersionAwareLogEntryReader<>( + final LogEntryReader reader = new VersionAwareLogEntryReader<>( LogEntryVersion.CURRENT.byteCode(), new RecordStorageCommandReaderFactory() ); LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); @@ -154,7 +154,7 @@ public Visitor getRecoverer() @Override public boolean visit( LogVersionedStoreChannel element ) throws IOException { - try ( ReadableVersionableLogChannel channel = new ReadAheadLogChannel( element, + try ( VersionableReadableClosablePositionAwareChannel channel = new ReadAheadPositionableReadableChannel( element, NO_MORE_CHANNELS ) ) { assertEquals( lastCommittedTxStartEntry, reader.readLogEntry( channel ) ); @@ -228,7 +228,7 @@ public boolean visit( Pair> pair ) th try { StoreFlusher flusher = mock( StoreFlusher.class ); - final LogEntryReader reader = new VersionAwareLogEntryReader<>( + final LogEntryReader reader = new VersionAwareLogEntryReader<>( LogEntryVersion.CURRENT.byteCode(), new RecordStorageCommandReaderFactory() ); LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerIntegrationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerIntegrationTest.java index f201ac05a893f..95b0cd28433ab 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerIntegrationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerIntegrationTest.java @@ -30,11 +30,11 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.store.counts.keys.CountsKey; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.LogVersionBridge; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PositionAwarePhysicalFlushableChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogHeader; import static org.neo4j.kernel.impl.store.countStore.CountsSnapshotDeserializer.deserialize; @@ -50,7 +50,7 @@ public class InMemoryCountsStoreCountsSnapshotSerializerIntegrationTest public void smallWorkloadOnInMemoryLogTest() throws IOException { //GIVEN - InMemoryLogChannel tempChannel = new InMemoryLogChannel(); + InMemoryClosableChannel tempChannel = new InMemoryClosableChannel(); Map map = CountsStoreMapGenerator.simpleCountStoreMap( 1 ); CountsSnapshot countsSnapshot = new CountsSnapshot( 1, map ); @@ -101,10 +101,10 @@ public void largeWorkloadOnPhysicalLogTest() throws IOException physicalLogVersionedStoreChannel.position( 0 ); - try ( ReadAheadLogChannel readAheadLogChannel = new ReadAheadLogChannel( physicalLogVersionedStoreChannel, + try ( ReadAheadPositionableReadableChannel readAheadChannel = new ReadAheadPositionableReadableChannel( physicalLogVersionedStoreChannel, LogVersionBridge.NO_MORE_CHANNELS ) ) { - recovered = deserialize( readAheadLogChannel ); + recovered = deserialize( readAheadChannel ); } //THEN diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerTest.java index 8ad1f01b2804f..c03f9253add3d 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreCountsSnapshotSerializerTest.java @@ -32,7 +32,7 @@ import org.neo4j.kernel.impl.store.counts.keys.CountsKey; import org.neo4j.kernel.impl.store.counts.keys.CountsKeyFactory; import org.neo4j.kernel.impl.store.counts.keys.CountsKeyType; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.neo4j.kernel.impl.store.countStore.CountsSnapshotSerializer.serialize; import static org.neo4j.kernel.impl.store.counts.keys.CountsKeyFactory.indexSampleKey; @@ -47,7 +47,7 @@ public class InMemoryCountsStoreCountsSnapshotSerializerTest { - InMemoryLogChannel logChannel; + InMemoryClosableChannel logChannel; CountsSnapshot countsSnapshot; ByteBuffer expectedBytes; ByteBuffer serializedBytes; @@ -55,7 +55,7 @@ public class InMemoryCountsStoreCountsSnapshotSerializerTest @Before public void setup() throws IOException { - logChannel = new InMemoryLogChannel(); + logChannel = new InMemoryClosableChannel(); countsSnapshot = new CountsSnapshot( 1, new ConcurrentHashMap<>() ); } @@ -237,7 +237,7 @@ private void initializeBuffers( int serializedLength ) writeExpectedCountStoreSize( expectedBytes, 1 ); } - private void writeSimpleHeader( InMemoryLogChannel logChannel ) throws IOException + private void writeSimpleHeader( InMemoryClosableChannel logChannel ) throws IOException { logChannel.putLong( 1 ); logChannel.putInt( 1 ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreSnapshotDeserializerTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreSnapshotDeserializerTest.java index 49003b094664a..bd869693fe8b0 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreSnapshotDeserializerTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/countStore/InMemoryCountsStoreSnapshotDeserializerTest.java @@ -35,7 +35,7 @@ import org.neo4j.kernel.impl.store.counts.keys.IndexStatisticsKey; import org.neo4j.kernel.impl.store.counts.keys.NodeKey; import org.neo4j.kernel.impl.store.counts.keys.RelationshipKey; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @@ -51,7 +51,7 @@ public class InMemoryCountsStoreSnapshotDeserializerTest { - InMemoryLogChannel logChannel; + InMemoryClosableChannel logChannel; CountsSnapshot countsSnapshot; ByteBuffer expectedBytes; ByteBuffer serializedBytes; @@ -59,7 +59,7 @@ public class InMemoryCountsStoreSnapshotDeserializerTest @Before public void setup() throws IOException { - logChannel = new InMemoryLogChannel(); + logChannel = new InMemoryClosableChannel(); countsSnapshot = new CountsSnapshot( 1, new ConcurrentHashMap<>() ); } @@ -74,7 +74,7 @@ public void correctlyDeserializeTxId() throws IOException { //GIVEN serializedBytes = ByteBuffer.allocate( 1000 ); - InMemoryLogChannel logChannel = new InMemoryLogChannel( serializedBytes.array() ); + InMemoryClosableChannel logChannel = new InMemoryClosableChannel( serializedBytes.array() ); logChannel.putLong( 72 ); logChannel.putInt( 0 ); @@ -96,7 +96,7 @@ public void correctlyDeserializeTxIdAndMapSize() throws IOException updates.put( CountsKeyFactory.nodeKey( 3 ), new long[]{1} ); countStore.updateAll( 1, updates ); serializedBytes = ByteBuffer.allocate( 1000 ); - InMemoryLogChannel logChannel = new InMemoryLogChannel( serializedBytes.array() ); + InMemoryClosableChannel logChannel = new InMemoryClosableChannel( serializedBytes.array() ); serialize( logChannel, countStore.snapshot( 1 ) ); //WHEN @@ -113,7 +113,7 @@ public void correctlyDeserializeEntityNode() throws IOException { //GIVEN serializedBytes = ByteBuffer.allocate( 1000 ); - InMemoryLogChannel logChannel = new InMemoryLogChannel( serializedBytes.array() ); + InMemoryClosableChannel logChannel = new InMemoryClosableChannel( serializedBytes.array() ); writeSimpleHeader( logChannel ); logChannel.put( ENTITY_NODE.code ); logChannel.putInt( 1 ); @@ -134,7 +134,7 @@ public void correctlyDeserializeEntityRelationship() throws IOException { //GIVEN serializedBytes = ByteBuffer.allocate( 1000 ); - InMemoryLogChannel logChannel = new InMemoryLogChannel( serializedBytes.array() ); + InMemoryClosableChannel logChannel = new InMemoryClosableChannel( serializedBytes.array() ); writeSimpleHeader( logChannel ); logChannel.put( ENTITY_RELATIONSHIP.code ); logChannel.putInt( 1 ); @@ -156,7 +156,7 @@ public void correctlyDeserializeIndexSample() throws IOException { //GIVEN serializedBytes = ByteBuffer.allocate( 1000 ); - InMemoryLogChannel logChannel = new InMemoryLogChannel( serializedBytes.array() ); + InMemoryClosableChannel logChannel = new InMemoryClosableChannel( serializedBytes.array() ); writeSimpleHeader( logChannel ); logChannel.put( INDEX_SAMPLE.code ); logChannel.putInt( 1 ); @@ -178,7 +178,7 @@ public void correctlyDeserializeIndexStatistics() throws IOException { //GIVEN serializedBytes = ByteBuffer.allocate( 1000 ); - InMemoryLogChannel logChannel = new InMemoryLogChannel( serializedBytes.array() ); + InMemoryClosableChannel logChannel = new InMemoryClosableChannel( serializedBytes.array() ); writeSimpleHeader( logChannel ); logChannel.put( INDEX_STATISTICS.code ); logChannel.putInt( 1 ); @@ -203,7 +203,7 @@ private void initializeBuffers( int serializedLength ) writeExpectedCountStoreSize( expectedBytes, 1 ); } - private void writeSimpleHeader( InMemoryLogChannel logChannel ) throws IOException + private void writeSimpleHeader( InMemoryClosableChannel logChannel ) throws IOException { logChannel.putLong( 1 ); logChannel.putInt( 1 ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReaderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReaderTest.java index b7838657922ce..3813585dd8705 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReaderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LegacyLogEntryReaderTest.java @@ -32,7 +32,7 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.IdentifiableLogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; @@ -85,13 +85,13 @@ public void shouldReadTheLogHeaderAndSetCurrentVersionAndABaseTxIdIfNegative() t public void shouldReturnNoEntriesWhenTheChannelContainsNothing() throws IOException { // given - final LogEntryReader logEntryReader = mock( LogEntryReader.class ); - when( logEntryReader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( null ); + final LogEntryReader logEntryReader = mock( LogEntryReader.class ); + when( logEntryReader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( null ); final LegacyLogEntryReader reader = new LegacyLogEntryReader( fs, - new Function>() + new Function>() { @Override - public LogEntryReader apply( LogHeader from ) throws RuntimeException + public LogEntryReader apply( LogHeader from ) throws RuntimeException { return logEntryReader; } @@ -116,8 +116,8 @@ public void shouldReadTheEntries() throws IOException final LogEntry command = new LogEntryCommand( new Command.NodeCommand( record, record ) ); final LogEntry commit = new OnePhaseCommit( 42, 43 ); - final LogEntryReader logEntryReader = mock( LogEntryReader.class ); - when( logEntryReader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + final LogEntryReader logEntryReader = mock( LogEntryReader.class ); + when( logEntryReader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( new IdentifiableLogEntry( start, 1 ), new IdentifiableLogEntry( command, 1 ), new IdentifiableLogEntry( commit, 1 ), diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursorTest.java index 3238921f1e329..ce0eb263a5eb6 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/storemigration/legacylogs/LogEntrySortingCursorTest.java @@ -28,7 +28,7 @@ import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.IdentifiableLogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; @@ -47,9 +47,9 @@ public class LogEntrySortingCursorTest { private static final Random random = new Random( 42l ); - private final ReadableVersionableLogChannel channel = mock( ReadableVersionableLogChannel.class ); + private final VersionableReadableClosablePositionAwareChannel channel = mock( VersionableReadableClosablePositionAwareChannel.class ); @SuppressWarnings("unchecked") - private final LogEntryReader reader = mock( LogEntryReader.class ); + private final LogEntryReader reader = mock( LogEntryReader.class ); @Test public void shouldDoNothingIfTheListIsOrdered() throws IOException diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/LogMatchers.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/LogMatchers.java index 21af2e64720b6..02de76e6503ed 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/LogMatchers.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/LogMatchers.java @@ -164,6 +164,7 @@ public void describeTo( Description description ) } }; } + public static Matcher checkPoint( final LogPosition position ) { return new TypeSafeMatcher() @@ -171,7 +172,7 @@ public static Matcher checkPoint( final LogPosition position @Override public boolean matchesSafely( CheckPoint cp ) { - return cp != null && position.equals( cp.getLogPosition() ); + return cp != null && position.equals( cp.getLogPosition() ); } @Override @@ -183,7 +184,7 @@ public void describeTo( Description description ) } public static Matcher commandEntry( final long key, - final Class commandClass ) + final Class commandClass ) { return new TypeSafeMatcher() { @@ -197,7 +198,7 @@ public boolean matchesSafely( LogEntryCommand commandEntry ) Command command = (Command) commandEntry.getXaCommand(); return command.getKey() == key && - command.getClass().equals( commandClass ); + command.getClass().equals( commandClass ); } @Override diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PhysicalTransactionCursorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PhysicalTransactionCursorTest.java index f88c48d5c5927..49d9e3c51cf64 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PhysicalTransactionCursorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PhysicalTransactionCursorTest.java @@ -29,7 +29,7 @@ import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionCursor; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.CheckPoint; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; @@ -51,8 +51,8 @@ public class PhysicalTransactionCursorTest { - private final ReadableVersionableLogChannel channel = mock( ReadableVersionableLogChannel.class, RETURNS_MOCKS ); - private final LogEntryReader entryReader = mock( LogEntryReader.class ); + private final VersionableReadableClosablePositionAwareChannel channel = mock( VersionableReadableClosablePositionAwareChannel.class, RETURNS_MOCKS ); + private final LogEntryReader entryReader = mock( LogEntryReader.class ); private static final LogEntry NULL_ENTRY = null; private static final CheckPoint A_CHECK_POINT_ENTRY = new CheckPoint( LogPosition.UNSPECIFIED ); @@ -60,7 +60,7 @@ public class PhysicalTransactionCursorTest private static final LogEntryCommit A_COMMIT_ENTRY = new OnePhaseCommit( 42, 0 ); private static final LogEntryCommand A_COMMAND_ENTRY = new LogEntryCommand( new Command.NodeCommand( new NodeRecord( 42 ), new NodeRecord( 42 ) ) ); - private PhysicalTransactionCursor cursor; + private PhysicalTransactionCursor cursor; @Before public void setup() throws IOException diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/ReadAheadLogChannelTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/ReadAheadChannelTest.java similarity index 93% rename from community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/ReadAheadLogChannelTest.java rename to community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/ReadAheadChannelTest.java index bb40ab6d13893..f89f6ba0d97d7 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/ReadAheadLogChannelTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/ReadAheadChannelTest.java @@ -33,7 +33,7 @@ import org.neo4j.kernel.impl.transaction.log.LogVersionBridge; import org.neo4j.kernel.impl.transaction.log.LogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; import org.neo4j.test.TargetDirectory; import static org.junit.Assert.assertArrayEquals; @@ -41,7 +41,7 @@ import static org.neo4j.kernel.impl.transaction.log.LogVersionBridge.NO_MORE_CHANNELS; -public class ReadAheadLogChannelTest +public class ReadAheadChannelTest { @Test public void shouldReadFromSingleChannel() throws Exception @@ -74,7 +74,7 @@ public boolean visit( ByteBuffer element ) throws IOException StoreChannel storeChannel = fs.open( file, "r" ); PhysicalLogVersionedStoreChannel versionedStoreChannel = new PhysicalLogVersionedStoreChannel( storeChannel, -1 /* ignored */, (byte) -1 /* ignored */ ); - try ( ReadAheadLogChannel channel = new ReadAheadLogChannel( versionedStoreChannel, NO_MORE_CHANNELS, 16 ) ) + try ( ReadAheadPositionableReadableChannel channel = new ReadAheadPositionableReadableChannel( versionedStoreChannel, NO_MORE_CHANNELS, 16 ) ) { // THEN assertEquals( byteValue, channel.get() ); @@ -122,7 +122,7 @@ public boolean visit( ByteBuffer element ) throws IOException StoreChannel storeChannel = fs.open( file( 0 ), "r" ); PhysicalLogVersionedStoreChannel versionedStoreChannel = new PhysicalLogVersionedStoreChannel( storeChannel, -1 /* ignored */, (byte) -1 /* ignored */ ); - try ( ReadAheadLogChannel channel = new ReadAheadLogChannel( versionedStoreChannel, new LogVersionBridge() + try ( ReadAheadPositionableReadableChannel channel = new ReadAheadPositionableReadableChannel( versionedStoreChannel, new LogVersionBridge() { private boolean returned = false; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_1Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_1Test.java index 24b1ad2c02a02..01ae02c8be480 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_1Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_1Test.java @@ -27,7 +27,7 @@ import org.neo4j.kernel.impl.store.record.PropertyBlock; import org.neo4j.kernel.impl.store.record.PropertyRecord; import org.neo4j.kernel.impl.transaction.command.Command.PropertyCommand; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @@ -42,7 +42,7 @@ public void shouldReadPropertyCommandWithDeletedDynamicRecords() throws Exceptio { // GIVEN PhysicalLogCommandReaderV2_1 reader = new PhysicalLogCommandReaderV2_1(); - InMemoryLogChannel data = new InMemoryLogChannel(); + InMemoryClosableChannel data = new InMemoryClosableChannel(); long id = 5; int keyId = 6; byte[] data1 = new byte[] {1, 2, 3, 4, 5}; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_2_4Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_2_4Test.java index 2e0561e6735f1..0d74d49120d08 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_2_4Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV2_2_4Test.java @@ -26,7 +26,7 @@ import org.neo4j.kernel.impl.index.IndexCommand.RemoveCommand; import org.neo4j.kernel.impl.index.IndexDefineCommand; import org.neo4j.kernel.impl.index.IndexEntityType; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -38,7 +38,7 @@ public class PhysicalLogCommandReaderV2_2_4Test public void shouldReadNoKeyIdAsMinusOne() throws Exception { // GIVEN - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); IndexDefineCommand definitions = new IndexDefineCommand(); int indexNameId = 10; definitions.init( diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV3_0Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV3_0Test.java index fd48b69674da3..2518cf4934385 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV3_0Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogCommandReaderV3_0Test.java @@ -25,7 +25,7 @@ import org.neo4j.kernel.impl.store.record.NeoStoreRecord; import org.neo4j.kernel.impl.store.record.RelationshipGroupRecord; import org.neo4j.kernel.impl.store.record.RelationshipRecord; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.storageengine.api.CommandReader; import static org.junit.Assert.assertEquals; @@ -37,7 +37,7 @@ public class PhysicalLogCommandReaderV3_0Test public void shouldReadRelationshipCommand() throws Throwable { // Given - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); RelationshipRecord before = new RelationshipRecord( 42, -1, -1, -1 ); RelationshipRecord after = new RelationshipRecord( 42, true, 1, 2, 3, 4, 5, 6, 7, true, true ); new Command.RelationshipCommand( before, after ).serialize( channel ); @@ -58,7 +58,7 @@ public void shouldReadRelationshipCommand() throws Throwable public void shouldReadRelationshipGroupCommand() throws Throwable { // Given - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); RelationshipGroupRecord before = new RelationshipGroupRecord( 42, 3 ); RelationshipGroupRecord after = new RelationshipGroupRecord( 42, 3, 4, 5, 6, 7, 8, true ); after.setCreated(); @@ -81,7 +81,7 @@ public void shouldReadRelationshipGroupCommand() throws Throwable public void shouldReadNeoStoreCommand() throws Throwable { // Given - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); NeoStoreRecord before = new NeoStoreRecord(); NeoStoreRecord after = new NeoStoreRecord(); after.setNextProp( 42 ); @@ -104,7 +104,7 @@ public void shouldReadNeoStoreCommand() throws Throwable public void shouldReadSomeCommands() throws Exception { // GIVEN - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); Commands.createNode( 0 ).serialize( channel ); Commands.createNode( 1 ).serialize( channel ); Commands.createRelationshipTypeToken( 0, 0 ).serialize( channel ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogNeoCommandReaderV2Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogNeoCommandReaderV2Test.java index c1013b33bb74e..96dbf2cd09042 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogNeoCommandReaderV2Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/command/PhysicalLogNeoCommandReaderV2Test.java @@ -22,7 +22,7 @@ import org.junit.Test; import org.neo4j.kernel.impl.index.IndexCommand.AddRelationshipCommand; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.junit.Assert.assertEquals; @@ -41,7 +41,7 @@ public void shouldReadIndexCommandHeaderCorrectly() throws Exception // GIVEN PhysicalLogCommandReaderV2_2_4 reader = new PhysicalLogCommandReaderV2_2_4(); - InMemoryLogChannel data = new InMemoryLogChannel(); + InMemoryClosableChannel data = new InMemoryClosableChannel(); AddRelationshipCommand command = new AddRelationshipCommand(); byte indexNameId = (byte)12; long entityId = 123; @@ -77,7 +77,7 @@ public void shouldProperlyMaskIndexIdFieldInIndexHeader() throws Exception // GIVEN PhysicalLogCommandReaderV2_2_4 reader = new PhysicalLogCommandReaderV2_2_4(); - InMemoryLogChannel data = new InMemoryLogChannel(); + InMemoryClosableChannel data = new InMemoryClosableChannel(); // Here we take advantage of the fact that all index commands have the same header written out AddRelationshipCommand command = new AddRelationshipCommand(); long entityId = 123; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderConcurrencyTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderConcurrencyTest.java index 38131220d04ad..0535e0af39eee 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderConcurrencyTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderConcurrencyTest.java @@ -92,7 +92,7 @@ public static void tearDownExecutor() @Before public void setUp() { - class Channel extends InMemoryLogChannel implements Flushable + class Channel extends InMemoryClosableChannel implements Flushable { @Override public Flushable prepareForFlush() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderTest.java index 8a25d1b59ada6..3de257942b433 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/BatchingTransactionAppenderTest.java @@ -77,7 +77,7 @@ public class BatchingTransactionAppenderTest @Rule public final LifeRule life = new LifeRule( true ); - private final InMemoryVersionableLogChannel channel = new InMemoryVersionableLogChannel(); + private final InMemoryVersionableReadableClosablePositionAwareChannel channel = new InMemoryVersionableReadableClosablePositionAwareChannel(); private final LogAppendEvent logAppendEvent = LogAppendEvent.NULL; private final DatabaseHealth databaseHealth = mock( DatabaseHealth.class ); private final LogFile logFile = mock( LogFile.class ); @@ -101,9 +101,9 @@ public void shouldAppendSingleTransaction() throws Exception appender.append( new TransactionToApply( transaction ), logAppendEvent ); // THEN - final LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( + final LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); - try ( PhysicalTransactionCursor reader = + try ( PhysicalTransactionCursor reader = new PhysicalTransactionCursor<>( channel, logEntryReader ) ) { reader.next(); @@ -172,9 +172,9 @@ public void shouldAppendCommittedTransactions() throws Exception logAppendEvent ); // THEN - LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); - try ( PhysicalTransactionCursor reader = + try ( PhysicalTransactionCursor reader = new PhysicalTransactionCursor<>( channel, logEntryReader ) ) { reader.next(); @@ -192,7 +192,7 @@ public void shouldAppendCommittedTransactions() throws Exception public void shouldNotAppendCommittedTransactionsWhenTooFarAhead() throws Exception { // GIVEN - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); when( logFile.getWriter() ).thenReturn( channel ); TransactionAppender appender = life.add( new BatchingTransactionAppender( logFile, NO_ROTATION, positionCache, transactionIdStore, BYPASS, databaseHealth ) ); @@ -232,7 +232,7 @@ public void shouldNotCallTransactionClosedOnFailedAppendedTransaction() throws E // GIVEN long txId = 3; String failureMessage = "Forces a failure"; - FlushablePositionAwareChannel channel = spy( new InMemoryLogChannel() ); + FlushablePositionAwareChannel channel = spy( new InMemoryClosableChannel() ); IOException failure = new IOException( failureMessage ); when( channel.putInt( anyInt() ) ).thenThrow( failure ); when( logFile.getWriter() ).thenReturn( channel ); @@ -265,7 +265,7 @@ public void shouldNotCallTransactionClosedOnFailedForceLogToDisk() throws Except // GIVEN long txId = 3; String failureMessage = "Forces a failure"; - FlushablePositionAwareChannel channel = spy( new InMemoryLogChannel() ); + FlushablePositionAwareChannel channel = spy( new InMemoryClosableChannel() ); IOException failure = new IOException( failureMessage ); final Flushable flushable = mock( Flushable.class ); doAnswer( new Answer() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryLogChannel.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryClosableChannel.java similarity index 85% rename from community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryLogChannel.java rename to community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryClosableChannel.java index d2539725b907c..d593e02ea4bd9 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryLogChannel.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryClosableChannel.java @@ -27,26 +27,20 @@ import org.neo4j.io.fs.StoreChannel; import org.neo4j.storageengine.api.ReadPastEndException; -public class InMemoryLogChannel implements ReadableLogChannel, FlushablePositionAwareChannel +public class InMemoryClosableChannel implements ReadableClosablePositionAwareChannel, FlushablePositionAwareChannel { - private static final Flushable NO_OP_FLUSHABLE = new Flushable() - { - @Override - public void flush() throws IOException - { - } - }; + private static final Flushable NO_OP_FLUSHABLE = () -> { }; private final byte[] bytes; private final ByteBuffer asWriter; private final ByteBuffer asReader; - public InMemoryLogChannel() + public InMemoryClosableChannel() { this( new byte[1000] ); } - public InMemoryLogChannel( byte[] bytes ) + public InMemoryClosableChannel( byte[] bytes ) { this.bytes = bytes; this.asWriter = ByteBuffer.wrap( this.bytes ); @@ -61,49 +55,49 @@ public void reset() } @Override - public InMemoryLogChannel put( byte b ) throws IOException + public InMemoryClosableChannel put( byte b ) throws IOException { asWriter.put( b ); return this; } @Override - public InMemoryLogChannel putShort( short s ) throws IOException + public InMemoryClosableChannel putShort( short s ) throws IOException { asWriter.putShort( s ); return this; } @Override - public InMemoryLogChannel putInt( int i ) throws IOException + public InMemoryClosableChannel putInt( int i ) throws IOException { asWriter.putInt( i ); return this; } @Override - public InMemoryLogChannel putLong( long l ) throws IOException + public InMemoryClosableChannel putLong( long l ) throws IOException { asWriter.putLong( l ); return this; } @Override - public InMemoryLogChannel putFloat( float f ) throws IOException + public InMemoryClosableChannel putFloat( float f ) throws IOException { asWriter.putFloat( f ); return this; } @Override - public InMemoryLogChannel putDouble( double d ) throws IOException + public InMemoryClosableChannel putDouble( double d ) throws IOException { asWriter.putDouble( d ); return this; } @Override - public InMemoryLogChannel put( byte[] bytes, int length ) throws IOException + public InMemoryClosableChannel put( byte[] bytes, int length ) throws IOException { asWriter.put( bytes, 0, length ); return this; @@ -238,4 +232,5 @@ public int availableBytesToWrite() { return asWriter.remaining(); } + } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryVersionableLogChannel.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryVersionableReadableClosablePositionAwareChannel.java similarity index 79% rename from community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryVersionableLogChannel.java rename to community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryVersionableReadableClosablePositionAwareChannel.java index f9eb01bcb27b9..9c5d8ff25b10d 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryVersionableLogChannel.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/InMemoryVersionableReadableClosablePositionAwareChannel.java @@ -21,17 +21,18 @@ import static org.neo4j.kernel.impl.transaction.log.entry.LogVersions.CURRENT_LOG_VERSION; -public class InMemoryVersionableLogChannel extends InMemoryLogChannel implements ReadableVersionableLogChannel +public class InMemoryVersionableReadableClosablePositionAwareChannel extends InMemoryClosableChannel implements + VersionableReadableClosablePositionAwareChannel { private final long version; private final byte formatVersion; - public InMemoryVersionableLogChannel() + public InMemoryVersionableReadableClosablePositionAwareChannel() { this( 0, CURRENT_LOG_VERSION ); } - public InMemoryVersionableLogChannel( long version, byte formatVersion ) + public InMemoryVersionableReadableClosablePositionAwareChannel( long version, byte formatVersion ) { this.version = version; this.formatVersion = formatVersion; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFileTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFileTest.java index d7870f557917a..37709382ed65b 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFileTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/PhysicalLogFileTest.java @@ -26,12 +26,10 @@ import org.junit.Rule; import org.junit.Test; -import org.neo4j.helpers.collection.Visitor; import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.impl.transaction.DeadSimpleLogVersionRepository; import org.neo4j.kernel.impl.transaction.DeadSimpleTransactionIdStore; -import org.neo4j.kernel.impl.transaction.log.LogFile.LogFileVisitor; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile.Monitor; import org.neo4j.kernel.impl.transaction.log.entry.LogHeader; import org.neo4j.kernel.impl.transaction.log.rotation.StoreFlusher; @@ -42,13 +40,18 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.neo4j.kernel.impl.transaction.log.entry.LogHeaderReader.readLogHeader; public class PhysicalLogFileTest { + public final @Rule TestDirectory directory = TargetDirectory.testDirForTest( getClass() ); + private final FileSystemAbstraction fs = new DefaultFileSystemAbstraction(); + private final LogVersionRepository logVersionRepository = new DeadSimpleLogVersionRepository( 1L ); + private final TransactionIdStore transactionIdStore = new DeadSimpleTransactionIdStore( 5L, 0, 0, 0 ); + + @Test public void shouldOpenInFreshDirectoryAndFinallyAddHeader() throws Exception { @@ -100,7 +103,7 @@ public void shouldWriteSomeDataIntoTheLog() throws Exception writer.prepareForFlush().flush(); // THEN - try ( ReadableLogChannel reader = logFile.getReader( positionMarker.newPosition() ) ) + try ( ReadableClosableChannel reader = logFile.getReader( positionMarker.newPosition() ) ) { assertEquals( intValue, reader.getInt() ); assertEquals( longValue, reader.getLong() ); @@ -147,13 +150,13 @@ transactionIdStore, logVersionRepository, mock( Monitor.class ), writer.prepareForFlush().flush(); // THEN - try ( ReadableLogChannel reader = logFile.getReader( position1 ) ) + try ( ReadableClosableChannel reader = logFile.getReader( position1 ) ) { assertEquals( intValue, reader.getInt() ); assertEquals( longValue, reader.getLong() ); assertArrayEquals( someBytes, readBytes( reader, 40 ) ); } - try ( ReadableLogChannel reader = logFile.getReader( position2 ) ) + try ( ReadableClosableChannel reader = logFile.getReader( position2 ) ) { assertEquals( longValue2, reader.getLong() ); assertArrayEquals( someBytes, readBytes( reader, 40 ) ); @@ -188,24 +191,19 @@ transactionIdStore, logVersionRepository, mock( Monitor.class ), // WHEN/THEN final AtomicBoolean called = new AtomicBoolean(); - logFile.accept( new LogFileVisitor() - { - @Override - public boolean visit( LogPosition position, ReadableLogChannel channel ) throws IOException + logFile.accept( ( position, channel ) -> { + for ( int i = 0; i < 5; i++ ) { - for ( int i = 0; i < 5; i++ ) - { - assertEquals( (byte)i, channel.get() ); - } - called.set( true ); - return true; + assertEquals( (byte)i, channel.get() ); } + called.set( true ); + return true; }, mark.newPosition() ); assertTrue( called.get() ); life.shutdown(); } - private byte[] readBytes( ReadableLogChannel reader, int length ) throws IOException + private byte[] readBytes( ReadableClosableChannel reader, int length ) throws IOException { byte[] result = new byte[length]; reader.get( result, length ); @@ -221,19 +219,4 @@ private byte[] someBytes( int length ) } return result; } - - private final FileSystemAbstraction fs = new DefaultFileSystemAbstraction(); - public final @Rule TestDirectory directory = TargetDirectory.testDirForTest( getClass() ); - private final LogVersionRepository logVersionRepository = new DeadSimpleLogVersionRepository( 1L ); - private final TransactionIdStore transactionIdStore = new DeadSimpleTransactionIdStore( 5L, 0, 0, 0 ); - private static final Visitor NO_RECOVERY_EXPECTED = - new Visitor() - { - @Override - public boolean visit( ReadableVersionableLogChannel element ) throws IOException - { - fail( "No recovery expected" ); - return false; - } - }; } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/TransactionPositionLocatorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/TransactionPositionLocatorTest.java index 947669bf81260..8e1a977801c12 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/TransactionPositionLocatorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/TransactionPositionLocatorTest.java @@ -42,8 +42,8 @@ public class TransactionPositionLocatorTest { - private final LogEntryReader logEntryReader = mock( LogEntryReader.class ); - private final ReadableLogChannel channel = mock( ReadableLogChannel.class ); + private final LogEntryReader logEntryReader = mock( LogEntryReader.class ); + private final ReadableClosablePositionAwareChannel channel = mock( ReadableClosablePositionAwareChannel.class ); private final TransactionMetadataCache metadataCache = mock( TransactionMetadataCache.class ); private final long txId = 42; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointerIntegrationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointerIntegrationTest.java index 26840e5267e26..90586d955926b 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointerIntegrationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/checkpoint/CheckPointerIntegrationTest.java @@ -19,16 +19,16 @@ */ package org.neo4j.kernel.impl.transaction.log.checkpoint; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseBuilder; @@ -39,8 +39,8 @@ import org.neo4j.kernel.impl.transaction.log.LogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.CheckPoint; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; @@ -50,7 +50,9 @@ import org.neo4j.test.TestGraphDatabaseFactory; import static java.lang.System.getProperty; + import static org.junit.Assert.assertEquals; + import static org.neo4j.kernel.impl.transaction.log.LogVersionBridge.NO_MORE_CHANNELS; import static org.neo4j.kernel.impl.transaction.log.LogVersionRepository.INITIAL_LOG_VERSION; @@ -201,7 +203,7 @@ private static class CheckPointCollector { private final PhysicalLogFiles logFiles; private final FileSystemAbstraction fileSystem; - private final LogEntryReader logEntryReader; + private final LogEntryReader logEntryReader; public CheckPointCollector( File directory, FileSystemAbstraction fileSystem ) { @@ -222,7 +224,7 @@ public List find( long version ) throws IOException break; } - ReadableLogChannel recoveredDataChannel = new ReadAheadLogChannel( channel, NO_MORE_CHANNELS ); + ReadableClosablePositionAwareChannel recoveredDataChannel = new ReadAheadPositionableReadableChannel( channel, NO_MORE_CHANNELS ); try ( LogEntryCursor cursor = new LogEntryCursor( logEntryReader, recoveredDataChannel ) ) { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserDispatcherV6Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserDispatcherV6Test.java index a374d87dc8e64..4708561d1cad4 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserDispatcherV6Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserDispatcherV6Test.java @@ -27,7 +27,7 @@ import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; import org.neo4j.kernel.impl.transaction.command.NeoCommandType; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; import org.neo4j.storageengine.api.CommandReaderFactory; @@ -48,7 +48,7 @@ public void shouldParserStartEntry() throws IOException { // given final LogEntryStart start = new LogEntryStart( version, 1, 2, 3, 4, new byte[]{5}, position ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.putInt( start.getMasterId() ); channel.putInt( start.getLocalId() ); @@ -73,7 +73,7 @@ public void shouldParserOnePhaseCommitEntry() throws IOException { // given final LogEntryCommit commit = new OnePhaseCommit( version, 42, 21 ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.putLong( commit.getTxId() ); channel.putLong( commit.getTimeWritten() ); @@ -98,7 +98,7 @@ public void shouldParserCommandsUsingAGivenFactory() throws IOException Command.NodeCommand nodeCommand = new Command.NodeCommand( theRecord, theRecord ); final LogEntryCommand command = new LogEntryCommand( version, nodeCommand ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( NeoCommandType.NODE_COMMAND ); channel.putLong( theRecord.getLongId() ); @@ -126,7 +126,7 @@ public void shouldParseEmptyEntry() throws IOException { // when final LogEntryParser parser = version.entryParser( LogEntryByteCodes.EMPTY ); - final LogEntry logEntry = parser.parse( version, new InMemoryLogChannel(), marker, commandReader ); + final LogEntry logEntry = parser.parse( version, new InMemoryClosableChannel(), marker, commandReader ); // then assertNull( logEntry ); @@ -138,7 +138,7 @@ public void shouldParseCheckPointEntry() throws IOException { // given final CheckPoint checkPoint = new CheckPoint( new LogPosition( 43, 44 ) ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.putLong( checkPoint.getLogPosition().getLogVersion() ); channel.putLong( checkPoint.getLogPosition().getByteOffset() ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_1Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_1Test.java index fb94f043eca20..0b7dc090f3ad3 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_1Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_1Test.java @@ -26,7 +26,7 @@ import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; import org.neo4j.storageengine.api.CommandReaderFactory; @@ -48,7 +48,7 @@ public void shouldParseStartEntry() throws IOException { // given final LogEntryStart start = new LogEntryStart( version, 1, 2, 3, 4, new byte[]{}, position ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // ignored part channel.put( (byte) 1 ); // globalId length @@ -84,7 +84,7 @@ public void shouldParseOnePhaseCommitEntry() throws IOException { // given final LogEntryCommit commit = new OnePhaseCommit( version, 42, 21 ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // ignored data channel.putInt( 123 ); // identifier @@ -108,7 +108,7 @@ public void shouldParseTwoPhaseCommitEntryAndMapThemIntoOnePhaseCommit() throws { // given final LogEntryCommit commit = new OnePhaseCommit( version, 42, 21 ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // ignored data channel.putInt( 123 ); // identifier @@ -133,7 +133,7 @@ public void shouldParseCommandsUsingAGivenFactory() throws IOException // given final Command.NodeCommand nodeCommand = new Command.NodeCommand( new NodeRecord( 0 ), new NodeRecord( 0 ) ); final LogEntryCommand command = new LogEntryCommand( version, nodeCommand ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // ignored data channel.putInt( 123 ); // identifier @@ -156,7 +156,7 @@ public void shouldParseEmptyEntry() throws IOException { // when final LogEntryParser parser = version.entryParser( LogEntryByteCodes.EMPTY ); - final LogEntry logEntry = parser.parse( version, new InMemoryLogChannel(), marker, commandReader ); + final LogEntry logEntry = parser.parse( version, new InMemoryClosableChannel(), marker, commandReader ); // then assertNull( logEntry ); @@ -168,7 +168,7 @@ public void shouldParsePrepareEntry() throws IOException { // given final byte nextByte = (byte) 7; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // ignored channel.putInt( 123 ); // identifier channel.putLong( 456 ); // timeWritten @@ -192,7 +192,7 @@ public void shouldParseDoneEntry() throws IOException { // given final byte nextByte = (byte) 7; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // ignored channel.putInt( 123 ); // identifier // data available after diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_2Test.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_2Test.java index eb904f3690f29..6098444680e54 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_2Test.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogEntryParserV2_2Test.java @@ -26,7 +26,7 @@ import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; import org.neo4j.storageengine.api.CommandReaderFactory; @@ -48,7 +48,7 @@ public void shouldParseStartEntry() throws IOException { // given final LogEntryStart start = new LogEntryStart( version, 1, 2, 3, 4, new byte[]{5}, position ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.putInt( start.getMasterId() ); channel.putInt( start.getLocalId() ); @@ -73,7 +73,7 @@ public void shouldParseOnePhaseCommitEntry() throws IOException { // given final LogEntryCommit commit = new OnePhaseCommit( version, 42, 21 ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.putLong( commit.getTxId() ); channel.putLong( commit.getTimeWritten() ); @@ -95,7 +95,7 @@ public void shouldParseCommandsUsingAGivenFactory() throws IOException // given Command.NodeCommand nodeCommand = new Command.NodeCommand( new NodeRecord( 0 ), new NodeRecord( 0 ) ); final LogEntryCommand command = new LogEntryCommand( version, nodeCommand ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); nodeCommand.serialize( channel ); @@ -116,7 +116,7 @@ public void shouldParseEmptyEntry() throws IOException { // when final LogEntryParser parser = version.entryParser( LogEntryByteCodes.EMPTY ); - final LogEntry logEntry = parser.parse( version, new InMemoryLogChannel(), marker, commandReader ); + final LogEntry logEntry = parser.parse( version, new InMemoryClosableChannel(), marker, commandReader ); // then assertNull( logEntry ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReaderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReaderTest.java index dac6a824fee81..0a39500bcd70a 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReaderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderReaderTest.java @@ -31,7 +31,7 @@ import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; @@ -52,7 +52,7 @@ public class LogHeaderReaderTest public void shouldReadALogHeaderFromALogChannel() throws IOException { // given - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.putLong( encodeLogVersion( expectedLogVersion ) ); channel.putLong( expectedTxId ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderWriterTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderWriterTest.java index 91bd009e3a304..8ca7e22c41c21 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderWriterTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/LogHeaderWriterTest.java @@ -30,7 +30,7 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.transaction.log.IllegalLogFormatException; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; @@ -51,7 +51,7 @@ public class LogHeaderWriterTest public void shouldWriteALogHeaderInTheGivenChannel() throws IOException { // given - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // when writeLogHeader( channel, expectedLogVersion, expectedTxId ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReaderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReaderTest.java index 4a0c3e3cd0199..775d61f3e3df2 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReaderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/entry/VersionAwareLogEntryReaderTest.java @@ -19,17 +19,17 @@ */ package org.neo4j.kernel.impl.transaction.log.entry; -import org.junit.Test; - import java.io.IOException; +import org.junit.Test; + import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; import org.neo4j.kernel.impl.transaction.command.NeoCommandType; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.LogPosition; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -37,7 +37,7 @@ public class VersionAwareLogEntryReaderTest { - private final VersionAwareLogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( + private final VersionAwareLogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); @Test @@ -46,7 +46,7 @@ public void shouldReadAStartLogEntry() throws IOException // given LogEntryVersion version = LogEntryVersion.CURRENT; final LogEntryStart start = new LogEntryStart( version, 1, 2, 3, 4, new byte[]{5}, new LogPosition( 0, 31 ) ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); // version channel.put( LogEntryByteCodes.TX_START ); // type @@ -70,7 +70,7 @@ public void shouldReadACommitLogEntry() throws IOException // given LogEntryVersion version = LogEntryVersion.CURRENT; final LogEntryCommit commit = new OnePhaseCommit( version, 42, 21 ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.TX_1P_COMMIT ); @@ -91,7 +91,7 @@ public void shouldReadACommandLogEntry() throws IOException LogEntryVersion version = LogEntryVersion.CURRENT; Command.NodeCommand nodeCommand = new Command.NodeCommand( new NodeRecord( 11 ), new NodeRecord( 11 ) ); final LogEntryCommand command = new LogEntryCommand( version, nodeCommand ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.COMMAND ); @@ -111,7 +111,7 @@ public void shouldReadACheckPointLogEntry() throws IOException LogEntryVersion version = LogEntryVersion.CURRENT; final LogPosition logPosition = new LogPosition( 42, 43 ); final CheckPoint checkPoint = new CheckPoint( version, logPosition ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.CHECK_POINT ); @@ -130,7 +130,7 @@ public void shouldReturnNullWhenThereIsNoCommand() throws IOException { // given LogEntryVersion version = LogEntryVersion.CURRENT; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.COMMAND ); @@ -148,7 +148,7 @@ public void shouldReturnNullWhenLogEntryIsEmpty() throws IOException { // given LogEntryVersion version = LogEntryVersion.CURRENT; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.EMPTY ); @@ -164,7 +164,7 @@ public void shouldReturnNullWhenNotEnoughDataInTheChannel() throws IOException { // given LogEntryVersion version = LogEntryVersion.CURRENT; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); // when final LogEntry logEntry = logEntryReader.readLogEntry( channel ); @@ -178,7 +178,7 @@ public void shouldParseOldStartEntry() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); final LogEntryStart start = new LogEntryStart( 1, 2, 3, 4, new byte[]{}, new LogPosition( 0, 37 ) ); channel.put( version.byteCode() ); @@ -209,7 +209,7 @@ public void shouldParseOldOnePhaseCommit() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); final OnePhaseCommit commit = new OnePhaseCommit( 42, 456 ); channel.put( version.byteCode() ); @@ -233,7 +233,7 @@ public void shouldParseOldTwoPhaseCommit() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); final OnePhaseCommit commit = new OnePhaseCommit( 42, 456 ); channel.put( version.byteCode() ); @@ -257,7 +257,7 @@ public void shouldParseOldPrepareSkipItAndReadTheOneAfter() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); final OnePhaseCommit commit = new OnePhaseCommit( 42, 456 ); // PREPARE @@ -288,7 +288,7 @@ public void shouldParseOldDoneSkipItAndReadTheOneAfter() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); final OnePhaseCommit commit = new OnePhaseCommit( 42, 456 ); // PREPARE @@ -320,7 +320,7 @@ public void shouldParseAnOldCommandLogEntry() throws IOException LogEntryVersion version = LogEntryVersion.V2_1; Command.NodeCommand nodeCommand = new Command.NodeCommand( new NodeRecord( 10 ), new NodeRecord( 10 ) ); final LogEntryCommand command = new LogEntryCommand( version, nodeCommand ); - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.COMMAND ); @@ -342,7 +342,7 @@ public void shouldReturnNullWhenThereIsNoCommandOldVersion() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.COMMAND ); @@ -360,7 +360,7 @@ public void shouldParseOldLogEntryEmptyANdReturnNull() throws IOException { // given LogEntryVersion version = LogEntryVersion.V2_1; - final InMemoryLogChannel channel = new InMemoryLogChannel(); + final InMemoryClosableChannel channel = new InMemoryClosableChannel(); channel.put( version.byteCode() ); channel.put( LogEntryByteCodes.EMPTY ); @@ -375,9 +375,9 @@ public void shouldParseOldLogEntryEmptyANdReturnNull() throws IOException public void shouldParseStreamOfZerosAsEmptyLogEntries() throws Exception { // GIVEN - LogEntryReader reader = new VersionAwareLogEntryReader<>( + LogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); int count = 100; channel.put( new byte[count], count ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/pruning/TestLogPruning.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/pruning/TestLogPruning.java index ba9905599d10a..262d5630ce6b6 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/pruning/TestLogPruning.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/pruning/TestLogPruning.java @@ -39,8 +39,8 @@ import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionCursor; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; import org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo; import org.neo4j.kernel.impl.transaction.log.checkpoint.TriggerInfo; @@ -278,12 +278,12 @@ public LogVersionedStoreChannel next( LogVersionedStoreChannel channel ) throws StoreChannel storeChannel = fs.open( files.getLogFileForVersion( version ), "r" ); LogVersionedStoreChannel versionedStoreChannel = PhysicalLogFile.openForVersion( files, fs, version ); new PhysicalLogVersionedStoreChannel( storeChannel, -1 /* ignored */, CURRENT_LOG_VERSION ); - try ( ReadableVersionableLogChannel channel = - new ReadAheadLogChannel( versionedStoreChannel, bridge, 1000 ) ) + try ( VersionableReadableClosablePositionAwareChannel channel = + new ReadAheadPositionableReadableChannel( versionedStoreChannel, bridge, 1000 ) ) { - try ( PhysicalTransactionCursor physicalTransactionCursor = + try ( PhysicalTransactionCursor physicalTransactionCursor = new PhysicalTransactionCursor<>( channel, - new VersionAwareLogEntryReader( + new VersionAwareLogEntryReader( new RecordStorageCommandReaderFactory() ) ) ) { while ( physicalTransactionCursor.next()) diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/stresstest/TransactionAppenderStressTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/stresstest/TransactionAppenderStressTest.java index 14c789126fc3b..cbdf237b8b562 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/stresstest/TransactionAppenderStressTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/log/stresstest/TransactionAppenderStressTest.java @@ -19,23 +19,23 @@ */ package org.neo4j.kernel.impl.transaction.log.stresstest; -import org.junit.Rule; -import org.junit.Test; - import java.io.File; import java.io.IOException; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.function.BooleanSupplier; +import org.junit.Rule; +import org.junit.Test; + import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.ReaderLogVersionBridge; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryByteCodes; @@ -48,6 +48,7 @@ import static java.lang.System.currentTimeMillis; import static java.util.concurrent.TimeUnit.SECONDS; + import static org.junit.Assert.assertEquals; public class TransactionAppenderStressTest @@ -120,9 +121,9 @@ public long parseAllTxLogs() throws IOException { FileSystemAbstraction fs = new DefaultFileSystemAbstraction(); long txId = -1; - try ( ReadableLogChannel channel = openLogFile( fs, 0 ) ) + try ( VersionableReadableClosablePositionAwareChannel channel = openLogFile( fs, 0 ) ) { - LogEntryReader reader = + LogEntryReader reader = new VersionAwareLogEntryReader<>( LogEntryVersion.CURRENT.byteCode(), new RecordStorageCommandReaderFactory() ); LogEntry logEntry = reader.readLogEntry( channel ); @@ -137,11 +138,11 @@ public long parseAllTxLogs() throws IOException return txId; } - private ReadableLogChannel openLogFile( FileSystemAbstraction fs, int version ) throws IOException + private VersionableReadableClosablePositionAwareChannel openLogFile( FileSystemAbstraction fs, int version ) throws IOException { PhysicalLogFiles logFiles = new PhysicalLogFiles( workingDirectory, fs ); PhysicalLogVersionedStoreChannel channel = PhysicalLogFile.openForVersion( logFiles, fs, version ); - return new ReadAheadLogChannel( channel, new ReaderLogVersionBridge( fs, logFiles ) ); + return new ReadAheadPositionableReadableChannel( channel, new ReaderLogVersionBridge( fs, logFiles ) ); } } } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/LogTruncationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/LogTruncationTest.java index 745093f95c797..ec879626be8c9 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/LogTruncationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/LogTruncationTest.java @@ -19,8 +19,6 @@ */ package org.neo4j.kernel.impl.transaction.state; -import org.junit.Test; - import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -28,6 +26,8 @@ import java.util.List; import java.util.Map; +import org.junit.Test; + import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.api.index.SchemaIndexProvider; import org.neo4j.kernel.impl.index.IndexCommand; @@ -36,9 +36,9 @@ import org.neo4j.kernel.impl.index.IndexCommand.CreateCommand; import org.neo4j.kernel.impl.index.IndexCommand.DeleteCommand; import org.neo4j.kernel.impl.index.IndexCommand.RemoveCommand; -import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.index.IndexDefineCommand; import org.neo4j.kernel.impl.index.IndexEntityType; +import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.record.DynamicRecord; import org.neo4j.kernel.impl.store.record.IndexRule; import org.neo4j.kernel.impl.store.record.LabelTokenRecord; @@ -51,9 +51,9 @@ import org.neo4j.kernel.impl.transaction.command.Command; import org.neo4j.kernel.impl.transaction.command.Command.NodeCountsCommand; import org.neo4j.kernel.impl.transaction.command.Command.RelationshipCountsCommand; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; @@ -63,8 +63,10 @@ import static java.lang.reflect.Modifier.isAbstract; import static java.util.Arrays.asList; + import static junit.framework.TestCase.assertNull; import static org.junit.Assert.assertEquals; + import static org.neo4j.kernel.impl.store.record.DynamicRecord.dynamicRecord; /** @@ -73,8 +75,8 @@ */ public class LogTruncationTest { - private final InMemoryLogChannel inMemoryChannel = new InMemoryLogChannel(); - private final LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( + private final InMemoryClosableChannel inMemoryChannel = new InMemoryClosableChannel(); + private final LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); private final LogEntryWriter writer = new LogEntryWriter( inMemoryChannel ); /** Stores all known commands, and an arbitrary set of different permutations for them */ @@ -221,7 +223,7 @@ private void assertHandlesLogTruncation( Command cmd ) throws IOException @Test public void testInMemoryLogChannel() throws Exception { - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); for ( int i = 0; i < 25; i++ ) { channel.putInt( i ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeCommandTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeCommandTest.java index 4a28524a1880f..8339c47136288 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeCommandTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/NodeCommandTest.java @@ -41,7 +41,7 @@ import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.command.Command; import org.neo4j.kernel.impl.transaction.command.PhysicalLogCommandReaderV2_2; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.logging.NullLogProvider; import org.neo4j.storageengine.api.CommandReader; import org.neo4j.test.EphemeralFileSystemRule; @@ -62,7 +62,7 @@ public class NodeCommandTest @ClassRule public static PageCacheRule pageCacheRule = new PageCacheRule(); private NodeStore nodeStore; - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); private final CommandReader commandReader = new PhysicalLogCommandReaderV2_2(); @Rule public EphemeralFileSystemRule fs = new EphemeralFileSystemRule(); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/RelationshipGroupCommandTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/RelationshipGroupCommandTest.java index 0769fdf5a91ca..30ddaec3bb900 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/RelationshipGroupCommandTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/RelationshipGroupCommandTest.java @@ -26,7 +26,7 @@ import org.neo4j.kernel.impl.store.record.RelationshipGroupRecord; import org.neo4j.kernel.impl.transaction.command.Command; import org.neo4j.kernel.impl.transaction.command.PhysicalLogCommandReaderV2_2; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.storageengine.api.CommandReader; import static org.hamcrest.MatcherAssert.assertThat; @@ -61,7 +61,7 @@ public void shouldSerializeCreatedRecord() throws Exception private void assertSerializationWorksFor( Command.RelationshipGroupCommand cmd ) throws IOException { - InMemoryLogChannel channel = new InMemoryLogChannel(); + InMemoryClosableChannel channel = new InMemoryClosableChannel(); cmd.serialize( channel ); CommandReader commandReader = new PhysicalLogCommandReaderV2_2(); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/SchemaRuleCommandTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/SchemaRuleCommandTest.java index d063745864f4c..c7e77f5a35474 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/SchemaRuleCommandTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/SchemaRuleCommandTest.java @@ -50,7 +50,7 @@ import org.neo4j.kernel.impl.transaction.command.LabelUpdateWork; import org.neo4j.kernel.impl.transaction.command.NeoStoreBatchTransactionApplier; import org.neo4j.kernel.impl.transaction.command.PhysicalLogCommandReaderV2_2; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; import org.neo4j.storageengine.api.StorageCommand; import org.neo4j.storageengine.api.TransactionApplicationMode; @@ -161,7 +161,7 @@ public void shouldWriteSchemaRuleToLog() throws Exception Collection afterRecords = serialize( rule, id, true, true); SchemaRuleCommand command = new SchemaRuleCommand( beforeRecords, afterRecords, rule ); - InMemoryLogChannel buffer = new InMemoryLogChannel(); + InMemoryClosableChannel buffer = new InMemoryClosableChannel(); when( neoStores.getSchemaStore() ).thenReturn( schemaStore ); @@ -183,7 +183,7 @@ public void shouldRecreateSchemaRuleWhenDeleteCommandReadFromDisk() throws Excep Collection afterRecords = serialize( rule, id, false, false); SchemaRuleCommand command = new SchemaRuleCommand( beforeRecords, afterRecords, rule ); - InMemoryLogChannel buffer = new InMemoryLogChannel(); + InMemoryClosableChannel buffer = new InMemoryClosableChannel(); when( neoStores.getSchemaStore() ).thenReturn( schemaStore ); // WHEN diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java index cafd967291cc9..db3e77e01e1d1 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/TransactionRecordStateTest.java @@ -69,10 +69,10 @@ import org.neo4j.kernel.impl.transaction.command.CommandHandlerContract; import org.neo4j.kernel.impl.transaction.command.NeoStoreBatchTransactionApplier; import org.neo4j.kernel.impl.transaction.log.FlushableChannel; -import org.neo4j.kernel.impl.transaction.log.InMemoryVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryVersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionCursor; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.TransactionLogWriter; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryWriter; @@ -496,7 +496,7 @@ public void shouldDeleteDynamicLabelsForDeletedNodeForRecoveredTransaction() thr // WHEN applying a transaction, which has first round-tripped through a log (written then read) TransactionRepresentation transaction = transaction( deleteNode( store, nodeId.get() ) ); - InMemoryVersionableLogChannel channel = new InMemoryVersionableLogChannel(); + InMemoryVersionableReadableClosablePositionAwareChannel channel = new InMemoryVersionableReadableClosablePositionAwareChannel(); writeToChannel( transaction, channel ); CommittedTransactionRepresentation recoveredTransaction = readFromChannel( channel ); // and applying that recovered transaction @@ -1182,12 +1182,12 @@ private void assertCommand( StorageCommand next, Class klass ) assertTrue( "Expected " + klass + ". was: " + next, klass.isInstance( next ) ); } - private CommittedTransactionRepresentation readFromChannel( ReadableVersionableLogChannel channel ) + private CommittedTransactionRepresentation readFromChannel( VersionableReadableClosablePositionAwareChannel channel ) throws IOException { - LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); - try ( PhysicalTransactionCursor cursor = new PhysicalTransactionCursor<>( + try ( PhysicalTransactionCursor cursor = new PhysicalTransactionCursor<>( channel, logEntryReader ) ) { assertTrue( cursor.next() ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/recovery/LatestCheckPointFinderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/recovery/LatestCheckPointFinderTest.java index 612bf7d1ccf5a..c676136a578ad 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/recovery/LatestCheckPointFinderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/recovery/LatestCheckPointFinderTest.java @@ -19,21 +19,19 @@ */ package org.neo4j.kernel.recovery; -import org.junit.Before; -import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; +import org.junit.Before; +import org.junit.Test; + import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.fs.StoreChannel; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.CheckPoint; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; @@ -44,6 +42,7 @@ import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; + import static org.neo4j.kernel.impl.transaction.log.entry.LogHeader.LOG_HEADER_SIZE; import static org.neo4j.kernel.impl.transaction.log.entry.LogHeaderWriter.encodeLogVersion; @@ -52,7 +51,7 @@ public class LatestCheckPointFinderTest private final PhysicalLogFiles logFiles = mock( PhysicalLogFiles.class ); private final FileSystemAbstraction fs = mock( FileSystemAbstraction.class ); @SuppressWarnings( "unchecked" ) - private final LogEntryReader reader = mock( LogEntryReader.class ); + private final LogEntryReader reader = mock( LogEntryReader.class ); private final int olderLogVersion = 0; private final int logVersion = 1; @@ -66,16 +65,11 @@ public void setup() throws IOException StoreChannel channel = mock( StoreChannel.class ); when( fs.open( file, "rw" ) ).thenReturn( channel ); final int version = i; - when( channel.read( any( ByteBuffer.class ) ) ).thenAnswer( new Answer() - { - @Override - public Integer answer( InvocationOnMock invocationOnMock ) throws Throwable - { - ByteBuffer buffer = (ByteBuffer) invocationOnMock.getArguments()[0]; - buffer.putLong( encodeLogVersion( version ) ); - buffer.putLong( 33 ); - return LOG_HEADER_SIZE; - } + when( channel.read( any( ByteBuffer.class ) ) ).thenAnswer( invocationOnMock -> { + ByteBuffer buffer = (ByteBuffer) invocationOnMock.getArguments()[0]; + buffer.putLong( encodeLogVersion( version ) ); + buffer.putLong( 33 ); + return LOG_HEADER_SIZE; } ); } when( fs.fileExists( any( File.class ) ) ).thenReturn( true ); @@ -118,7 +112,7 @@ public void oneLogFileNoCheckPointsOneStart() throws Throwable // given LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( olderLogVersion, 16 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( start, null ); + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( start, null ); // when LatestCheckPoint latestCheckPoint = finder.find( olderLogVersion ); @@ -146,7 +140,7 @@ public void twoLogFilesNoCheckPointsOneStart() throws Throwable // given LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( logVersion, 16 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( start, null ); + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( start, null ); // when LatestCheckPoint latestCheckPoint = finder.find( logVersion ); @@ -162,7 +156,7 @@ public void latestLogFileContainingACheckPointOnly() throws Throwable LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); CheckPoint checkPoint = new CheckPoint( new LogPosition( logVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( checkPoint, null ); + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( checkPoint, null ); // when LatestCheckPoint latestCheckPoint = finder.find( logVersion ); @@ -178,7 +172,7 @@ public void latestLogFileContainingACheckPointAndAStartBefore() throws Throwable LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( logVersion, 16 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( logVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( start, checkPoint, null ); + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( start, checkPoint, null ); // when LatestCheckPoint latestCheckPoint = finder.find( logVersion ); @@ -194,7 +188,7 @@ public void latestLogFileContainingACheckPointAndAStartAfter() throws Throwable LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); CheckPoint checkPoint = new CheckPoint( new LogPosition( logVersion, 16 ) ); LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( logVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( start, checkPoint, null ); + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( start, checkPoint, null ); // when LatestCheckPoint latestCheckPoint = finder.find( logVersion ); @@ -210,7 +204,7 @@ public void latestLogFileContainingACheckPointAndAStartAtSamePosition() throws T LatestCheckPointFinder finder = new LatestCheckPointFinder( logFiles, fs, reader ); CheckPoint checkPoint = new CheckPoint( new LogPosition( logVersion, 16 ) ); LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( logVersion, 16 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( start, checkPoint, null ); + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( start, checkPoint, null ); // when LatestCheckPoint latestCheckPoint = finder.find( logVersion ); @@ -227,7 +221,7 @@ public void latestLogFileContainingMultipleCheckPointsOneStartInBetween() throws LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( logVersion, 22 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( logVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( mock( CheckPoint.class ), start, checkPoint, null ); // when @@ -245,7 +239,7 @@ public void latestLogFileContainingMultipleCheckPointsOneStartAfterBoth() throws CheckPoint checkPoint = new CheckPoint( new LogPosition( logVersion, 22 ) ); LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( logVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( mock( CheckPoint.class ), checkPoint, start, null ); // when @@ -264,7 +258,7 @@ public void olderLogFileContainingACheckPointAndNewerFileContainingAStart() thro LogEntryStart start2 = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( olderLogVersion, 16 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( olderLogVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( start1, null, // first file start2, checkPoint, null // second file ); @@ -284,7 +278,7 @@ public void olderLogFileContainingACheckPointAndNewerFileIsEmpty() throws Throwa LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( olderLogVersion, 16 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( olderLogVersion, 33 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( null, // first file start, checkPoint, null // second file ); @@ -304,7 +298,7 @@ public void olderLogFileContainingAStartAndNewerFileContainingACheckPointPointin LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( olderLogVersion, 22 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( olderLogVersion, 16 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( checkPoint, // first file start, null // second file ); @@ -324,7 +318,7 @@ public void olderLogFileContainingAStartAndNewerFileContainingACheckPointPointin LogEntryStart start = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( olderLogVersion, 22 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( olderLogVersion, 25 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( checkPoint, // first file start, null // second file ); @@ -345,7 +339,7 @@ public void latestLogEmptyStartEntryBeforeAndAfterCheckPointInTheLastButOneLog() LogEntry secondStart = new LogEntryStart( 0, 0, 0, 0, new byte[0], new LogPosition( olderLogVersion, 27 ) ); CheckPoint checkPoint = new CheckPoint( new LogPosition( olderLogVersion, 25 ) ); - when( reader.readLogEntry( any( ReadableVersionableLogChannel.class ) ) ).thenReturn( + when( reader.readLogEntry( any( VersionableReadableClosablePositionAwareChannel.class ) ) ).thenReturn( null, // first file firstStart, checkPoint, secondStart, null // second file ); diff --git a/community/kernel/src/test/java/org/neo4j/test/LogTestUtils.java b/community/kernel/src/test/java/org/neo4j/test/LogTestUtils.java index f865dd5a5adcb..ec7ef7576cb7a 100644 --- a/community/kernel/src/test/java/org/neo4j/test/LogTestUtils.java +++ b/community/kernel/src/test/java/org/neo4j/test/LogTestUtils.java @@ -34,9 +34,8 @@ import org.neo4j.kernel.impl.transaction.log.LogVersionBridge; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogHeader; @@ -137,7 +136,7 @@ public static LogEntryCursor openLog( FileSystemAbstraction fs, File log ) PhysicalLogVersionedStoreChannel logVersionedChannel = new PhysicalLogVersionedStoreChannel( channel, header.logVersion, header.logFormatVersion ); - ReadableVersionableLogChannel logChannel = new ReadAheadLogChannel( logVersionedChannel, + VersionableReadableClosablePositionAwareChannel logChannel = new ReadAheadPositionableReadableChannel( logVersionedChannel, LogVersionBridge.NO_MORE_CHANNELS ); return new LogEntryCursor( new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ), @@ -197,8 +196,8 @@ public static File filterNeostoreLogicalLog( FileSystemAbstraction fileSystem, F PhysicalLogVersionedStoreChannel inChannel = new PhysicalLogVersionedStoreChannel( in, logHeader.logVersion, logHeader.logFormatVersion ); - ReadableLogChannel inBuffer = new ReadAheadLogChannel( inChannel, LogVersionBridge.NO_MORE_CHANNELS ); - LogEntryReader entryReader = new VersionAwareLogEntryReader<>( + VersionableReadableClosablePositionAwareChannel inBuffer = new ReadAheadPositionableReadableChannel( inChannel, LogVersionBridge.NO_MORE_CHANNELS ); + LogEntryReader entryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); LogEntry entry; diff --git a/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/IndexCreationTest.java b/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/IndexCreationTest.java index 3c89b49c32069..8187d787f1118 100644 --- a/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/IndexCreationTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/IndexCreationTest.java @@ -44,7 +44,7 @@ import org.neo4j.kernel.impl.transaction.log.LogEntryCursor; import org.neo4j.kernel.impl.transaction.log.LogPosition; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; import org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; @@ -134,7 +134,7 @@ private void verifyThatIndexCreationTransactionIsTheFirstOne() throws Exception new SimpleTriggerInfo( "test" ) ); - ReadableVersionableLogChannel logChannel = pLogFile.getReader( LogPosition.start( version ) ); + VersionableReadableClosablePositionAwareChannel logChannel = pLogFile.getReader( LogPosition.start( version ) ); final AtomicBoolean success = new AtomicBoolean( false ); diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/BackupClient.java b/enterprise/backup/src/main/java/org/neo4j/backup/BackupClient.java index 00628a2f3ca69..76b0064347535 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/BackupClient.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/BackupClient.java @@ -37,7 +37,7 @@ import org.neo4j.com.storecopy.StoreWriter; import org.neo4j.com.storecopy.ToNetworkStoreWriter; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.monitoring.ByteCounterMonitor; import org.neo4j.kernel.monitoring.Monitors; @@ -54,7 +54,7 @@ class BackupClient extends Client implements TheBackupInterf public BackupClient( String hostNameOrIp, int port, LogProvider logProvider, StoreId storeId, long timeout, ResponseUnpacker unpacker, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, - LogEntryReader reader ) + LogEntryReader reader ) { super( hostNameOrIp, port, logProvider, storeId, FRAME_LENGTH, new ProtocolVersion( PROTOCOL_VERSION, ProtocolVersion.INTERNAL_PROTOCOL_VERSION ), timeout, diff --git a/enterprise/backup/src/test/java/org/neo4j/backup/BackupProtocolTest.java b/enterprise/backup/src/test/java/org/neo4j/backup/BackupProtocolTest.java index ac5faa6578f0e..7490e46fc0ac7 100644 --- a/enterprise/backup/src/test/java/org/neo4j/backup/BackupProtocolTest.java +++ b/enterprise/backup/src/test/java/org/neo4j/backup/BackupProtocolTest.java @@ -30,7 +30,7 @@ import org.neo4j.helpers.HostnamePort; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.kernel.lifecycle.LifeSupport; @@ -76,7 +76,7 @@ private void shouldGatherForensicsInFullBackupRequest( boolean forensics ) throw int port = BackupServer.DEFAULT_PORT; LifeSupport life = new LifeSupport(); - LogEntryReader reader = + LogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); BackupClient client = life.add( new BackupClient( host, port, NullLogProvider.getInstance(), storeId, 1000, mock( ResponseUnpacker.class ), mock( ByteCounterMonitor.class ), mock( RequestMonitor.class ), reader ) ); diff --git a/enterprise/com/src/main/java/org/neo4j/com/Client.java b/enterprise/com/src/main/java/org/neo4j/com/Client.java index 28ac18f045baa..b44df14af630f 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/Client.java +++ b/enterprise/com/src/main/java/org/neo4j/com/Client.java @@ -19,6 +19,12 @@ */ package org.neo4j.com; +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.nio.ByteBuffer; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.TimeUnit; + import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; @@ -31,19 +37,13 @@ import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; import org.jboss.netty.handler.queue.BlockingReadHandler; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.nio.ByteBuffer; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.TimeUnit; - import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.com.storecopy.ResponseUnpacker; import org.neo4j.com.storecopy.ResponseUnpacker.TxHandler; import org.neo4j.helpers.Exceptions; import org.neo4j.kernel.impl.store.MismatchingStoreIdException; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.kernel.monitoring.ByteCounterMonitor; @@ -92,14 +92,14 @@ public abstract class Client extends LifecycleAdapter implements ChannelPipel private final ResponseUnpacker responseUnpacker; private final ByteCounterMonitor byteCounterMonitor; private final RequestMonitor requestMonitor; - private final LogEntryReader entryReader; + private final LogEntryReader entryReader; public Client( String hostNameOrIp, int port, LogProvider logProvider, StoreId storeId, int frameLength, ProtocolVersion protocolVersion, long readTimeout, int maxConcurrentChannels, int chunkSize, ResponseUnpacker responseUnpacker, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, - LogEntryReader entryReader ) + LogEntryReader entryReader ) { this.entryReader = entryReader; assert byteCounterMonitor != null; diff --git a/enterprise/com/src/main/java/org/neo4j/com/NetworkReadableLogChannel.java b/enterprise/com/src/main/java/org/neo4j/com/NetworkReadableClosableChannel.java similarity index 93% rename from enterprise/com/src/main/java/org/neo4j/com/NetworkReadableLogChannel.java rename to enterprise/com/src/main/java/org/neo4j/com/NetworkReadableClosableChannel.java index 76df719260736..e09a830ae0c7c 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/NetworkReadableLogChannel.java +++ b/enterprise/com/src/main/java/org/neo4j/com/NetworkReadableClosableChannel.java @@ -24,14 +24,14 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.storageengine.api.ReadPastEndException; -public class NetworkReadableLogChannel implements ReadableLogChannel +public class NetworkReadableClosableChannel implements ReadableClosablePositionAwareChannel { private final ChannelBuffer delegate; - public NetworkReadableLogChannel( ChannelBuffer input ) + public NetworkReadableClosableChannel( ChannelBuffer input ) { this.delegate = input; } diff --git a/enterprise/com/src/main/java/org/neo4j/com/Protocol.java b/enterprise/com/src/main/java/org/neo4j/com/Protocol.java index f05d0a303ef39..b6e9f3e9cd709 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/Protocol.java +++ b/enterprise/com/src/main/java/org/neo4j/com/Protocol.java @@ -39,7 +39,8 @@ import org.neo4j.kernel.impl.transaction.TransactionRepresentation; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionCursor; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryWriter; @@ -96,9 +97,9 @@ public void write( ChannelBuffer buffer ) throws IOException }; public static class TransactionRepresentationDeserializer implements Deserializer { - private final LogEntryReader reader; + private final LogEntryReader reader; - public TransactionRepresentationDeserializer( LogEntryReader reader ) + public TransactionRepresentationDeserializer( LogEntryReader reader ) { this.reader = reader; } @@ -107,7 +108,7 @@ public TransactionRepresentationDeserializer( LogEntryReader public TransactionRepresentation read( ChannelBuffer buffer, ByteBuffer temporaryBuffer ) throws IOException { - NetworkReadableLogChannel channel = new NetworkReadableLogChannel( buffer ); + NetworkReadableClosableChannel channel = new NetworkReadableClosableChannel( buffer ); int authorId = channel.getInt(); int masterId = channel.getInt(); @@ -224,7 +225,7 @@ public Response deserializeResponse( BlockingReadHandler payloadDeserializer, ResourceReleaser channelReleaser, - final LogEntryReader entryReader ) throws IOException + final LogEntryReader entryReader ) throws IOException { final DechunkingChannelBuffer dechunkingBuffer = new DechunkingChannelBuffer( reader, timeout, internalProtocolVersion, applicationProtocolVersion ); @@ -249,9 +250,9 @@ public Response deserializeResponse( BlockingReadHandler visitor ) throws Exception { - NetworkReadableLogChannel channel = new NetworkReadableLogChannel( dechunkingBuffer ); + NetworkReadableClosableChannel channel = new NetworkReadableClosableChannel( dechunkingBuffer ); - try ( PhysicalTransactionCursor cursor = + try ( PhysicalTransactionCursor cursor = new PhysicalTransactionCursor<>( channel, entryReader ) ) { while ( cursor.next() && !visitor.visit( cursor.get() ) ) diff --git a/enterprise/com/src/test/java/org/neo4j/com/ChannelBufferWrapper.java b/enterprise/com/src/test/java/org/neo4j/com/ChannelBufferWrapper.java index 97ce3e089292f..0dfbfffc74b86 100644 --- a/enterprise/com/src/test/java/org/neo4j/com/ChannelBufferWrapper.java +++ b/enterprise/com/src/test/java/org/neo4j/com/ChannelBufferWrapper.java @@ -33,17 +33,17 @@ import org.jboss.netty.buffer.ChannelBufferFactory; import org.jboss.netty.buffer.ChannelBufferIndexFinder; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.storageengine.api.ReadPastEndException; /** - * Wraps an {@link InMemoryLogChannel}, making it look like one {@link ChannelBuffer}. + * Wraps an {@link InMemoryClosableChannel}, making it look like one {@link ChannelBuffer}. */ public class ChannelBufferWrapper implements ChannelBuffer { - private final InMemoryLogChannel delegate; + private final InMemoryClosableChannel delegate; - public ChannelBufferWrapper( InMemoryLogChannel delegate ) + public ChannelBufferWrapper( InMemoryClosableChannel delegate ) { this.delegate = delegate; } diff --git a/enterprise/com/src/test/java/org/neo4j/com/ProtocolTest.java b/enterprise/com/src/test/java/org/neo4j/com/ProtocolTest.java index 9f0b3b5e1758e..f666f9e619007 100644 --- a/enterprise/com/src/test/java/org/neo4j/com/ProtocolTest.java +++ b/enterprise/com/src/test/java/org/neo4j/com/ProtocolTest.java @@ -19,21 +19,21 @@ */ package org.neo4j.com; -import org.jboss.netty.buffer.ChannelBuffer; -import org.junit.Test; - import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Collection; +import org.jboss.netty.buffer.ChannelBuffer; +import org.junit.Test; + import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.TransactionRepresentation; import org.neo4j.kernel.impl.transaction.command.Command.NodeCommand; -import org.neo4j.kernel.impl.transaction.log.InMemoryLogChannel; +import org.neo4j.kernel.impl.transaction.log.InMemoryClosableChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.storageengine.api.StorageCommand; @@ -52,7 +52,7 @@ public void shouldSerializeAndDeserializeTransactionRepresentation() throws Exce long timeStarted = 12345, lastTxWhenStarted = 12, timeCommitted = timeStarted+10; transaction.setHeader( additionalHeader, masterId, authorId, timeStarted, lastTxWhenStarted, timeCommitted, -1 ); Protocol.TransactionSerializer serializer = new Protocol.TransactionSerializer( transaction ); - ChannelBuffer buffer = new ChannelBufferWrapper( new InMemoryLogChannel() ); + ChannelBuffer buffer = new ChannelBufferWrapper( new InMemoryClosableChannel() ); // WHEN serializing the transaction serializer.write( buffer ); @@ -60,7 +60,7 @@ public void shouldSerializeAndDeserializeTransactionRepresentation() throws Exce // THEN deserializing the same transaction should yield the same data. // ... remember that this deserializer doesn't read the data source name string. Read it manually here assertEquals( NeoStoreDataSource.DEFAULT_DATA_SOURCE_NAME, Protocol.readString( buffer ) ); - VersionAwareLogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); + VersionAwareLogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); TransactionRepresentation readTransaction = new Protocol.TransactionRepresentationDeserializer( reader ) .read( buffer, ByteBuffer.allocate( 1000 ) ); assertArrayEquals( additionalHeader, readTransaction.additionalHeader() ); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/NetworkReadableLogByteBuf.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/NetworkReadableClosableByteBuf.java similarity index 93% rename from enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/NetworkReadableLogByteBuf.java rename to enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/NetworkReadableClosableByteBuf.java index 6eafe4513f736..bd220d69be6f8 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/NetworkReadableLogByteBuf.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/NetworkReadableClosableByteBuf.java @@ -24,14 +24,14 @@ import io.netty.buffer.ByteBuf; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.storageengine.api.ReadPastEndException; -public class NetworkReadableLogByteBuf implements ReadableLogChannel +public class NetworkReadableClosableByteBuf implements ReadableClosablePositionAwareChannel { private final ByteBuf delegate; - public NetworkReadableLogByteBuf( ByteBuf input ) + public NetworkReadableClosableByteBuf( ByteBuf input ) { this.delegate = input; } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPullResponseDecoder.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPullResponseDecoder.java index b2914cb54732f..6f64890c50436 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPullResponseDecoder.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/catchup/tx/edge/TxPullResponseDecoder.java @@ -53,10 +53,10 @@ protected void decode( ChannelHandlerContext ctx, ByteBuf msg, List out { StoreId storeId = new StoreIdDecoder().decode( msg ); - NetworkReadableLogByteBuf logChannel = new NetworkReadableLogByteBuf( msg ); - LogEntryReader reader = new VersionAwareLogEntryReader<>( + NetworkReadableClosableByteBuf logChannel = new NetworkReadableClosableByteBuf( msg ); + LogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); - PhysicalTransactionCursor transactionCursor = + PhysicalTransactionCursor transactionCursor = new PhysicalTransactionCursor<>( logChannel, reader ); transactionCursor.next(); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/NetworkReadableLogChannelNetty4.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/NetworkReadableClosableChannelNetty4.java similarity index 93% rename from enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/NetworkReadableLogChannelNetty4.java rename to enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/NetworkReadableClosableChannelNetty4.java index caa30fae4be98..34b683389081f 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/NetworkReadableLogChannelNetty4.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/net/NetworkReadableClosableChannelNetty4.java @@ -24,14 +24,14 @@ import io.netty.buffer.ByteBuf; import org.neo4j.kernel.impl.transaction.log.LogPositionMarker; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.storageengine.api.ReadPastEndException; -public class NetworkReadableLogChannelNetty4 implements ReadableLogChannel +public class NetworkReadableClosableChannelNetty4 implements ReadableClosablePositionAwareChannel { private final ByteBuf delegate; - public NetworkReadableLogChannelNetty4( ByteBuf input ) + public NetworkReadableClosableChannelNetty4( ByteBuf input ) { this.delegate = input; } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/token/ReplicatedTokenRequestSerializer.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/token/ReplicatedTokenRequestSerializer.java index e905515e74c14..a10d4db1dd5c9 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/token/ReplicatedTokenRequestSerializer.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/token/ReplicatedTokenRequestSerializer.java @@ -28,11 +28,11 @@ import io.netty.buffer.Unpooled; import org.neo4j.coreedge.raft.net.NetworkFlushableChannelNetty4; -import org.neo4j.coreedge.raft.net.NetworkReadableLogChannelNetty4; +import org.neo4j.coreedge.raft.net.NetworkReadableClosableChannelNetty4; import org.neo4j.coreedge.raft.replication.StringMarshal; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.transaction.command.Command; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryWriter; @@ -85,9 +85,9 @@ public static byte[] createCommandBytes( Collection commands ) public static Collection extractCommands( byte[] commandBytes ) { ByteBuf txBuffer = Unpooled.wrappedBuffer( commandBytes ); - NetworkReadableLogChannelNetty4 channel = new NetworkReadableLogChannelNetty4( txBuffer ); + NetworkReadableClosableChannelNetty4 channel = new NetworkReadableClosableChannelNetty4( txBuffer ); - LogEntryReader reader = new VersionAwareLogEntryReader<>( + LogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); LogEntryCommand entryRead; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/tx/ReplicatedTransactionFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/tx/ReplicatedTransactionFactory.java index 3e29f8b566b14..38ece941b4481 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/tx/ReplicatedTransactionFactory.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/replication/tx/ReplicatedTransactionFactory.java @@ -28,13 +28,13 @@ import io.netty.buffer.Unpooled; import org.neo4j.coreedge.raft.net.NetworkFlushableChannelNetty4; -import org.neo4j.coreedge.raft.net.NetworkReadableLogChannelNetty4; +import org.neo4j.coreedge.raft.net.NetworkReadableClosableChannelNetty4; import org.neo4j.coreedge.raft.replication.session.GlobalSession; import org.neo4j.coreedge.raft.replication.session.LocalOperationId; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.transaction.TransactionRepresentation; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryCommand; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryWriter; @@ -64,7 +64,7 @@ public static ReplicatedTransaction createImmutableReplicatedTransaction( public static TransactionRepresentation extractTransactionRepresentation( ReplicatedTransaction replicatedTransaction, byte[] extraHeader ) throws IOException { ByteBuf txBuffer = Unpooled.wrappedBuffer( replicatedTransaction.getTxBytes() ); - NetworkReadableLogChannelNetty4 channel = new NetworkReadableLogChannelNetty4( txBuffer ); + NetworkReadableClosableChannelNetty4 channel = new NetworkReadableClosableChannelNetty4( txBuffer ); return read( channel, extraHeader ); } @@ -96,9 +96,9 @@ public static void write( TransactionRepresentation tx, NetworkFlushableChannelN } } - public static TransactionRepresentation read( NetworkReadableLogChannelNetty4 channel, byte[] extraHeader ) throws IOException + public static TransactionRepresentation read( NetworkReadableClosableChannelNetty4 channel, byte[] extraHeader ) throws IOException { - LogEntryReader reader = new VersionAwareLogEntryReader<>( + LogEntryReader reader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); int authorId = channel.getInt(); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HaRequestType210.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HaRequestType210.java index 0e53965aa322d..226cec701e6cd 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HaRequestType210.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HaRequestType210.java @@ -19,10 +19,10 @@ */ package org.neo4j.kernel.ha; -import org.jboss.netty.buffer.ChannelBuffer; - import java.io.IOException; +import org.jboss.netty.buffer.ChannelBuffer; + import org.neo4j.com.Deserializer; import org.neo4j.com.ObjectSerializer; import org.neo4j.com.Protocol; @@ -38,7 +38,7 @@ import org.neo4j.kernel.ha.lock.LockResult; import org.neo4j.kernel.impl.store.id.IdRange; import org.neo4j.kernel.impl.transaction.TransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.storageengine.api.lock.ResourceType; @@ -52,7 +52,7 @@ public class HaRequestType210 extends AbstractHaRequestTypes { - public HaRequestType210( LogEntryReader entryReader ) + public HaRequestType210( LogEntryReader entryReader ) { register( Type.ALLOCATE_IDS, new TargetCaller() { diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient210.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient210.java index 7ef0fd30ff2ec..9484bebee1fd4 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient210.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient210.java @@ -19,11 +19,11 @@ */ package org.neo4j.kernel.ha; -import org.jboss.netty.buffer.ChannelBuffer; - import java.io.IOException; import java.nio.ByteBuffer; +import org.jboss.netty.buffer.ChannelBuffer; + import org.neo4j.com.Client; import org.neo4j.com.Deserializer; import org.neo4j.com.Protocol; @@ -45,11 +45,10 @@ import org.neo4j.kernel.ha.com.slave.MasterClient; import org.neo4j.kernel.ha.id.IdAllocation; import org.neo4j.kernel.ha.lock.LockResult; -import org.neo4j.kernel.impl.locking.Locks; import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.store.id.IdRange; import org.neo4j.kernel.impl.transaction.TransactionRepresentation; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.monitoring.ByteCounterMonitor; import org.neo4j.logging.LogProvider; @@ -85,7 +84,7 @@ public MasterClient210( String hostNameOrIp, int port, LogProvider logProvider, long lockReadTimeoutMillis, int maxConcurrentChannels, int chunkSize, ResponseUnpacker responseUnpacker, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, - LogEntryReader entryReader ) + LogEntryReader entryReader ) { super( hostNameOrIp, port, logProvider, storeId, MasterServer.FRAME_LENGTH, PROTOCOL_VERSION, readTimeoutMillis, maxConcurrentChannels, chunkSize, responseUnpacker, byteCounterMonitor, requestMonitor, entryReader ); @@ -97,7 +96,7 @@ public MasterClient210( String hostNameOrIp, int port, LogProvider logProvider, long lockReadTimeoutMillis, int maxConcurrentChannels, int chunkSize, ProtocolVersion protocolVersion, ResponseUnpacker responseUnpacker, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, - LogEntryReader entryReader ) + LogEntryReader entryReader ) { super( hostNameOrIp, port, logProvider, storeId, MasterServer.FRAME_LENGTH, protocolVersion, readTimeoutMillis, maxConcurrentChannels, chunkSize, responseUnpacker, byteCounterMonitor, requestMonitor, entryReader ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient214.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient214.java index 159ee66b22697..5f0c1f64826d0 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient214.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/MasterClient214.java @@ -25,10 +25,10 @@ import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.com.storecopy.ResponseUnpacker; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; -import org.neo4j.logging.LogProvider; import org.neo4j.kernel.monitoring.ByteCounterMonitor; +import org.neo4j.logging.LogProvider; import static org.neo4j.com.ProtocolVersion.INTERNAL_PROTOCOL_VERSION; @@ -39,7 +39,7 @@ public class MasterClient214 extends MasterClient210 public MasterClient214( String hostNameOrIp, int port, LogProvider logProvider, StoreId storeId, long readTimeoutSeconds, long lockReadTimeout, int maxConcurrentChannels, int chunkSize, ResponseUnpacker unpacker, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, - LogEntryReader entryReader ) + LogEntryReader entryReader ) { super( hostNameOrIp, port, logProvider, storeId, readTimeoutSeconds, lockReadTimeout, maxConcurrentChannels, chunkSize, PROTOCOL_VERSION, unpacker, byteCounterMonitor, requestMonitor, entryReader ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/DefaultSlaveFactory.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/DefaultSlaveFactory.java index 0011eb34b774b..bccf10da5dde0 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/DefaultSlaveFactory.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/DefaultSlaveFactory.java @@ -24,7 +24,7 @@ import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.kernel.ha.cluster.member.ClusterMember; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.lifecycle.LifeSupport; import org.neo4j.kernel.monitoring.ByteCounterMonitor; @@ -37,10 +37,10 @@ public class DefaultSlaveFactory implements SlaveFactory private final Monitors monitors; private final int chunkSize; private StoreId storeId; - private final Supplier> entryReader; + private final Supplier> entryReader; public DefaultSlaveFactory( LogProvider logProvider, Monitors monitors, int chunkSize, - Supplier> logEntryReader ) + Supplier> logEntryReader ) { this.logProvider = logProvider; this.monitors = monitors; diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java index 24936c6740224..a4b2e84223ca6 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/MasterServer.java @@ -27,10 +27,10 @@ import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.kernel.ha.HaRequestType210; import org.neo4j.kernel.ha.MasterClient214; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; -import org.neo4j.logging.LogProvider; import org.neo4j.kernel.monitoring.ByteCounterMonitor; +import org.neo4j.logging.LogProvider; import static org.neo4j.helpers.Clock.SYSTEM_CLOCK; @@ -47,7 +47,7 @@ public class MasterServer extends Server public MasterServer( Master requestTarget, LogProvider logProvider, Configuration config, TxChecksumVerifier txVerifier, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, ConversationManager conversationManager, - LogEntryReader entryReader ) + LogEntryReader entryReader ) { super( requestTarget, config, logProvider, FRAME_LENGTH, MasterClient214.PROTOCOL_VERSION, txVerifier, SYSTEM_CLOCK, byteCounterMonitor, requestMonitor ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/SlaveClient.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/SlaveClient.java index 556fbcfef2748..d715cf3cda022 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/SlaveClient.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/master/SlaveClient.java @@ -34,7 +34,7 @@ import org.neo4j.kernel.ha.HaSettings; import org.neo4j.kernel.ha.com.slave.SlaveServer; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.monitoring.ByteCounterMonitor; import org.neo4j.logging.LogProvider; @@ -52,7 +52,7 @@ public class SlaveClient extends Client implements Slave public SlaveClient( InstanceId machineId, String hostNameOrIp, int port, LogProvider logProvider, StoreId storeId, int maxConcurrentChannels, int chunkSize, ByteCounterMonitor byteCounterMonitor, RequestMonitor requestMonitor, - LogEntryReader entryReader ) + LogEntryReader entryReader ) { super( hostNameOrIp, port, logProvider, storeId, Protocol.DEFAULT_FRAME_LENGTH, new ProtocolVersion( SlaveServer.APPLICATION_PROTOCOL_VERSION, INTERNAL_PROTOCOL_VERSION ), diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/MasterClientResolver.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/MasterClientResolver.java index 03f3dd6c0b476..ba756b560fc7d 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/MasterClientResolver.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/com/slave/MasterClientResolver.java @@ -33,7 +33,8 @@ import org.neo4j.kernel.ha.MasterClient214; import org.neo4j.kernel.ha.com.master.InvalidEpochException; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.lifecycle.LifeSupport; import org.neo4j.kernel.monitoring.ByteCounterMonitor; @@ -49,7 +50,7 @@ public class MasterClientResolver implements MasterClientFactory, ComExceptionHa private final Log log; private final ResponseUnpacker responseUnpacker; private final InvalidEpochExceptionHandler invalidEpochHandler; - private final Supplier> logEntryReader; + private final Supplier> logEntryReader; @Override public MasterClient instantiate( String hostNameOrIp, int port, Monitors monitors, @@ -68,7 +69,7 @@ public MasterClient instantiate( String hostNameOrIp, int port, Monitors monitor public MasterClientResolver( LogProvider logProvider, ResponseUnpacker responseUnpacker, InvalidEpochExceptionHandler invalidEpochHandler, int readTimeout, int lockReadTimeout, int channels, int chunkSize, - Supplier> logEntryReader ) + Supplier> logEntryReader ) { this.logEntryReader = logEntryReader; this.log = logProvider.getLog( getClass() ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java index c217d5b33e20f..132951f8a3bce 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java @@ -138,7 +138,8 @@ import org.neo4j.kernel.impl.store.StoreId; import org.neo4j.kernel.impl.transaction.TransactionHeaderInformationFactory; import org.neo4j.kernel.impl.transaction.log.LogicalTransactionStore; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; @@ -337,7 +338,7 @@ public void elected( String role, InstanceId instanceId, URI electedMember ) // but merely provide a way to get access to it. That's why this is a Supplier and will be asked // later, after the data source module and all that have started. @SuppressWarnings( {"deprecation", "unchecked"} ) - Supplier> logEntryReader = + Supplier> logEntryReader = (Supplier) dependencies.provideDependency( LogEntryReader.class ); MasterClientResolver masterClientResolver = new MasterClientResolver( logging.getInternalLogProvider(), @@ -522,7 +523,7 @@ private CommitProcessFactory createCommitProcessFactory( Dependencies dependenci Monitors monitors, Config config, LifeSupport paxosLife, ClusterClient clusterClient, ClusterMembers members, JobScheduler jobScheduler, Master master, RequestContextFactory requestContextFactory, ComponentSwitcherContainer componentSwitcherContainer, - Supplier> logEntryReader ) + Supplier> logEntryReader ) { DefaultSlaveFactory slaveFactory = dependencies.satisfyDependency( new DefaultSlaveFactory( logging.getInternalLogProvider(), monitors, config.get( HaSettings.com_chunk_size ).intValue(), diff --git a/enterprise/ha/src/test/java/org/neo4j/ha/upgrade/MasterClientTest.java b/enterprise/ha/src/test/java/org/neo4j/ha/upgrade/MasterClientTest.java index 85aff6210eea4..edb82c2de2453 100644 --- a/enterprise/ha/src/test/java/org/neo4j/ha/upgrade/MasterClientTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/ha/upgrade/MasterClientTest.java @@ -54,7 +54,7 @@ import org.neo4j.kernel.impl.transaction.CommittedTransactionRepresentation; import org.neo4j.kernel.impl.transaction.command.Commands; import org.neo4j.kernel.impl.transaction.log.LogPosition; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryStart; import org.neo4j.kernel.impl.transaction.log.entry.OnePhaseCommit; @@ -92,7 +92,7 @@ public class MasterClientTest @Rule public final LifeRule life = new LifeRule( true ); private final Monitors monitors = new Monitors(); - private final LogEntryReader logEntryReader = + private final LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); @Test( expected = MismatchingStoreIdException.class ) diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/member/HighAvailabilitySlavesTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/member/HighAvailabilitySlavesTest.java index c489197dfbd53..ed915674b26d1 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/member/HighAvailabilitySlavesTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/member/HighAvailabilitySlavesTest.java @@ -40,7 +40,7 @@ import org.neo4j.kernel.ha.com.master.SlaveFactory; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.kernel.lifecycle.LifeSupport; @@ -165,7 +165,7 @@ public void shouldClearSlavesWhenNewMasterElected() public void shouldSupportConcurrentConsumptionOfSlaves() throws Exception { // Given - LogEntryReader logEntryReader = + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); HighAvailabilitySlaves haSlaves = new HighAvailabilitySlaves( clusterMembersOfSize( 1000 ), mock( Cluster.class ), new DefaultSlaveFactory( NullLogProvider.getInstance(), new Monitors(), 42, diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterServerTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterServerTest.java index ea9026b9bebed..086e7d8c4656d 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterServerTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/master/MasterServerTest.java @@ -27,7 +27,7 @@ import org.neo4j.com.TxChecksumVerifier; import org.neo4j.com.monitor.RequestMonitor; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.kernel.monitoring.ByteCounterMonitor; @@ -42,7 +42,7 @@ public void shouldCleanExistentLockSessionOnFinishOffChannel() throws Exception { Master master = mock( Master.class ); ConversationManager conversationManager = mock( ConversationManager.class ); - LogEntryReader logEntryReader = + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); MasterServer masterServer = new MasterServer( master, mock( LogProvider.class ), mock(Server.Configuration.class ), mock( TxChecksumVerifier.class ), diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/slave/MasterClientResolverTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/slave/MasterClientResolverTest.java index 7b20dec595ba3..38fe76f530b74 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/slave/MasterClientResolverTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/com/slave/MasterClientResolverTest.java @@ -28,7 +28,7 @@ import org.neo4j.kernel.ha.MasterClient214; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageCommandReaderFactory; import org.neo4j.kernel.impl.store.StoreId; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.kernel.lifecycle.LifeSupport; @@ -45,7 +45,7 @@ public class MasterClientResolverTest public void shouldResolveMasterClientFactory() throws Exception { // Given - LogEntryReader logEntryReader = + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); MasterClientResolver resolver = new MasterClientResolver( NullLogProvider.getInstance(), ResponseUnpacker.NO_OP_RESPONSE_UNPACKER, mock( InvalidEpochExceptionHandler.class ), 1, 1, 1, 1024, diff --git a/tools/src/main/java/org/neo4j/tools/dump/DumpLogicalLog.java b/tools/src/main/java/org/neo4j/tools/dump/DumpLogicalLog.java index 5a0a808836dc8..d6be825daa89f 100644 --- a/tools/src/main/java/org/neo4j/tools/dump/DumpLogicalLog.java +++ b/tools/src/main/java/org/neo4j/tools/dump/DumpLogicalLog.java @@ -39,9 +39,9 @@ import org.neo4j.kernel.impl.transaction.log.LogEntryCursor; import org.neo4j.kernel.impl.transaction.log.PhysicalLogFile; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogHeader; @@ -96,8 +96,8 @@ public int dump( String filenameOrDirectory, String logPrefix, PrintStream out, PhysicalLogVersionedStoreChannel channel = new PhysicalLogVersionedStoreChannel( fileChannel, logHeader.logVersion, logHeader.logFormatVersion ); - ReadableVersionableLogChannel logChannel = new ReadAheadLogChannel( channel, NO_MORE_CHANNELS ); - LogEntryReader entryReader = + VersionableReadableClosablePositionAwareChannel logChannel = new ReadAheadPositionableReadableChannel( channel, NO_MORE_CHANNELS ); + LogEntryReader entryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); try ( IOCursor cursor = new LogEntryCursor( entryReader, logChannel ) ) diff --git a/tools/src/main/java/org/neo4j/tools/rawstorereader/RsdrMain.java b/tools/src/main/java/org/neo4j/tools/rawstorereader/RsdrMain.java index b7be66da9212a..778cfa4322da3 100644 --- a/tools/src/main/java/org/neo4j/tools/rawstorereader/RsdrMain.java +++ b/tools/src/main/java/org/neo4j/tools/rawstorereader/RsdrMain.java @@ -48,9 +48,9 @@ import org.neo4j.kernel.impl.store.record.AbstractBaseRecord; import org.neo4j.kernel.impl.transaction.log.LogEntryCursor; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntry; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.LogHeader; @@ -277,8 +277,8 @@ private static IOCursor getLogCursor( String fname, NeoStores neoStore PhysicalLogVersionedStoreChannel channel = new PhysicalLogVersionedStoreChannel( fileChannel, logHeader.logVersion, logHeader.logFormatVersion ); - ReadableVersionableLogChannel logChannel = new ReadAheadLogChannel( channel, NO_MORE_CHANNELS ); - LogEntryReader logEntryReader = + VersionableReadableClosablePositionAwareChannel logChannel = new ReadAheadPositionableReadableChannel( channel, NO_MORE_CHANNELS ); + LogEntryReader logEntryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); return new LogEntryCursor( logEntryReader, logChannel ); } diff --git a/tools/src/main/java/org/neo4j/tools/rebuild/RebuildFromLogs.java b/tools/src/main/java/org/neo4j/tools/rebuild/RebuildFromLogs.java index 22013fe258edb..7f4d583397836 100644 --- a/tools/src/main/java/org/neo4j/tools/rebuild/RebuildFromLogs.java +++ b/tools/src/main/java/org/neo4j/tools/rebuild/RebuildFromLogs.java @@ -60,10 +60,10 @@ import org.neo4j.kernel.impl.transaction.log.PhysicalLogFiles; import org.neo4j.kernel.impl.transaction.log.PhysicalLogVersionedStoreChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalTransactionCursor; -import org.neo4j.kernel.impl.transaction.log.ReadAheadLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableLogChannel; -import org.neo4j.kernel.impl.transaction.log.ReadableVersionableLogChannel; +import org.neo4j.kernel.impl.transaction.log.ReadAheadPositionableReadableChannel; +import org.neo4j.kernel.impl.transaction.log.ReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.ReaderLogVersionBridge; +import org.neo4j.kernel.impl.transaction.log.VersionableReadableClosablePositionAwareChannel; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; import org.neo4j.kernel.impl.transaction.log.entry.VersionAwareLogEntryReader; import org.neo4j.kernel.impl.transaction.state.DataSourceManager; @@ -188,12 +188,12 @@ public void rebuild( File source, File target, long txId ) throws Exception private long findLastTransactionId( PhysicalLogFiles logFiles, long highestVersion ) throws IOException { - ReadableVersionableLogChannel logChannel = new ReadAheadLogChannel( + VersionableReadableClosablePositionAwareChannel logChannel = new ReadAheadPositionableReadableChannel( PhysicalLogFile.openForVersion( logFiles, fs, highestVersion ), NO_MORE_CHANNELS ); long lastTransactionId = -1; - LogEntryReader entryReader = + LogEntryReader entryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); try ( IOCursor cursor = new PhysicalTransactionCursor<>( logChannel, entryReader ) ) @@ -238,11 +238,11 @@ long applyTransactionsFrom( File sourceDir, long upToTxId ) throws Exception int startVersion = 0; ReaderLogVersionBridge versionBridge = new ReaderLogVersionBridge( fs, logFiles ); PhysicalLogVersionedStoreChannel startingChannel = openForVersion( logFiles, fs, startVersion ); - ReadableVersionableLogChannel channel = new ReadAheadLogChannel( startingChannel, versionBridge ); + VersionableReadableClosablePositionAwareChannel channel = new ReadAheadPositionableReadableChannel( startingChannel, versionBridge ); long txId = BASE_TX_ID; TransactionQueue queue = new TransactionQueue( 10_000, (tx) -> {commitProcess.commit( tx, NULL, EXTERNAL );} ); - LogEntryReader entryReader = + LogEntryReader entryReader = new VersionAwareLogEntryReader<>( new RecordStorageCommandReaderFactory() ); try ( IOCursor cursor = new PhysicalTransactionCursor<>( channel, entryReader ) )