Evgenii Zhuravlev created IGNITE-11695: ------------------------------------------
Summary: AverageGetTime metric doesn't work properly with ScanQuery predicate Key: IGNITE-11695 URL: https://issues.apache.org/jira/browse/IGNITE-11695 Project: Ignite Issue Type: Bug Reporter: Evgenii Zhuravlev In *GridCacheQueryManager.advance* method *start* variable is set only once, at the start of executing the method, while metrics.onRead inside this method could be executed multiple times in case if Predicate returns false: Reproducer: {code:java} public class ExampleNodeStartup { private static int FILTER_COUNT = 100000; /** * Start up an empty node with example compute configuration. * * @param args Command line arguments, none required. * @throws IgniteException If failed. */ public static void main(String[] args) throws IgniteException { Ignite ignite = Ignition.start(); IgniteCache cache = ignite.getOrCreateCache(new CacheConfiguration<>("test").setStatisticsEnabled(true)); for (int i = 0; i < 100000; i++) cache.put(i, i); long start = System.currentTimeMillis(); Iterator it = cache.query(new ScanQuery().setFilter(new IgniteBiPredicate() { @Override public boolean apply(Object o, Object o2) { if ((int)o2 % FILTER_COUNT == 0) return true; return false; } })).iterator(); while (it.hasNext()) System.out.println("iterator value: " + it.next()); System.out.println("Execution time: " + (System.currentTimeMillis() - start)); System.out.println("GETS: " + cache.metrics().getCacheGets()); System.out.println("GET times: " + cache.metrics().getAverageGetTime()); } } {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)