final void stopQueryExecution( ExecutingQuery executingQuery ) { this.executingQueryList = executingQueryList.remove( executingQuery ); transaction.getStatistics().addWaitingTime( executingQuery.reportedWaitingTimeNanos() ); }
@Test public void resetTransactionStatisticsOnRelease() throws TransactionFailureException { KernelTransactionImplementation transaction = newTransaction( 1000 ); transaction.getStatistics().addWaitingTime( 1 ); transaction.getStatistics().addWaitingTime( 1 ); assertEquals( 2, transaction.getStatistics().getWaitingTimeNanos( 0 ) ); transaction.close(); assertEquals( 0, transaction.getStatistics().getWaitingTimeNanos( 0 ) ); }
public TransactionExecutionStatistic( KernelTransactionImplementation tx, SystemNanoClock clock, long startTimeMillis ) { long nowMillis = clock.millis(); long nowNanos = clock.nanos(); KernelTransactionImplementation.Statistics statistics = tx.getStatistics(); this.waitTimeMillis = NANOSECONDS.toMillis( statistics.getWaitingTimeNanos( nowNanos ) ); this.heapAllocatedBytes = nullIfNegative( statistics.heapAllocatedBytes() ); this.directAllocatedBytes = nullIfNegative( statistics.directAllocatedBytes() ); this.cpuTimeMillis = nullIfNegative( statistics.cpuTimeMillis() ); this.pageFaults = statistics.totalTransactionPageCacheFaults(); this.pageHits = statistics.totalTransactionPageCacheHits(); this.elapsedTimeMillis = nowMillis - startTimeMillis; this.idleTimeMillis = this.cpuTimeMillis != null ? elapsedTimeMillis - this.cpuTimeMillis - waitTimeMillis : null; }
@Test public void reportQueryWaitingTimeToTransactionStatisticWhenFinishQueryExecution() { KernelTransactionImplementation transaction = mock( KernelTransactionImplementation.class ); TxStateHolder txStateHolder = mock( TxStateHolder.class ); StorageReader storeStatement = mock( StorageReader.class ); KernelTransactionImplementation.Statistics statistics = new KernelTransactionImplementation.Statistics( transaction, new AtomicReference<>( CpuClock.NOT_AVAILABLE ), new AtomicReference<>( HeapAllocation.NOT_AVAILABLE ) ); when( transaction.getStatistics() ).thenReturn( statistics ); when( transaction.executingQueries() ).thenReturn( ExecutingQueryList.EMPTY ); KernelStatement statement = new KernelStatement( transaction, txStateHolder, storeStatement, LockTracer.NONE, mock( StatementOperationParts.class ), new ClockContext(), EmptyVersionContextSupplier.EMPTY ); statement.acquire(); ExecutingQuery query = getQueryWithWaitingTime(); ExecutingQuery query2 = getQueryWithWaitingTime(); ExecutingQuery query3 = getQueryWithWaitingTime(); statement.stopQueryExecution( query ); statement.stopQueryExecution( query2 ); statement.stopQueryExecution( query3 ); assertEquals( 3, statistics.getWaitingTimeNanos( 1 ) ); }
final void stopQueryExecution( ExecutingQuery executingQuery ) { this.executingQueryList = executingQueryList.remove( executingQuery ); transaction.getStatistics().addWaitingTime( executingQuery.reportedWaitingTimeNanos() ); }
public TransactionExecutionStatistic( KernelTransactionImplementation tx, SystemNanoClock clock, long startTimeMillis ) { long nowMillis = clock.millis(); long nowNanos = clock.nanos(); KernelTransactionImplementation.Statistics statistics = tx.getStatistics(); this.waitTimeMillis = NANOSECONDS.toMillis( statistics.getWaitingTimeNanos( nowNanos ) ); this.heapAllocatedBytes = nullIfNegative( statistics.heapAllocatedBytes() ); this.directAllocatedBytes = nullIfNegative( statistics.directAllocatedBytes() ); this.cpuTimeMillis = nullIfNegative( statistics.cpuTimeMillis() ); this.pageFaults = statistics.totalTransactionPageCacheFaults(); this.pageHits = statistics.totalTransactionPageCacheHits(); this.elapsedTimeMillis = nowMillis - startTimeMillis; this.idleTimeMillis = this.cpuTimeMillis != null ? elapsedTimeMillis - this.cpuTimeMillis - waitTimeMillis : null; }