You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/01/16 12:29:20 UTC
[5/7] incubator-ignite git commit: IGNITE-49 Implemented
disabled/enabled statistics.
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 <nt...@gridgain.com>
Authored: Mon Jan 12 17:26:19 2015 +0300
Committer: nikolay_tikhonov <nt...@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);