IGNITE-3443 WIP on metrics.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/60eea11a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/60eea11a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/60eea11a Branch: refs/heads/ignite-3443 Commit: 60eea11ad22a86f5b783937b4669439692a61d49 Parents: 51ef112 Author: Alexey Kuznetsov <[email protected]> Authored: Thu Jul 28 17:08:04 2016 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Thu Jul 28 17:08:04 2016 +0700 ---------------------------------------------------------------------- .../cache/query/GridCacheQueryManager.java | 35 ++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/60eea11a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java index c366877..4073652 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java @@ -38,7 +38,9 @@ import java.util.Queue; import java.util.Set; import java.util.UUID; import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicInteger; import javax.cache.Cache; import javax.cache.expiry.ExpiryPolicy; import org.apache.ignite.Ignite; @@ -150,6 +152,12 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte private volatile GridCacheQueryMetricsAdapter metrics = new GridCacheQueryMetricsAdapter(); /** */ + private volatile ConcurrentHashMap<String, String> latestQueryMetrics = new ConcurrentHashMap<>(); + + /** */ + private volatile ConcurrentHashMap<String, AtomicInteger> aggregatedQueryMetrics = new ConcurrentHashMap<>(); + + /** */ private final ConcurrentMap<UUID, RequestFutureMap> qryIters = new ConcurrentHashMap8<>(); @@ -2061,6 +2069,8 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte */ public void resetMetrics() { metrics = new GridCacheQueryMetricsAdapter(); + latestQueryMetrics = new ConcurrentHashMap<>(); + aggregatedQueryMetrics = new ConcurrentHashMap<>(); } /** @@ -2077,9 +2087,30 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte * @param fail {@code true} if execution failed. */ public void onCompleted(CacheQueryType qryType, String qry, long duration, boolean fail) { - log.warning("Query type: " + qryType + ", query: " + qry); - metrics.onQueryCompleted(duration, fail); + + latestQueryMetrics.put(qry, "Query [type=" + qryType + ", duration=" + duration + ", fail=" + fail + "]"); + + if (!aggregatedQueryMetrics.containsKey(qry)) + aggregatedQueryMetrics.putIfAbsent(qry, new AtomicInteger()); + + aggregatedQueryMetrics.get(qry).incrementAndGet(); + + log.warning(">>> ---------------------------- <<<"); + + log.warning("latestQueryMetrics"); + + for (Map.Entry<String, String> entry : latestQueryMetrics.entrySet()) + log.warning(" Query: " + entry.getKey() + " -> " + entry.getValue()); + + log.warning(">>> ============================ <<<"); + + log.warning("aggregatedQueryMetrics"); + + for (Map.Entry<String, AtomicInteger> entry : aggregatedQueryMetrics.entrySet()) + log.warning(" Query: " + entry.getKey() + " -> " + entry.getValue()); + + log.warning(">>> ---------------------------- <<<"); } /**
