You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by al...@apache.org on 2020/03/12 04:59:41 UTC
[ignite] branch master updated: IGNITE-12728 Collect time
statistics on cache#putAllAsync - Fixes #7483.
This is an automated email from the ASF dual-hosted git repository.
alexpl 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 e389bb8 IGNITE-12728 Collect time statistics on cache#putAllAsync - Fixes #7483.
e389bb8 is described below
commit e389bb8f55921855639541696930141fab5451de
Author: NSAmelchev <ns...@gmail.com>
AuthorDate: Thu Mar 12 07:54:08 2020 +0300
IGNITE-12728 Collect time statistics on cache#putAllAsync - Fixes #7483.
Signed-off-by: Aleksey Plekhanov <Pl...@gmail.com>
---
.../processors/cache/GridCacheAdapter.java | 11 ++++++++-
.../cache/GridCacheAbstractMetricsSelfTest.java | 27 ++++++++++++++++++++--
2 files changed, 35 insertions(+), 3 deletions(-)
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 265448b..d0350ca 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
@@ -3099,12 +3099,21 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
if (F.isEmpty(m))
return new GridFinishedFuture<Object>();
+ boolean statsEnabled = ctx.statisticsEnabled();
+
+ long start = statsEnabled ? System.nanoTime() : 0L;
+
if (keyCheck)
validateCacheKeys(m.keySet());
warnIfUnordered(m, BulkOperation.PUT);
- return putAllAsync0(m);
+ IgniteInternalFuture<?> fut = putAllAsync0(m);
+
+ if (statsEnabled)
+ fut.listen(new UpdatePutTimeStatClosure<Boolean>(metrics0(), start));
+
+ return fut;
}
/**
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 b6808ef..f97d3a1 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
@@ -49,12 +49,12 @@ import org.apache.ignite.internal.util.lang.GridAbsPredicateX;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.spi.metric.Metric;
-import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.transactions.Transaction;
import org.junit.Test;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.cacheMetricsRegistryName;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
/**
* Cache metrics test.
@@ -624,6 +624,29 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract
assertEquals(values.size(), cache.localMetrics().getCachePuts());
}
+ /** @throws Exception If failed. */
+ @Test
+ public void testPutAllAsyncAvgTime() throws Exception {
+ IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME);
+
+ assertEquals(0.0, cache.localMetrics().getAveragePutTime(), 0.0);
+ assertEquals(0, cache.localMetrics().getCachePuts());
+
+ Map<Integer, Integer> values = new HashMap<>();
+
+ values.put(1, 1);
+ values.put(2, 2);
+ values.put(3, 3);
+
+ IgniteFuture<Void> fut = cache.putAllAsync(values);
+
+ fut.get();
+
+ assertTrue(waitForCondition(() -> cache.localMetrics().getAveragePutTime() > 0, 30_000));
+
+ assertEquals(values.size(), cache.localMetrics().getCachePuts());
+ }
+
/**
* @throws Exception If failed.
*/
@@ -1046,7 +1069,7 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract
// Avoid reloading from store.
storeStgy.removeFromStore(key);
- assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicateX() {
+ assertTrue(waitForCondition(new GridAbsPredicateX() {
@Override public boolean applyx() {
try {
if (c.get(key) != null)