This is an automated email from the ASF dual-hosted git repository. namelchev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new 7366008 IGNITE-15667 Add time metrics and statistics for the IgniteCache#getAllOutTx (#9493) 7366008 is described below commit 7366008a05ec66c49476b2f54dddc0cd73640f68 Author: Nikita Amelchev <nsamelc...@gmail.com> AuthorDate: Thu Oct 14 14:06:41 2021 +0300 IGNITE-15667 Add time metrics and statistics for the IgniteCache#getAllOutTx (#9493) --- .../internal/processors/cache/GridCacheAdapter.java | 15 ++++++++++++++- .../cache/GridCacheAbstractMetricsSelfTest.java | 18 ++++++++++++++++++ .../PerformanceStatisticsSelfTest.java | 3 +++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index 2bb176f..5a6bc97 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@ -1418,11 +1418,16 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V /** {@inheritDoc} */ @Override public final IgniteInternalFuture<Map<K, V>> getAllOutTxAsync(Set<? extends K> keys) { + final boolean statsEnabled = ctx.statisticsEnabled(); + final boolean performanceStatsEnabled = ctx.kernalContext().performanceStatistics().enabled(); + + final long start = statsEnabled || performanceStatsEnabled ? System.nanoTime() : 0L; + String taskName = ctx.kernalContext().job().currentTaskName(); CacheOperationContext opCtx = ctx.operationContextPerCall(); - return repairableGetAllAsync(keys, + IgniteInternalFuture<Map<K, V>> fut = repairableGetAllAsync(keys, !ctx.config().isReadFromBackup(), /*skip tx*/true, taskName, @@ -1431,6 +1436,14 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V opCtx != null && opCtx.readRepair(), /*skip values*/false, /*need ver*/false); + + if (statsEnabled) + fut.listen(new UpdateGetAllTimeStatClosure<>(metrics0(), start)); + + if (performanceStatsEnabled) + fut.listen(f -> writeStatistics(OperationType.CACHE_GET_ALL, start)); + + return fut; } /** {@inheritDoc} */ diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java index 2c00330..caa0015 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java @@ -1507,6 +1507,24 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract assertEquals(2, stream(removeTime.value()).sum()); } + /** */ + @Test + public void testGetAllOutTx() throws Exception { + IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME); + + HistogramMetricImpl getAllTime = metric("GetAllTime"); + + assertTrue(stream(getAllTime.value()).allMatch(v -> v == 0)); + + cache.getAllOutTx(singleton(1)); + + assertTrue(waitForCondition(() -> stream(getAllTime.value()).sum() == 1, getTestTimeout())); + + cache.getAllOutTxAsync(singleton(1)).get(); + + assertTrue(waitForCondition(() -> stream(getAllTime.value()).sum() == 2, getTestTimeout())); + } + /** * @param name Metric name to find. * @return Metric. diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsSelfTest.java index 396f5ee..f28c2c0 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsSelfTest.java @@ -205,6 +205,9 @@ public class PerformanceStatisticsSelfTest extends AbstractPerformanceStatistics checkCacheOperation(CACHE_GET_ALL, cache -> cache.getAll(Collections.singleton(1))); checkCacheOperation(CACHE_GET_ALL, cache -> cache.getAllAsync(Collections.singleton(2)).get()); + checkCacheOperation(CACHE_GET_ALL, cache -> cache.getAllOutTx(Collections.singleton(1))); + checkCacheOperation(CACHE_GET_ALL, cache -> cache.getAllOutTxAsync(Collections.singleton(2)).get()); + checkCacheOperation(CACHE_REMOVE, cache -> cache.remove(1)); checkCacheOperation(CACHE_REMOVE, cache -> cache.removeAsync(2).get());