@Override public final void terminate() { this.transaction.markForTermination( Status.Transaction.Terminated ); }
@Override public void terminate() { currentTransaction.markForTermination( Status.Transaction.Terminated ); }
@Override public void markCurrentTransactionForTermination() { KernelTransaction tx = ctx.currentTransaction; if ( tx != null ) { tx.markForTermination( Status.Transaction.Terminated ); } }
@Override public void terminate() { ktx.markForTermination( Status.Transaction.Terminated ); }
@Override public void markForTermination( Status reason ) { internal.markForTermination( reason ); }
@Override protected void terminate( Transaction transaction ) { ((KernelTransaction) transaction).markForTermination( Status.Transaction.Terminated ); } }
@Override public boolean markForTermination( Status reason ) { tx.markForTermination( reason ); return true; }
@Test public void shouldIgnoreTerminationDuringRollback() throws Exception { KernelTransaction transaction = newTransaction( loginContext() ); transactionInitializer.accept( transaction ); transaction.markForTermination( Status.General.UnknownError ); transaction.close(); // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( false, isWriteTx ); verify( transactionMonitor, times( 1 ) ).transactionTerminated( isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
@Test public void shouldNotMarkForTerminationWhenNoTransaction() throws Exception { KernelTransaction transaction = newTransaction(); TransactionStateMachineV1SPI stateMachineSPI = newTransactionStateMachineSPI( transaction ); TransactionStateMachine stateMachine = newTransactionStateMachine( stateMachineSPI ); stateMachine.markCurrentTransactionForTermination(); verify( transaction, never() ).markForTermination( any() ); }
@Test public void shouldIgnoreTerminateAfterRollback() throws Exception { KernelTransaction transaction = newTransaction( loginContext() ); transactionInitializer.accept( transaction ); transaction.close(); transaction.markForTermination( Status.General.UnknownError ); // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( false, isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
@Test public void shouldRollbackOnClosingSuccessfulButTerminatedTransaction() throws Exception { try ( KernelTransaction transaction = newTransaction( loginContext() ) ) { // WHEN transactionInitializer.accept( transaction ); transaction.markForTermination( Status.General.UnknownError ); assertEquals( Status.General.UnknownError, transaction.getReasonIfTerminated().get() ); } // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( false, isWriteTx ); verify( transactionMonitor, times( 1 ) ).transactionTerminated( isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
@Test public void shouldIgnoreTerminateAfterCommit() throws Exception { KernelTransaction transaction = newTransaction( loginContext() ); transactionInitializer.accept( transaction ); transaction.success(); transaction.close(); transaction.markForTermination( Status.General.UnknownError ); // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( true, isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
@Test public void shouldNotDowngradeFailureState() throws Exception { try ( KernelTransaction transaction = newTransaction( loginContext() ) ) { // WHEN transactionInitializer.accept( transaction ); transaction.markForTermination( Status.General.UnknownError ); transaction.failure(); assertEquals( Status.General.UnknownError, transaction.getReasonIfTerminated().get() ); } // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( false, isWriteTx ); verify( transactionMonitor, times( 1 ) ).transactionTerminated( isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
@Test( expected = TransactionTerminatedException.class ) public void shouldThrowOnTerminationInCommit() throws Exception { KernelTransaction transaction = newTransaction( loginContext() ); transactionInitializer.accept( transaction ); transaction.success(); transaction.markForTermination( Status.General.UnknownError ); transaction.close(); }
@Test public void shouldRollbackOnClosingTerminatedTransaction() { // GIVEN KernelTransaction transaction = newTransaction( loginContext() ); transactionInitializer.accept( transaction ); transaction.success(); transaction.markForTermination( Status.General.UnknownError ); try { // WHEN transaction.close(); fail( "Exception expected" ); } catch ( Exception e ) { assertThat( e, instanceOf( TransactionTerminatedException.class ) ); } // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( false, isWriteTx ); verify( transactionMonitor, times( 1 ) ).transactionTerminated( isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
@Test public void shouldRollbackOnClosingTerminatedButSuccessfulTransaction() { // GIVEN KernelTransaction transaction = newTransaction( loginContext() ); transactionInitializer.accept( transaction ); transaction.markForTermination( Status.General.UnknownError ); transaction.success(); assertEquals( Status.General.UnknownError, transaction.getReasonIfTerminated().get() ); try { // WHEN transaction.close(); fail( "Exception expected" ); } catch ( Exception e ) { assertThat( e, instanceOf( TransactionTerminatedException.class ) ); } // THEN verify( transactionMonitor, times( 1 ) ).transactionFinished( false, isWriteTx ); verify( transactionMonitor, times( 1 ) ).transactionTerminated( isWriteTx ); verifyExtraInteractionWithTheMonitor( transactionMonitor, isWriteTx ); }
transaction.markForTermination( Status.General.UnknownError ); latch.finish(); } );
@Test( expected = TransactionTerminatedException.class ) public void shouldThrowTerminateExceptionWhenTransactionTerminated() throws KernelException { KernelTransaction transaction = newTransaction( AnonymousContext.write() ); transaction.success(); transaction.markForTermination( Status.General.UnknownError ); transactionOperation.operate( transaction.dataRead(), transaction.dataWrite(), transaction.schemaRead() ); }
@Override public void terminate() { currentTransaction.markForTermination( Status.Transaction.Terminated ); }
@Override public void terminate() { ktx.markForTermination( Status.Transaction.Terminated ); }