@Override public void start() { threshold.initialize( transactionIdStore.getLastClosedTransactionId() ); }
public long lastClosedTxId() { return gdb.getDependencyResolver().resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); }
private static TransactionIdStore fixedTxIdStore( long lastClosedTransactionId ) { TransactionIdStore txIdStore = mock( TransactionIdStore.class ); when( txIdStore.getLastClosedTransactionId() ).thenReturn( lastClosedTransactionId ); return txIdStore; }
@Override public long checkPointIfNeeded( TriggerInfo info ) throws IOException { if ( threshold.isCheckPointingNeeded( transactionIdStore.getLastClosedTransactionId(), info ) ) { try ( LogCheckPointEvent event = tracer.beginCheckPoint(); Resource lock = mutex.checkPoint() ) { return doCheckPoint( info, event ); } } return -1; }
private void mockTxIdStore() { long[] triggerCommittedTransaction = {transactionId, logPosition.getLogVersion(), logPosition.getByteOffset()}; when( txIdStore.getLastClosedTransaction() ).thenReturn( triggerCommittedTransaction ); when( txIdStore.getLastClosedTransactionId() ).thenReturn( initialTransactionId, transactionId, transactionId ); }
@Test public void shouldReturnNewestTransactionId() { when( transactionIdStore.getLastClosedTransactionId() ).thenReturn( 42L ); when( transactionIdStore.getLastCommittedTransactionId() ).thenReturn( 4242L ); assertEquals( 4242L, transactionIdTracker.newestEncounteredTxId() ); } }
private static long lastCommittedTxId( GraphDatabaseService db ) { return ((GraphDatabaseAPI)db).getDependencyResolver().resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); }
transactionIdStore().getLastClosedTransactionId() );
private long getLastClosedTransactionId() { DependencyResolver resolver = ((GraphDatabaseAPI) server.graphDatabaseService()).getDependencyResolver(); TransactionIdStore txIdStore = resolver.resolveDependency( TransactionIdStore.class ); return txIdStore.getLastClosedTransactionId(); } }
@Test public void begin_and_execute_periodic_commit_that_returns_data_and_commit() throws Exception { int nodes = 11; int batchSize = 2; ServerTestUtils.withCSVFile( nodes, url -> { long nodesInDatabaseBeforeTransaction = countNodes(); long txIdBefore = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); // begin and execute and commit Response response = http.POST( "db/data/transaction/commit", quotedJson( "{ 'statements': [ { 'statement': 'USING PERIODIC COMMIT " + batchSize + " LOAD CSV FROM " + "\\\"" + url + "\\\" AS line CREATE (n {id1: 23}) RETURN n' } ] }" ) ); long txIdAfter = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); assertThat( response.status(), equalTo( 200 ) ); assertThat( response, containsNoErrors() ); JsonNode columns = response.get( "results" ).get( 0 ).get( "columns" ); assertThat( columns.toString(), equalTo( "[\"n\"]" ) ); assertThat( countNodes(), equalTo( nodesInDatabaseBeforeTransaction + nodes ) ); long nBatches = (nodes / batchSize) + 1; long expectedTxCount = nBatches + 1; // tx which create the property key token `id` assertThat( txIdAfter - txIdBefore, equalTo( expectedTxCount ) ); } ); }
txIdBefore = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); long txIdAfter = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId();
@Test public void begin_and_execute_cypher_23_periodic_commit_that_returns_data_and_commit() throws Exception { // to get rid off the property key id creation in the actual test try ( Transaction tx = graphdb().beginTx() ) { Node node = graphdb().createNode(); node.setProperty( "id", 42 ); } int nodes = 11; int batch = 2; ServerTestUtils.withCSVFile( nodes, url -> { long nodesInDatabaseBeforeTransaction = countNodes(); long txIdBefore = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); // begin and execute and commit Response response = http.POST( "db/data/transaction/commit", quotedJson( "{ 'statements': [ { 'statement': 'CYPHER 2.3 USING PERIODIC COMMIT " + batch + " LOAD CSV FROM" + " \\\"" + url + "\\\" AS line CREATE (n {id: 23}) RETURN n' } ] }" ) ); long txIdAfter = resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); assertThat( response.status(), equalTo( 200 ) ); assertThat( response, containsNoErrors() ); JsonNode columns = response.get( "results" ).get( 0 ).get( "columns" ); assertThat( columns.toString(), equalTo( "[\"n\"]" ) ); assertThat( countNodes(), equalTo( nodesInDatabaseBeforeTransaction + nodes ) ); assertThat( txIdAfter, equalTo( txIdBefore + ((nodes / batch) + 1) ) ); } ); }
@Test public void evenTruncateNewerTransactionLogFile() throws IOException { GraphDatabaseAPI database = (GraphDatabaseAPI) databaseFactory.newEmbeddedDatabase( storeDir ); TransactionIdStore transactionIdStore = getTransactionIdStore( database ); long lastClosedTransactionBeforeStart = transactionIdStore.getLastClosedTransactionId(); for ( int i = 0; i < 10; i++ ) { generateTransaction( database ); } long numberOfClosedTransactions = getTransactionIdStore( database ).getLastClosedTransactionId() - lastClosedTransactionBeforeStart; database.shutdown(); removeLastCheckpointRecordFromLastLogFile(); addRandomBytesToLastLogFile( this::randomBytes ); database = startDbNoRecoveryOfCorruptedLogs(); database.shutdown(); assertEquals( numberOfClosedTransactions, recoveryMonitor.getNumberOfRecoveredTransactions() ); }
TransactionIdStore txIdStore = getDependency( TransactionIdStore.class ); assertEquals( "NeoStore last closed transaction id should be equal last count store rotation transaction id.", txIdStore.getLastClosedTransactionId(), lastRotationTx ); assertEquals( "Last closed transaction should be last rotated tx in count store", txIdStore.getLastClosedTransactionId(), neoStores.getCounts().txId() );
long lastClosedTransactionBeforeStart = transactionIdStore.getLastClosedTransactionId(); for ( int i = 0; i < 10; i++ ) long numberOfTransactions = transactionIdStore.getLastClosedTransactionId() - lastClosedTransactionBeforeStart; database.shutdown();
long lastClosedTransactionBeforeStart = transactionIdStore.getLastClosedTransactionId(); generateTransactionsAndRotate( database, 3 ); for ( int i = 0; i < 7; i++ ) long numberOfTransactions = transactionIdStore.getLastClosedTransactionId() - lastClosedTransactionBeforeStart; database.shutdown();
@Test public void truncateNewerTransactionLogFileWhenForced() throws IOException { GraphDatabaseAPI database = (GraphDatabaseAPI) databaseFactory.newEmbeddedDatabase( storeDir ); for ( int i = 0; i < 10; i++ ) { generateTransaction( database ); } TransactionIdStore transactionIdStore = getTransactionIdStore( database ); long numberOfClosedTransactions = transactionIdStore.getLastClosedTransactionId() - 1; database.shutdown(); removeLastCheckpointRecordFromLastLogFile(); addRandomBytesToLastLogFile( this::randomBytes ); database = startDbNoRecoveryOfCorruptedLogs(); database.shutdown(); logProvider.assertContainsMessageContaining( "Fail to read transaction log version 0." ); logProvider.assertContainsMessageContaining( "Fail to read transaction log version 0. Last valid transaction start offset is: 5668." ); assertEquals( numberOfClosedTransactions, recoveryMonitor.getNumberOfRecoveredTransactions() ); }
@Override public void start() { threshold.initialize( transactionIdStore.getLastClosedTransactionId() ); }
public long lastClosedTxId() { return gdb.getDependencyResolver().resolveDependency( TransactionIdStore.class ).getLastClosedTransactionId(); }
@Override public long checkPointIfNeeded( TriggerInfo info ) throws IOException { if ( threshold.isCheckPointingNeeded( transactionIdStore.getLastClosedTransactionId(), info ) ) { try ( LogCheckPointEvent event = tracer.beginCheckPoint(); Resource lock = mutex.checkPoint() ) { return doCheckPoint( info, event ); } } return -1; }