@Override public long incrementAndGetVersion() { // This method can expect synchronisation at a higher level, // and be effectively single-threaded. long pageId = pageIdForRecord( Position.LOG_VERSION.id ); long version; synchronized ( logVersionLock ) { try ( PageCursor cursor = pagedFile.io( pageId, PF_SHARED_WRITE_LOCK ) ) { if ( cursor.next() ) { incrementVersion( cursor ); } version = versionField; } catch ( IOException e ) { throw new UnderlyingStorageException( e ); } } flush(); // make sure the new version value is persisted return version; }
private void flushNeoStoreOnly() { NeoStores neoStores = ((GraphDatabaseAPI) db).getDependencyResolver() .resolveDependency( RecordStorageEngine.class ).testAccessNeoStores(); MetaDataStore metaDataStore = neoStores.getMetaDataStore(); metaDataStore.flush(); }
@Override protected void initialiseNewStoreFile( PagedFile file ) throws IOException { super.initialiseNewStoreFile( file ); long storeVersionAsLong = MetaDataStore.versionStringToLong( storeVersion ); StoreId storeId = new StoreId( storeVersionAsLong ); pagedFile = file; setCreationTime( storeId.getCreationTime() ); setRandomNumber( storeId.getRandomId() ); // If metaDataStore.creationTime == metaDataStore.upgradeTime && metaDataStore.upgradeTransactionId == BASE_TX_ID // then store has never been upgraded setUpgradeTime( storeId.getCreationTime() ); setUpgradeTransaction( BASE_TX_ID, BASE_TX_CHECKSUM, BASE_TX_COMMIT_TIMESTAMP ); setCurrentLogVersion( 0 ); setLastCommittedAndClosedTransactionId( BASE_TX_ID, BASE_TX_CHECKSUM, BASE_TX_COMMIT_TIMESTAMP, BASE_TX_LOG_BYTE_OFFSET, BASE_TX_LOG_VERSION ); setStoreVersion( storeVersionAsLong ); setGraphNextProp( -1 ); setLatestConstraintIntroducingTx( 0 ); flush(); pagedFile = null; }
@Override public long incrementAndGetVersion() { // This method can expect synchronisation at a higher level, // and be effectively single-threaded. long pageId = pageIdForRecord( Position.LOG_VERSION.id ); long version; synchronized ( logVersionLock ) { try ( PageCursor cursor = pagedFile.io( pageId, PF_SHARED_WRITE_LOCK ) ) { if ( cursor.next() ) { incrementVersion( cursor ); } version = versionField; } catch ( IOException e ) { throw new UnderlyingStorageException( e ); } } flush(); // make sure the new version value is persisted return version; }
@Override protected void initialiseNewStoreFile( PagedFile file ) throws IOException { super.initialiseNewStoreFile( file ); long storeVersionAsLong = MetaDataStore.versionStringToLong( storeVersion ); StoreId storeId = new StoreId( storeVersionAsLong ); pagedFile = file; setCreationTime( storeId.getCreationTime() ); setRandomNumber( storeId.getRandomId() ); // If metaDataStore.creationTime == metaDataStore.upgradeTime && metaDataStore.upgradeTransactionId == BASE_TX_ID // then store has never been upgraded setUpgradeTime( storeId.getCreationTime() ); setUpgradeTransaction( BASE_TX_ID, BASE_TX_CHECKSUM, BASE_TX_COMMIT_TIMESTAMP ); setCurrentLogVersion( 0 ); setLastCommittedAndClosedTransactionId( BASE_TX_ID, BASE_TX_CHECKSUM, BASE_TX_COMMIT_TIMESTAMP, BASE_TX_LOG_BYTE_OFFSET, BASE_TX_LOG_VERSION ); setStoreVersion( storeVersionAsLong ); setGraphNextProp( -1 ); setLatestConstraintIntroducingTx( 0 ); flush(); pagedFile = null; }