use of org.neo4j.kernel.api.KernelTransaction in project neo4j by neo4j.
the class TransitionalTxManagementKernelTransaction method commit.
public void commit() {
try {
KernelTransaction kernelTransactionBoundToThisThread = bridge.getKernelTransactionBoundToThisThread(true);
kernelTransactionBoundToThisThread.success();
kernelTransactionBoundToThisThread.close();
} catch (TransactionFailureException e) {
throw new RuntimeException(e);
} finally {
bridge.unbindTransactionFromCurrentThread();
}
}
use of org.neo4j.kernel.api.KernelTransaction in project neo4j by neo4j.
the class CypherExecutorTest method setUpMocks.
private void setUpMocks() {
database = mock(Database.class);
databaseFacade = mock(GraphDatabaseFacade.class);
resolver = mock(DependencyResolver.class);
executionEngine = mock(ExecutionEngine.class);
statementBridge = mock(ThreadToStatementContextBridge.class);
databaseQueryService = mock(GraphDatabaseQueryService.class);
kernelTransaction = mock(KernelTransaction.class);
statement = mock(Statement.class);
request = mock(HttpServletRequest.class);
InternalTransaction transaction = new TopLevelTransaction(kernelTransaction, () -> statement);
SecurityContext securityContext = AUTH_DISABLED;
KernelTransaction.Type type = KernelTransaction.Type.implicit;
QueryRegistryOperations registryOperations = mock(QueryRegistryOperations.class);
when(statement.queryRegistration()).thenReturn(registryOperations);
when(statementBridge.get()).thenReturn(statement);
when(kernelTransaction.securityContext()).thenReturn(securityContext);
when(kernelTransaction.transactionType()).thenReturn(type);
when(database.getGraph()).thenReturn(databaseFacade);
when(databaseFacade.getDependencyResolver()).thenReturn(resolver);
when(resolver.resolveDependency(QueryExecutionEngine.class)).thenReturn(executionEngine);
when(resolver.resolveDependency(ThreadToStatementContextBridge.class)).thenReturn(statementBridge);
when(resolver.resolveDependency(GraphDatabaseQueryService.class)).thenReturn(databaseQueryService);
when(databaseQueryService.beginTransaction(type, securityContext)).thenReturn(transaction);
when(databaseQueryService.beginTransaction(type, securityContext, CUSTOM_TRANSACTION_TIMEOUT, TimeUnit.MILLISECONDS)).thenReturn(transaction);
when(databaseQueryService.getDependencyResolver()).thenReturn(resolver);
when(request.getScheme()).thenReturn("http");
when(request.getRemoteAddr()).thenReturn("127.0.0.1");
when(request.getRemotePort()).thenReturn(5678);
when(request.getServerName()).thenReturn("127.0.0.1");
when(request.getServerPort()).thenReturn(7474);
when(request.getRequestURI()).thenReturn("/");
}
use of org.neo4j.kernel.api.KernelTransaction in project neo4j by neo4j.
the class TopLevelTransactionTest method shouldThrowTransientExceptionOnTransientKernelException.
@Test
public void shouldThrowTransientExceptionOnTransientKernelException() throws Exception {
// GIVEN
KernelTransaction kernelTransaction = mock(KernelTransaction.class);
when(kernelTransaction.isOpen()).thenReturn(true);
doThrow(new TransactionFailureException(Status.Transaction.ConstraintsChanged, "Proving that TopLevelTransaction does the right thing")).when(kernelTransaction).close();
ThreadToStatementContextBridge bridge = new ThreadToStatementContextBridge();
TopLevelTransaction transaction = new TopLevelTransaction(kernelTransaction, bridge);
// WHEN
transaction.success();
try {
transaction.close();
fail("Should have failed");
} catch (TransientTransactionFailureException e) {
// THEN Good
}
}
use of org.neo4j.kernel.api.KernelTransaction in project neo4j by neo4j.
the class TopLevelTransactionTest method shouldShowTransactionTerminatedExceptionAsTransient.
@Test
public void shouldShowTransactionTerminatedExceptionAsTransient() throws Exception {
KernelTransaction kernelTransaction = mock(KernelTransaction.class);
doReturn(true).when(kernelTransaction).isOpen();
RuntimeException error = new TransactionTerminatedException(Status.Transaction.Terminated);
doThrow(error).when(kernelTransaction).close();
ThreadToStatementContextBridge bridge = new ThreadToStatementContextBridge();
TopLevelTransaction transaction = new TopLevelTransaction(kernelTransaction, bridge);
transaction.success();
try {
transaction.close();
fail("Should have failed");
} catch (Exception e) {
assertThat(e, instanceOf(TransientTransactionFailureException.class));
assertSame(error, e.getCause());
}
}
use of org.neo4j.kernel.api.KernelTransaction in project neo4j by neo4j.
the class KernelTransactionsTest method shouldListActiveTransactions.
@Test
public void shouldListActiveTransactions() throws Throwable {
// Given
KernelTransactions transactions = newTestKernelTransactions();
// When
KernelTransaction first = getKernelTransaction(transactions);
KernelTransaction second = getKernelTransaction(transactions);
KernelTransaction third = getKernelTransaction(transactions);
first.close();
// Then
assertThat(transactions.activeTransactions(), equalTo(asSet(newHandle(second), newHandle(third))));
}
Aggregations