public TransactionFacade(TransitionalPeriodTransactionMessContainer kernel, QueryExecutionEngine engine, GraphDatabaseQueryService queryService, TransactionRegistry registry, LogProvider logProvider) { this._kernel = kernel; this._engine = engine; this._queryService = queryService; this._registry = registry; this._logProvider = logProvider; }
internal TransactionHandle(TransitionalPeriodTransactionMessContainer txManagerFacade, QueryExecutionEngine engine, GraphDatabaseQueryService queryService, TransactionRegistry registry, TransactionUriScheme uriScheme, bool implicitTransaction, LoginContext loginContext, long customTransactionTimeout, LogProvider logProvider) { this._txManagerFacade = txManagerFacade; this._engine = engine; this._queryService = queryService; this._registry = registry; this._uriScheme = uriScheme; this._type = implicitTransaction ? Transaction_Type.@implicit : Transaction_Type.@explicit; this._loginContext = loginContext; this._customTransactionTimeout = customTransactionTimeout; this._log = logProvider.getLog(this.GetType()); this._id = registry.Begin(this); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldLogMessageIfCommitErrorOccurs() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldLogMessageIfCommitErrorOccurs() { // given TransitionalPeriodTransactionMessContainer kernel = MockKernel(); TransitionalTxManagementKernelTransaction transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1); doThrow(new System.NullReferenceException()).when(transactionContext).commit(); LogProvider logProvider = mock(typeof(LogProvider)); Log log = mock(typeof(Log)); when(logProvider.GetLog(typeof(TransactionHandle))).thenReturn(log); TransactionRegistry registry = mock(typeof(TransactionRegistry)); QueryExecutionEngine engine = mock(typeof(QueryExecutionEngine)); Result executionResult = mock(typeof(Result)); TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel); when(engine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(executionResult); when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L); GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService)); TransactionHandle handle = new TransactionHandle(kernel, engine, queryService, registry, uriScheme, false, AUTH_DISABLED, anyLong(), logProvider); ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer)); // when Statement statement = new Statement("query", map(), false, (ResultDataContent[])null); handle.Commit(statements(statement), output, mock(typeof(HttpServletRequest))); // then verify(log).error(eq("Failed to commit transaction."), any(typeof(System.NullReferenceException))); verify(registry).forget(1337L); InOrder outputOrder = inOrder(output); outputOrder.verify(output).statementResult(executionResult, false, ( ResultDataContent[] )null); outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification))); outputOrder.verify(output).errors(argThat(HasErrors(Org.Neo4j.Kernel.Api.Exceptions.Status_Transaction.TransactionCommitFailed))); outputOrder.verify(output).finish(); verifyNoMoreInteractions(output); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldResumeTransactionWhenExecutingStatementsOnSecondRequest() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldResumeTransactionWhenExecutingStatementsOnSecondRequest() { // given TransitionalPeriodTransactionMessContainer kernel = MockKernel(); TransitionalTxManagementKernelTransaction transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1); TransactionRegistry registry = mock(typeof(TransactionRegistry)); QueryExecutionEngine executionEngine = mock(typeof(QueryExecutionEngine)); TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel); when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L); TransactionHandle handle = GetTransactionHandle(kernel, executionEngine, registry); ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer)); handle.Execute(statements(new Statement("query", map(), false, (ResultDataContent[])null)), output, mock(typeof(HttpServletRequest))); reset(transactionContext, registry, executionEngine, output); Result executionResult = mock(typeof(Result)); when(executionEngine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(executionResult); // when handle.Execute(statements(new Statement("query", map(), false, (ResultDataContent[])null)), output, mock(typeof(HttpServletRequest))); // then InOrder order = inOrder(transactionContext, registry, executionEngine); order.verify(transactionContext).resumeSinceTransactionsAreStillThreadBound(); order.verify(executionEngine).executeQuery("query", NoParams, transactionalContext); order.verify(transactionContext).suspendSinceTransactionsAreStillThreadBound(); order.verify(registry).release(1337L, handle); InOrder outputOrder = inOrder(output); outputOrder.verify(output).transactionCommitUri(uriScheme.txCommitUri(1337)); outputOrder.verify(output).statementResult(executionResult, false, ( ResultDataContent[] )null); outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification))); outputOrder.verify(output).transactionStatus(anyLong()); outputOrder.verify(output).errors(argThat(HasNoErrors())); outputOrder.verify(output).finish(); verifyNoMoreInteractions(output); }
internal void Commit(Transaction transaction, IList <ITableSource> visibleTables, IEnumerable <ITableSource> selectedFromTables, IEnumerable <IMutableTable> touchedTables, TransactionRegistry journal) { var state = new TransactionWork(this, transaction, selectedFromTables, touchedTables, journal); // Exit early if nothing changed (this is a Read-only transaction) if (!state.HasChanges) { CloseTransaction(state.Transaction); return; } lock (commitLock) { var changedTablesList = state.Commit(objectStates); // Flush the journals up to the minimum commit id for all the tables // that this transaction changed. long minCommitId = Database.TransactionFactory.OpenTransactions.MinimumCommitId(null); foreach (var master in changedTablesList) { master.MergeChanges(minCommitId); } int nsjsz = objectStates.Count; for (int i = nsjsz - 1; i >= 0; --i) { var namespaceJournal = objectStates[i]; // Remove if the commit id for the journal is less than the minimum // commit id if (namespaceJournal.CommitId < minCommitId) { objectStates.RemoveAt(i); } } // Set a check point in the store system. This means that the // persistance state is now stable. StoreSystem.SetCheckPoint(); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldCommitTransactionAndTellRegistryToForgetItsHandle() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldCommitTransactionAndTellRegistryToForgetItsHandle() { // given TransitionalPeriodTransactionMessContainer kernel = MockKernel(); TransitionalTxManagementKernelTransaction transactionContext = kernel.NewTransaction(@explicit, AUTH_DISABLED, -1); TransactionRegistry registry = mock(typeof(TransactionRegistry)); QueryExecutionEngine engine = mock(typeof(QueryExecutionEngine)); TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel); Result result = mock(typeof(Result)); when(engine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(result); when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L); GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService)); TransactionHandle handle = new TransactionHandle(kernel, engine, queryService, registry, uriScheme, false, AUTH_DISABLED, anyLong(), NullLogProvider.Instance); ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer)); // when Statement statement = new Statement("query", map(), false, (ResultDataContent[])null); handle.Commit(statements(statement), output, mock(typeof(HttpServletRequest))); // then InOrder transactionOrder = inOrder(transactionContext, registry); transactionOrder.verify(transactionContext).commit(); transactionOrder.verify(registry).forget(1337L); InOrder outputOrder = inOrder(output); outputOrder.verify(output).statementResult(result, false, ( ResultDataContent[] )null); outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification))); outputOrder.verify(output).errors(argThat(HasNoErrors())); outputOrder.verify(output).finish(); verifyNoMoreInteractions(output); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldInterruptTransaction() public virtual void ShouldInterruptTransaction() { // given TransitionalPeriodTransactionMessContainer kernel = MockKernel(); TransitionalTxManagementKernelTransaction tx = mock(typeof(TransitionalTxManagementKernelTransaction)); when(kernel.NewTransaction(any(typeof(Transaction_Type)), any(typeof(LoginContext)), anyLong())).thenReturn(tx); TransactionRegistry registry = mock(typeof(TransactionRegistry)); when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L); QueryExecutionEngine executionEngine = mock(typeof(QueryExecutionEngine)); TransactionHandle handle = GetTransactionHandle(kernel, executionEngine, registry); ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer)); Statement statement = new Statement("MATCH (n) RETURN n", map(), false, (ResultDataContent[])null); handle.Execute(statements(statement), output, mock(typeof(HttpServletRequest))); // when handle.Terminate(); // then verify(tx, times(1)).terminate(); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void shouldCreateTransactionContextOnlyWhenFirstNeeded() throws Exception //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: public virtual void ShouldCreateTransactionContextOnlyWhenFirstNeeded() { // given TransitionalPeriodTransactionMessContainer kernel = MockKernel(); ExecutionResultSerializer output = mock(typeof(ExecutionResultSerializer)); TransactionRegistry registry = mock(typeof(TransactionRegistry)); // when QueryExecutionEngine engine = mock(typeof(QueryExecutionEngine)); Result executionResult = mock(typeof(Result)); TransactionalContext transactionalContext = PrepareKernelWithQuerySession(kernel); when(engine.ExecuteQuery("query", NoParams, transactionalContext)).thenReturn(executionResult); when(registry.Begin(any(typeof(TransactionHandle)))).thenReturn(1337L); GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService)); TransactionHandle handle = new TransactionHandle(kernel, engine, queryService, registry, uriScheme, true, AUTH_DISABLED, anyLong(), NullLogProvider.Instance); // then verifyZeroInteractions(kernel); // when handle.Execute(statements(new Statement("query", map(), false, (ResultDataContent[])null)), output, mock(typeof(HttpServletRequest))); // then verify(kernel).newTransaction(any(typeof(Transaction_Type)), any(typeof(LoginContext)), anyLong()); InOrder outputOrder = inOrder(output); outputOrder.verify(output).transactionCommitUri(uriScheme.txCommitUri(1337)); outputOrder.verify(output).statementResult(executionResult, false, ( ResultDataContent[] )null); outputOrder.verify(output).notifications(anyCollectionOf(typeof(Notification))); outputOrder.verify(output).transactionStatus(anyLong()); outputOrder.verify(output).errors(argThat(HasNoErrors())); outputOrder.verify(output).finish(); verifyNoMoreInteractions(output); }
internal void Rollback(Transaction transaction, IList <IMutableTable> touchedTables, TransactionRegistry journal) { // Go through the journal. Any rows added should be marked as deleted // in the respective master table. // Get individual journals for updates made to tables in this // transaction. // The list MasterTableJournal var journalList = new List <TableEventRegistry>(); for (int i = 0; i < touchedTables.Count; ++i) { var tableJournal = touchedTables[i].EventRegistry; if (tableJournal.EventCount > 0) // Check the journal has entries. { journalList.Add(tableJournal); } } var changedTables = journalList.ToArray(); lock (commitLock) { try { // For each change to each table, foreach (var changeJournal in changedTables) { // The table the changes were made to. int tableId = changeJournal.TableId; // Get the master table with this table id. var master = GetTableSource(tableId); // Commit the rollback on the table. master.RollbackTransactionChange(changeJournal); } } finally { // Notify the conglomerate that this transaction has closed. CloseTransaction(transaction); } } }
private TransactionHandle GetTransactionHandle(TransitionalPeriodTransactionMessContainer kernel, QueryExecutionEngine executionEngine, TransactionRegistry registry) { GraphDatabaseQueryService queryService = mock(typeof(GraphDatabaseQueryService)); return(new TransactionHandle(kernel, executionEngine, queryService, registry, uriScheme, true, AUTH_DISABLED, anyLong(), NullLogProvider.Instance)); }