IGNITE-49 Implemented disabled/enabled statistics.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/34593673 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/34593673 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/34593673 Branch: refs/heads/ignite-49 Commit: 345936732622ed445082a535be352f000e0e745b Parents: 3173353 Author: nikolay_tikhonov <ntikho...@gridgain.com> Authored: Mon Jan 12 17:26:19 2015 +0300 Committer: nikolay_tikhonov <ntikho...@gridgain.com> Committed: Fri Jan 16 14:13:35 2015 +0300 ---------------------------------------------------------------------- .../org/apache/ignite/IgniteCacheManager.java | 107 ++++++------------- .../processors/cache/IgniteCacheProxy.java | 42 ++++++-- .../cache/GridCacheEvictionManager.java | 3 +- .../processors/cache/GridCacheMapEntry.java | 14 +-- .../cache/GridCacheMetricsAdapter.java | 12 +-- .../processors/cache/GridCacheTtlManager.java | 3 +- .../distributed/near/GridNearCacheEntry.java | 3 +- .../distributed/near/GridNearGetFuture.java | 8 +- .../distributed/near/GridNearLockFuture.java | 6 +- .../local/atomic/GridLocalAtomicCache.java | 2 +- .../cache/transactions/IgniteTxManager.java | 6 +- .../cache/GridCacheAbstractMetricsSelfTest.java | 65 ++++++++--- .../near/GridCacheNearMetricsSelfTest.java | 11 ++ 13 files changed, 165 insertions(+), 117 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java b/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java index dbe6838..c255517 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java @@ -17,6 +17,7 @@ package org.apache.ignite; +import org.apache.ignite.cache.CacheMetricsMXBean; import org.apache.ignite.configuration.*; import org.apache.ignite.lang.*; import org.gridgain.grid.cache.*; @@ -147,6 +148,9 @@ public class IgniteCacheManager implements CacheManager { if (((CompleteConfiguration)cacheCfg).isManagementEnabled()) enableManagement(cacheName, true); + if (((CompleteConfiguration)cacheCfg).isStatisticsEnabled()) + enableStatistics(cacheName, true); + return res; } @@ -250,26 +254,21 @@ public class IgniteCacheManager implements CacheManager { } - ObjectName objName = getObjectName(cacheName); - MBeanServer mBeanSrv = tuple.get1().configuration().getMBeanServer(); - for (ObjectName n : mBeanSrv.queryNames(objName, null)) { - try { - mBeanSrv.unregisterMBean(n); - } - catch (Exception ignored) { + unregisterCacheObject(mBeanSrv, cacheName, true); - } - } + unregisterCacheObject(mBeanSrv, cacheName, false); } } /** * @param cacheName Cache name. */ - private ObjectName getObjectName(String cacheName) { - String mBeanName = "javax.cache:type=CacheConfiguration,CacheManager=" + private ObjectName getObjectName(String cacheName, boolean isStatistic) { + String mbType = isStatistic ? "CacheStatistics" : "CacheConfiguration"; + + String mBeanName = "javax.cache:type=" + mbType + ",CacheManager=" + uri.toString().replaceAll(",|:|=|\n", ".") + ",Cache=" + cacheName.replaceAll(",|:|=|\n", "."); @@ -294,7 +293,7 @@ public class IgniteCacheManager implements CacheManager { tuple = igniteMap.get(cacheName); } - ObjectName objName = getObjectName(cacheName); + ObjectName objName = getObjectName(cacheName, false); MBeanServer mBeanSrv = tuple.get1().configuration().getMBeanServer(); try { @@ -319,7 +318,18 @@ public class IgniteCacheManager implements CacheManager { /** {@inheritDoc} */ @Override public void enableStatistics(String cacheName, boolean enabled) { - Ignite ignite = findIgnite(cacheName); + ensureNotClosed(); + + if (cacheName == null) + throw new NullPointerException(); + + IgniteBiTuple<Ignite, IgniteCacheMXBean> tuple; + + synchronized (igniteMap) { + tuple = igniteMap.get(cacheName); + } + + Ignite ignite = tuple.get1(); GridCache cache = ignite.cache(cacheName); @@ -327,63 +337,34 @@ public class IgniteCacheManager implements CacheManager { MBeanServer mBeanSrv = ignite.configuration().getMBeanServer(); - if (cacheName == null) - cacheName = "null"; - if (enabled) { CacheMetricsMXBean mxBean = new CacheMetricsMXBean(cache); - registerCacheObject(mBeanSrv, mxBean, uri.toString(), cacheName, true); + registerCacheObject(mBeanSrv, mxBean, cacheName, true); configuration.setStatisticsEnabled(true); } else { - unregisterCacheObject(mBeanSrv, uri.toString(), cacheName, true); + unregisterCacheObject(mBeanSrv, cacheName, true); configuration.setStatisticsEnabled(false); } } /** - * - */ - private static String mbeanSafe(String string) { - return string == null ? "" : string.replaceAll(",|:|=|\n", "."); - } - - /** - * Finds node which has the cache. - * - * @param cacheName Cache name. - * @return Ignite node. - */ - private Ignite findIgnite(String cacheName) { - for (Ignite ignite : Ignition.allGrids()) - if (ignite.jcache(cacheName) != null) - return ignite; - - return null; - } - - /** * @param mxbean MXBean. - * @param cacheManagerName name generated by URI and classloader. * @param name cache name. */ - public static void registerCacheObject(MBeanServer mBeanServer, Object mxbean, String cacheManagerName, String name, - boolean stats) { - ObjectName registeredObjectName = calculateObjectName(cacheManagerName, name, stats); + public void registerCacheObject(MBeanServer mBeanServer, Object mxbean, String name, boolean isStatistic) { + ObjectName registeredObjectName = getObjectName(name, isStatistic); try { - if (!isRegistered(mBeanServer, registeredObjectName)) { + if (!isRegistered(mBeanServer, registeredObjectName)) mBeanServer.registerMBean(mxbean, registeredObjectName); - - System.out.println("Registered mbean with name " + registeredObjectName.toString()); - } } catch (Exception e) { - throw new CacheException("Error registering cache MXBeans for CacheManager " + registeredObjectName - + " . Error was " + e.getMessage(), e); + throw new CacheException("Error registering cache MXBeans for CacheManager " + + registeredObjectName.toString() + " . Error was " + e.getMessage(), e); } } @@ -398,17 +379,15 @@ public class IgniteCacheManager implements CacheManager { * UnRegisters the mxbean if registered already. * * @param mBeanSrv MBean server - * @param cacheManagerName name generated by URI and classloader. * @param name cache name. * @param stats is mxbean, a statistics mxbean. */ - public static void unregisterCacheObject(MBeanServer mBeanSrv, String cacheManagerName, String name, boolean stats) { - Set<ObjectName> registeredObjectNames = null; + public void unregisterCacheObject(MBeanServer mBeanSrv, String name, boolean stats) { + Set<ObjectName> registeredObjectNames; - ObjectName objectName = calculateObjectName(cacheManagerName, name, stats); - registeredObjectNames = mBeanSrv.queryNames(objectName, null); + ObjectName objectName = getObjectName(name, stats); - System.out.println("Try UnRegistered mbean with name " + objectName.toString()); + registeredObjectNames = mBeanSrv.queryNames(objectName, null); //should just be one for (ObjectName registeredObjectName : registeredObjectNames) { @@ -422,24 +401,6 @@ public class IgniteCacheManager implements CacheManager { } /** - * Creates an object name. - */ - private static ObjectName calculateObjectName(String cacheManagerName, String name, boolean stats) { - String cacheManagerNameSafe = mbeanSafe(cacheManagerName); - String cacheName = mbeanSafe(name); - - try { - String objectNameType = stats ? "Statistics" : "Configuration"; - return new ObjectName( - "javax.cache:type=Cache" + objectNameType + ",CacheManager=" + cacheManagerNameSafe + ",Cache=" + cacheName); - } catch (MalformedObjectNameException e) { - throw new CacheException( - "Illegal ObjectName for Management Bean. " + "CacheManager=[" + cacheManagerNameSafe + "], Cache=[" - + cacheName + "]", e); - } - } - - /** * */ private void ensureNotClosed() throws IllegalStateException { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java index 10ff00b..198a715 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java @@ -415,6 +415,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public Map<K, V> getAll(Set<? extends K> keys) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -444,17 +445,25 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements */ public Map<K, V> getAll(Collection<? extends K> keys) { try { + boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + + long start = statisticsEnabled ? System.nanoTime() : 0L; + GridCacheProjectionImpl<K, V> prev = gate.enter(prj); + Map<K, V> res; + try { - return delegate.getAll(keys); + res = delegate.getAll(keys); } finally { gate.leave(prev); } if (statisticsEnabled) - ctx.cache().metrics0().addPutTimeNanos(System.nanoTime() - start); + ctx.cache().metrics0().addGetTimeNanos(System.nanoTime() - start); + + return res; } catch (IgniteCheckedException e) { throw cacheException(e); @@ -519,6 +528,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public void put(K key, V val) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -571,6 +581,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public void putAll(Map<? extends K, ? extends V> map) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -581,6 +592,9 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements finally { gate.leave(prev); } + + if (statisticsEnabled) + ctx.cache().metrics0().addPutTimeNanos(System.nanoTime() - start); } catch (IgniteCheckedException e) { throw cacheException(e); @@ -591,6 +605,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public boolean putIfAbsent(K key, V val) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -618,6 +633,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public boolean remove(K key) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -631,7 +647,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements gate.leave(prev); } - if (statisticsEnabled) + if (statisticsEnabled && removed) ctx.cache().metrics0().addRemoveTimeNanos(System.nanoTime() - start); return removed; @@ -645,6 +661,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public boolean remove(K key, V oldVal) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -672,6 +689,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public V getAndRemove(K key) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -685,8 +703,10 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements gate.leave(prev); } - if (statisticsEnabled) + if (statisticsEnabled) { ctx.cache().metrics0().addRemoveTimeNanos(System.nanoTime() - start); + ctx.cache().metrics0().addGetTimeNanos(System.nanoTime() - start); + } return removed; } @@ -706,9 +726,6 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements finally { gate.leave(prev); } - - if (statisticsEnabled) - ctx.cache().metrics0().addRemoveTimeNanos(System.nanoTime() - start); } catch (IgniteCheckedException e) { throw cacheException(e); @@ -753,6 +770,7 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements @Override public void removeAll(Set<? extends K> keys) { try { boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + long start = statisticsEnabled ? System.nanoTime() : 0L; GridCacheProjectionImpl<K, V> prev = gate.enter(prj); @@ -763,6 +781,9 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements finally { gate.leave(prev); } + + if (statisticsEnabled) + ctx.cache().metrics0().addRemoveTimeNanos(System.nanoTime() - start); } catch (IgniteCheckedException e) { throw cacheException(e); @@ -774,6 +795,10 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements */ public void removeAll(Collection<? extends K> keys) { try { + boolean statisticsEnabled = ctx.config().isStatisticsEnabled(); + + long start = statisticsEnabled ? System.nanoTime() : 0L; + GridCacheProjectionImpl<K, V> prev = gate.enter(prj); try { @@ -782,6 +807,9 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements finally { gate.leave(prev); } + + if (statisticsEnabled) + ctx.cache().metrics0().addRemoveTimeNanos(System.nanoTime() - start); } catch (IgniteCheckedException e) { throw cacheException(e); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheEvictionManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheEvictionManager.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheEvictionManager.java index 6894ed0..e585499 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheEvictionManager.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheEvictionManager.java @@ -668,7 +668,8 @@ public class GridCacheEvictionManager<K, V> extends GridCacheManagerAdapter<K, V cache.removeEntry(entry); - cache.metrics0().onEvict(); + if (cache.configuration().isStatisticsEnabled()) + cache.metrics0().onEvict(); if (recordable) cctx.events().addEvent(entry.partition(), entry.key(), cctx.nodeId(), (IgniteUuid)null, null, http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java index 46dc22d..2f58ec9 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMapEntry.java @@ -772,11 +772,11 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> } if (old == null && !hasOldBytes) { - if (updateMetrics) + if (updateMetrics && cctx.cache().configuration().isStatisticsEnabled()) cctx.cache().metrics0().onRead(false); } else { - if (updateMetrics) + if (updateMetrics && cctx.cache().configuration().isStatisticsEnabled()) cctx.cache().metrics0().onRead(true); // Set retVal here for event notification. @@ -1140,7 +1140,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> recordNodeId(affNodeId); - if (metrics) + if (metrics && cctx.cache().configuration().isStatisticsEnabled()) cctx.cache().metrics0().onWrite(); if (evt && newVer != null && cctx.events().isRecordable(EVT_CACHE_OBJECT_PUT)) { @@ -1292,7 +1292,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> drReplicate(drType, null, null, newVer); - if (metrics) + if (metrics && cctx.cache().configuration().isStatisticsEnabled()) cctx.cache().metrics0().onRemove(); if (tx == null) @@ -1444,7 +1444,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> } // Apply metrics. - if (metrics && needVal) + if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) cctx.cache().metrics0().onRead(old != null); String transformCloClsName = null; @@ -1800,7 +1800,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> } // Apply metrics. - if (metrics && needVal) + if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) cctx.cache().metrics0().onRead(old != null); // Calculate new value. @@ -4134,7 +4134,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V> * @param metrics Update merics flag. */ private void updateMetrics(GridCacheOperation op, boolean metrics) { - if (metrics) { + if (metrics && cctx.cache().configuration().isStatisticsEnabled()) { if (op == DELETE) cctx.cache().metrics0().onRemove(); else http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java index ae539d5..dc1faf2 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheMetricsAdapter.java @@ -269,8 +269,8 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable removeTimeNanos += duration; } - @Override - public float getAverageGetTime() { + /** {@inheritDoc} */ + @Override public float getAverageGetTime() { long timeNanos = getTimeNanos; long readsCnt = reads; @@ -280,8 +280,8 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable return ((1f * timeNanos) / readsCnt) / NANOS_IN_MICROSECOND; } - @Override - public float getAveragePutTime() { + /** {@inheritDoc} */ + @Override public float getAveragePutTime() { long timeNanos = putTimeNanos; long putsCnt = writes; @@ -291,8 +291,8 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable return ((1f * timeNanos) / putsCnt) / NANOS_IN_MICROSECOND; } - @Override - public float getAverageRemoveTime() { + /** {@inheritDoc} */ + @Override public float getAverageRemoveTime() { long timeNanos = removeTimeNanos; long removesCnt = rmCnt; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java index 33ead3a..0ec3fe3 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheTtlManager.java @@ -127,7 +127,8 @@ public class GridCacheTtlManager<K, V> extends GridCacheManagerAdapter<K, V> { if (wrapper.entry.onTtlExpired(obsoleteVer)) wrapper.entry.context().cache().removeEntry(wrapper.entry); - wrapper.entry.context().cache().metrics0().onEvict(); + if (wrapper.entry.context().cache().configuration().isStatisticsEnabled()) + wrapper.entry.context().cache().metrics0().onEvict(); it.remove(); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearCacheEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearCacheEntry.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearCacheEntry.java index c29f8e2..aa27e6f 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearCacheEntry.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearCacheEntry.java @@ -360,7 +360,8 @@ public class GridNearCacheEntry<K, V> extends GridDistributedCacheEntry<K, V> { synchronized (this) { checkObsolete(); - cctx.cache().metrics0().onRead(false); + if (cctx.cache().configuration().isStatisticsEnabled()) + cctx.cache().metrics0().onRead(false); boolean ret = false; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java index 7184c7b..818612a 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearGetFuture.java @@ -465,12 +465,14 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma dht.removeIfObsolete(key); } - if (v != null) - near.metrics0().onRead(true); + if (v != null) { + if (cctx.cache().configuration().isStatisticsEnabled()) + near.metrics0().onRead(true); + } else { primary = cctx.affinity().primary(key, topVer); - if (!primary.isLocal()) + if (!primary.isLocal() && cctx.cache().configuration().isStatisticsEnabled()) near.metrics0().onRead(false); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearLockFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearLockFuture.java index 200e695..9dc5234 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearLockFuture.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridNearLockFuture.java @@ -1063,7 +1063,8 @@ public final class GridNearLockFuture<K, V> extends GridCompoundIdentityFuture<B null, inTx() ? tx.resolveTaskName() : null); - cctx.cache().metrics0().onRead(oldVal != null); + if (cctx.cache().configuration().isStatisticsEnabled()) + cctx.cache().metrics0().onRead(oldVal != null); } if (log.isDebugEnabled()) @@ -1424,7 +1425,8 @@ public final class GridNearLockFuture<K, V> extends GridCompoundIdentityFuture<B null, inTx() ? tx.resolveTaskName() : null); - cctx.cache().metrics0().onRead(false); + if (cctx.cache().configuration().isStatisticsEnabled()) + cctx.cache().metrics0().onRead(false); } if (log.isDebugEnabled()) http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/local/atomic/GridLocalAtomicCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/local/atomic/GridLocalAtomicCache.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/local/atomic/GridLocalAtomicCache.java index 4312c81..fca2dd5 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/local/atomic/GridLocalAtomicCache.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/local/atomic/GridLocalAtomicCache.java @@ -602,7 +602,7 @@ public class GridLocalAtomicCache<K, V> extends GridCacheAdapter<K, V> { success = false; } else { - if (!storeEnabled) + if (!storeEnabled && configuration().isStatisticsEnabled()) metrics0().onRead(false); success = false; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxManager.java index c2a117f..bc78303 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxManager.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/transactions/IgniteTxManager.java @@ -1256,7 +1256,8 @@ public class IgniteTxManager<K, V> extends GridCacheSharedManagerAdapter<K, V> { for (int cacheId : tx.activeCacheIds()) { GridCacheContext<K, V> cacheCtx = cctx.cacheContext(cacheId); - cacheCtx.cache().metrics0().onTxCommit(); + if (cacheCtx.cache().configuration().isStatisticsEnabled()) + cacheCtx.cache().metrics0().onTxCommit(); } } @@ -1329,7 +1330,8 @@ public class IgniteTxManager<K, V> extends GridCacheSharedManagerAdapter<K, V> { for (int cacheId : tx.activeCacheIds()) { GridCacheContext<K, V> cacheCtx = cctx.cacheContext(cacheId); - cacheCtx.cache().metrics0().onTxRollback(); + if (cacheCtx.cache().configuration().isStatisticsEnabled()) + cacheCtx.cache().metrics0().onTxRollback(); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java index 74e6068..3a1f4c0 100644 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractMetricsSelfTest.java @@ -20,16 +20,21 @@ package org.gridgain.grid.kernal.processors.cache; import org.apache.ignite.*; import org.apache.ignite.transactions.*; import org.gridgain.grid.cache.*; +import org.gridgain.grid.kernal.*; import org.gridgain.grid.util.lang.*; import org.gridgain.grid.util.typedef.internal.*; import org.gridgain.testframework.*; +import javax.cache.*; import javax.cache.expiry.*; +import javax.cache.spi.*; import javax.management.*; import java.net.*; import java.util.*; +import java.util.concurrent.*; import static java.util.concurrent.TimeUnit.*; +import static org.gridgain.grid.util.GridUtils.*; /** * Cache metrics test. @@ -38,6 +43,9 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract /** */ private static final int KEY_CNT = 50; + /** */ + private static final String CACHE_NAME = "mbean_test"; + /** {@inheritDoc} */ @Override protected boolean swapEnabled() { return false; @@ -187,20 +195,38 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract assert cache.metrics().getAverageGetTime() > 0; } + private String getUriForMbean() throws Exception { + String uri; + + try{ + uri = resolveGridGainUrl(GridGainEx.DFLT_CFG).toURI().toString(); + } + catch (Exception e){ + uri = URI.create("ignite://default").toString(); + } + + return uri.replaceAll(",|:|=|\n", "."); + } + /** * @throws Exception If failed. */ public void testStatisticMXBean() throws Exception { - IgniteCache<Integer, Integer> jcache = grid(0).jcache(null); + CachingProvider cachingProvider = Caching.getCachingProvider(); + + CacheManager cacheMgr = cachingProvider.getCacheManager(); - URI uri = URI.create("ignite://default"); + GridCacheConfiguration cfg = new GridCacheConfiguration(); - IgniteCacheManager cacheManager = new IgniteCacheManager(uri); + cfg.setManagementEnabled(true); - cacheManager.enableStatistics(null, true); + cfg.setStatisticsEnabled(true); - ObjectName objectName = - new ObjectName("javax.cache:type=CacheStatistics,CacheManager=ignite.//default,Cache=null"); + Cache jcache = cacheMgr.createCache(CACHE_NAME, cfg); + + String beanName = "javax.cache:type=CacheStatistics,CacheManager=" + getUriForMbean() + ",Cache=" + CACHE_NAME; + + ObjectName objectName = new ObjectName(beanName); long cachePuts = (long)getConfiguration().getMBeanServer().getAttribute(objectName, "CachePuts"); @@ -212,21 +238,29 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract assertEquals(1, cachePuts); - cacheManager.enableStatistics(null, false); + cacheMgr.destroyCache(CACHE_NAME); } /** * @throws Exception If failed. */ public void testCacheMxBean() throws Exception { - URI uri = URI.create("ignite://default"); + CachingProvider cachingProvider = Caching.getCachingProvider(); + + CacheManager cacheMgr = cachingProvider.getCacheManager(); + + GridCacheConfiguration cfg = new GridCacheConfiguration(); + + cfg.setManagementEnabled(true); - IgniteCacheManager cacheManager = new IgniteCacheManager(uri); + cfg.setStatisticsEnabled(true); - cacheManager.enableManagement(null, true); + cacheMgr.createCache(CACHE_NAME, cfg); - ObjectName objectName = - new ObjectName("javax.cache:type=CacheConfiguration,CacheManager=ignite.//default,Cache=null"); + String beanName = "javax.cache:type=CacheConfiguration,CacheManager=" + getUriForMbean() + + ",Cache=" + CACHE_NAME; + + ObjectName objectName = new ObjectName(beanName); String keyType = (String)getConfiguration().getMBeanServer().getAttribute(objectName, "KeyType"); assertEquals("java.lang.Object", keyType); @@ -249,7 +283,7 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract boolean isMng = (boolean)getConfiguration().getMBeanServer().getAttribute(objectName, "ManagementEnabled"); assertEquals(true, isMng); - cacheManager.enableManagement(null, false); + cacheMgr.destroyCache(CACHE_NAME); } /** @@ -789,4 +823,9 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract throw new IgniteCheckedException("Unable to find " + cnt + " keys as primary for cache."); } + + /** {@inheritDoc} */ + @Override protected long getTestTimeout() { + return TimeUnit.MINUTES.toMillis(10L); + } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/34593673/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java index 5fbcd9f..0e1b41e 100644 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java @@ -74,6 +74,17 @@ public class GridCacheNearMetricsSelfTest extends GridCacheAbstractSelfTest { } /** {@inheritDoc} */ + @Override protected void beforeTest() throws Exception { + super.beforeTest(); + + for (int i = 0; i < gridCount(); i++) { + Ignite g = grid(i); + + g.cache(null).configuration().setStatisticsEnabled(true); + } + } + + /** {@inheritDoc} */ @Override protected GridCacheConfiguration cacheConfiguration(String gridName) throws Exception { GridCacheConfiguration cc = super.cacheConfiguration(gridName);