Index: ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java (revision e09b037033b7103b60a351fe2149b517b9303e27) +++ ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java (revision 7e5de11f77c711553b446238125f2d5dad51c6fd) @@ -990,7 +990,7 @@ if (!success) break; - else if (!skipVals) + else if (!skipVals && ctx.config().isStatisticsEnabled()) metrics0().onRead(true); } Index: ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java (revision e09b037033b7103b60a351fe2149b517b9303e27) +++ ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java (revision 7e5de11f77c711553b446238125f2d5dad51c6fd) @@ -318,7 +318,7 @@ if (!success) break; - else if (!skipVals) + else if (!skipVals && ctx.config().isStatisticsEnabled()) ctx.cache().metrics0().onRead(true); } Index: ../incubator-ignite/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java (revision e09b037033b7103b60a351fe2149b517b9303e27) +++ ../incubator-ignite/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java (revision 7e5de11f77c711553b446238125f2d5dad51c6fd) @@ -103,6 +103,48 @@ /** * @throws Exception If failed. */ + public void testGetMetricsDisable() throws Exception { + // Disable statistics. + for (int i = 0; i < gridCount(); i++) { + Ignite g = grid(i); + + g.jcache(null).getConfiguration(CacheConfiguration.class).setStatisticsEnabled(false); + } + + IgniteCache jcache = grid(0).jcache(null); + + // Write to cache. + for (int i = 0; i < KEY_CNT; i++) + jcache.put(i, i); + + // Get from cache. + for (int i = 0; i < KEY_CNT; i++) + jcache.get(i); + + // Remove from cache. + for (int i = 0; i < KEY_CNT; i++) + jcache.remove(i); + + // Assert that statistics is clear. + for (int i = 0; i < gridCount(); i++) { + CacheMetrics m = grid(i).jcache(null).metrics(); + + assertEquals(m.getCacheGets(), 0); + assertEquals(m.getCachePuts(), 0); + assertEquals(m.getCacheRemovals(), 0); + assertEquals(m.getCacheHits(), 0); + assertEquals(m.getCacheMisses(), 0); + assertEquals(m.getAverageGetTime(), 0f); + assertEquals(m.getAverageRemoveTime(), 0f); + assertEquals(m.getAveragePutTime(), 0f); + assertEquals(m.getAverageTxCommitTime(), 0f); + assertEquals(m.getAverageTxRollbackTime(), 0f); + } + } + + /** + * @throws Exception If failed. + */ public void testGetMetricsSnapshot() throws Exception { IgniteCache cache = grid(0).jcache(null); Index: ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java (revision 7e5de11f77c711553b446238125f2d5dad51c6fd) +++ ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java (revision a834b8dc489032dc56ab12501b0ff0a84a70918a) @@ -460,6 +460,8 @@ /** * Transaction commit callback. + * + * @param duration the time taken in nanoseconds. */ public void onTxCommit(long duration) { txCommits.incrementAndGet(); @@ -472,6 +474,8 @@ /** * Transaction rollback callback. + * + * @param duration the time taken in nanoseconds. */ public void onTxRollback(long duration) { txRollbacks.incrementAndGet(); Index: ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java (revision e09b037033b7103b60a351fe2149b517b9303e27) +++ ../incubator-ignite/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java (revision a834b8dc489032dc56ab12501b0ff0a84a70918a) @@ -1243,7 +1243,8 @@ GridCacheContext cacheCtx = cctx.cacheContext(cacheId); if (cacheCtx.cache().configuration().isStatisticsEnabled()) - cacheCtx.cache().metrics0().onTxCommit(System.nanoTime() - tx.startTime()); + // Convert start time from ms to ns. + cacheCtx.cache().metrics0().onTxCommit(System.nanoTime() - tx.startTime() * 1000); } } @@ -1316,7 +1317,9 @@ for (int cacheId : tx.activeCacheIds()) { GridCacheContext cacheCtx = cctx.cacheContext(cacheId); - cacheCtx.cache().metrics0().onTxRollback(System.nanoTime() - tx.startTime()); + if (cacheCtx.cache().configuration().isStatisticsEnabled()) + // Convert start time from ms to ns. + cacheCtx.cache().metrics0().onTxRollback(System.nanoTime() - tx.startTime() * 1000); } }