Repository: incubator-ignite Updated Branches: refs/heads/ignite-49 4277989bb -> 8d338c0c5
IGNITE-49 Changed CacheMetrics and IgniteCacheMxBean API Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/669f3a91 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/669f3a91 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/669f3a91 Branch: refs/heads/ignite-49 Commit: 669f3a916f51d835bcfef849b3a4663a59919018 Parents: 4277989 Author: nikolay tikhonov <ntikho...@gridgain.com> Authored: Fri Jan 23 14:32:02 2015 +0300 Committer: nikolay_tikhonov <ntikho...@gridgain.com> Committed: Fri Jan 23 14:32:02 2015 +0300 ---------------------------------------------------------------------- .../java/org/apache/ignite/CacheMXBeanImpl.java | 4 +- .../java/org/apache/ignite/IgniteCache.java | 7 + .../org/apache/ignite/IgniteCacheManager.java | 20 +- .../processors/cache/IgniteCacheProxy.java | 12 + .../org/gridgain/grid/cache/CacheMetrics.java | 5 - .../java/org/gridgain/grid/cache/GridCache.java | 8 + .../processors/cache/CacheMetricsImpl.java | 44 +-- .../processors/cache/CacheMetricsSnapshot.java | 215 ++++++++++++++ .../processors/cache/CacheMxBeanAdapter.java | 296 ------------------ .../processors/cache/CacheMxBeanImpl.java | 297 +++++++++++++++++++ .../processors/cache/GridCacheAdapter.java | 12 +- .../processors/cache/GridCacheProcessor.java | 37 --- .../processors/cache/GridCacheProxyImpl.java | 12 + .../visor/cache/VisorCacheResetMetricsTask.java | 2 +- .../cache/GridCacheAbstractMetricsSelfTest.java | 11 +- ...ePartitionedNearDisabledMetricsSelfTest.java | 2 +- .../near/GridCacheNearMetricsSelfTest.java | 2 +- 17 files changed, 592 insertions(+), 394 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/apache/ignite/CacheMXBeanImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/CacheMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/CacheMXBeanImpl.java index fe4f93d..626ea0f 100644 --- a/modules/core/src/main/java/org/apache/ignite/CacheMXBeanImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/CacheMXBeanImpl.java @@ -25,14 +25,14 @@ import javax.cache.management.*; * Implementation of {@link CacheMXBean}. * */ -public class CacheMXBeanImpl implements CacheMXBean { +public class CacheMxBeanImpl implements CacheMXBean { /** */ private final Cache<?, ?> cache; /** * @param cache Cache. */ - public CacheMXBeanImpl(Cache<?, ?> cache) { + public CacheMxBeanImpl(Cache<?, ?> cache) { this.cache = cache; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/apache/ignite/IgniteCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java index db210c0..d71c96f 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java @@ -361,4 +361,11 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS * @return Cache metrics. */ public CacheMetrics metrics(); + + /** + * Gets MxBean for this cache. + * + * @return MxBean. + */ + public IgniteCacheMxBean mxBean(); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/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 7a52af8..21a390d 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCacheManager.java @@ -41,7 +41,7 @@ public class IgniteCacheManager implements CacheManager { private static final String CACHE_CONFIGURATION = "CacheConfiguration"; /** */ - private final Map<String, IgniteBiTuple<Ignite, CacheMXBeanImpl>> igniteMap = new HashMap<>(); + private final Map<String, IgniteBiTuple<Ignite, CacheMxBeanImpl>> igniteMap = new HashMap<>(); /** */ private final URI uri; @@ -147,7 +147,7 @@ public class IgniteCacheManager implements CacheManager { res = ignite.jcache(cacheName); - igniteMap.put(cacheName, new T2<>(ignite, new CacheMXBeanImpl(res))); + igniteMap.put(cacheName, new T2<>(ignite, new CacheMxBeanImpl(res))); } if (((CompleteConfiguration)cacheCfg).isManagementEnabled()) @@ -163,7 +163,7 @@ public class IgniteCacheManager implements CacheManager { * @param cacheName Cache name. */ private <K, V> IgniteCache<K, V> findCache(String cacheName) { - IgniteBiTuple<Ignite, CacheMXBeanImpl> tuple; + IgniteBiTuple<Ignite, CacheMxBeanImpl> tuple; synchronized (igniteMap) { tuple = igniteMap.get(cacheName); @@ -229,7 +229,7 @@ public class IgniteCacheManager implements CacheManager { */ public boolean isManagedIgnite(Ignite ignite) { synchronized (igniteMap) { - for (IgniteBiTuple<Ignite, CacheMXBeanImpl> tuple : igniteMap.values()) { + for (IgniteBiTuple<Ignite, CacheMxBeanImpl> tuple : igniteMap.values()) { if (ignite.equals(tuple.get1())) return true; } @@ -245,7 +245,7 @@ public class IgniteCacheManager implements CacheManager { if (cacheName == null) throw new NullPointerException(); - IgniteBiTuple<Ignite, CacheMXBeanImpl> tuple; + IgniteBiTuple<Ignite, CacheMxBeanImpl> tuple; synchronized (igniteMap) { tuple = igniteMap.remove(cacheName); @@ -290,7 +290,7 @@ public class IgniteCacheManager implements CacheManager { if (cacheName == null) throw new NullPointerException(); - IgniteBiTuple<Ignite, CacheMXBeanImpl> tuple; + IgniteBiTuple<Ignite, CacheMxBeanImpl> tuple; synchronized (igniteMap) { tuple = igniteMap.get(cacheName); @@ -318,7 +318,7 @@ public class IgniteCacheManager implements CacheManager { if (cacheName == null) throw new NullPointerException(); - IgniteBiTuple<Ignite, CacheMXBeanImpl> tuple; + IgniteBiTuple<Ignite, CacheMxBeanImpl> tuple; synchronized (igniteMap) { tuple = igniteMap.get(cacheName); @@ -333,7 +333,7 @@ public class IgniteCacheManager implements CacheManager { MBeanServer mBeanSrv = ignite.configuration().getMBeanServer(); if (enabled) { - registerCacheObject(mBeanSrv, cache.metrics(), cacheName, CACHE_STATISTICS); + registerCacheObject(mBeanSrv, cache.mxBean(), cacheName, CACHE_STATISTICS); cfg.setStatisticsEnabled(true); } @@ -403,13 +403,13 @@ public class IgniteCacheManager implements CacheManager { /** {@inheritDoc} */ @Override public void close() { if (closed.compareAndSet(false, true)) { - IgniteBiTuple<Ignite, CacheMXBeanImpl>[] ignites; + IgniteBiTuple<Ignite, CacheMxBeanImpl>[] ignites; synchronized (igniteMap) { ignites = igniteMap.values().toArray(new IgniteBiTuple[igniteMap.values().size()]); } - for (IgniteBiTuple<Ignite, CacheMXBeanImpl> tuple : ignites) { + for (IgniteBiTuple<Ignite, CacheMxBeanImpl> tuple : ignites) { try { tuple.get1().close(); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/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 c16e899..321d09b 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 @@ -101,6 +101,18 @@ public class IgniteCacheProxy<K, V> extends IgniteAsyncSupportAdapter implements } /** {@inheritDoc} */ + @Override public IgniteCacheMxBean mxBean() { + GridCacheProjectionImpl<K, V> prev = gate.enter(prj); + + try { + return ctx.cache().mxBean(); + } + finally { + gate.leave(prev); + } + } + + /** {@inheritDoc} */ @Override public <C extends Configuration<K, V>> C getConfiguration(Class<C> clazz) { CacheConfiguration cfg = ctx.config(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/cache/CacheMetrics.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/CacheMetrics.java b/modules/core/src/main/java/org/gridgain/grid/cache/CacheMetrics.java index 1794897..1713b8f 100644 --- a/modules/core/src/main/java/org/gridgain/grid/cache/CacheMetrics.java +++ b/modules/core/src/main/java/org/gridgain/grid/cache/CacheMetrics.java @@ -25,11 +25,6 @@ import org.apache.ignite.*; */ public interface CacheMetrics { /** - * Clears the statistics counters to 0 for the associated Cache. - */ - void clear(); - - /** * The number of get requests that were satisfied by the cache. * * @return the number of hits http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/cache/GridCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/GridCache.java b/modules/core/src/main/java/org/gridgain/grid/cache/GridCache.java index c3b093b..ceba8d8 100644 --- a/modules/core/src/main/java/org/gridgain/grid/cache/GridCache.java +++ b/modules/core/src/main/java/org/gridgain/grid/cache/GridCache.java @@ -118,6 +118,14 @@ public interface GridCache<K, V> extends GridCacheProjection<K, V> { */ public CacheMetrics metrics(); + + /** + * Gets metrics (statistics) for this cache. + * + * @return Cache metrics. + */ + public IgniteCacheMxBean mxBean(); + /** * Gets size (in bytes) of all entries swapped to disk. * http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsImpl.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsImpl.java index cb98ed7..bfff87b 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsImpl.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsImpl.java @@ -27,7 +27,7 @@ import java.util.concurrent.atomic.*; /** * Adapter for cache metrics. */ -public class CacheMetricsImpl implements CacheMetrics, Externalizable { +public class CacheMetricsImpl implements CacheMetrics { /** */ private static final long NANOS_IN_MICROSECOND = 1000L; @@ -123,8 +123,10 @@ public class CacheMetricsImpl implements CacheMetrics, Externalizable { return txRollbacks.get(); } - /** {@inheritDoc} */ - @Override public void clear() { + /** + * Clear metrics. + */ + public void clear() { reads.set(0); writes.set(0); rmCnt.set(0); @@ -362,42 +364,6 @@ public class CacheMetricsImpl implements CacheMetrics, Externalizable { } /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeLong(reads.get()); - out.writeLong(writes.get()); - out.writeLong(hits.get()); - out.writeLong(misses.get()); - out.writeLong(txCommits.get()); - out.writeLong(txRollbacks.get()); - out.writeLong(rmCnt.get()); - out.writeLong(evictCnt.get()); - - out.writeLong(putTimeNanos.get()); - out.writeLong(getTimeNanos.get()); - out.writeLong(removeTimeNanos.get()); - out.writeLong(commitTimeNanos.get()); - out.writeLong(rollbackTimeNanos.get()); - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - reads = new AtomicLong(in.readLong()); - writes = new AtomicLong(in.readLong()); - hits = new AtomicLong(in.readLong()); - misses = new AtomicLong(in.readLong()); - txCommits = new AtomicLong(in.readLong()); - txRollbacks = new AtomicLong(in.readLong()); - rmCnt = new AtomicLong(in.readLong()); - evictCnt = new AtomicLong(in.readLong()); - - putTimeNanos = new AtomicLong(in.readLong()); - getTimeNanos = new AtomicLong(in.readLong()); - removeTimeNanos = new AtomicLong(in.readLong()); - commitTimeNanos = new AtomicLong(in.readLong()); - rollbackTimeNanos = new AtomicLong(in.readLong()); - } - - /** {@inheritDoc} */ @Override public String toString() { return S.toString(CacheMetricsImpl.class, this); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsSnapshot.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsSnapshot.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsSnapshot.java new file mode 100644 index 0000000..3d8723d --- /dev/null +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMetricsSnapshot.java @@ -0,0 +1,215 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.gridgain.grid.kernal.processors.cache; + +import org.gridgain.grid.cache.*; +import org.gridgain.grid.util.typedef.internal.*; + +import java.io.*; + +/** + * Metrics snapshot. + */ +class CacheMetricsSnapshot implements CacheMetrics, Externalizable { + /** */ + private static final long serialVersionUID = 0L; + + /** Number of reads. */ + private long reads = 0; + + /** Number of puts. */ + private long puts = 0; + + /** Number of hits. */ + private long hits = 0; + + /** Number of misses. */ + private long misses = 0; + + /** Number of transaction commits. */ + private long txCommits = 0; + + /** Number of transaction rollbacks. */ + private long txRollbacks = 0; + + /** Number of evictions. */ + private long evicts = 0; + + /** Number of removed entries. */ + private long removes = 0; + + /** Put time taken nanos. */ + private float putAvgTimeNanos = 0; + + /** Get time taken nanos. */ + private float getAvgTimeNanos = 0; + + /** Remove time taken nanos. */ + private float removeAvgTimeNanos = 0; + + /** Commit transaction time taken nanos. */ + private float commitAvgTimeNanos = 0; + + /** Commit transaction time taken nanos. */ + private float rollbackAvgTimeNanos = 0; + + /** + * Create snapshot for given metrics. + * + * @param m Cache metrics. + */ + public CacheMetricsSnapshot(CacheMetrics m) { + reads = m.getCacheGets(); + puts = m.getCachePuts(); + hits = m.getCacheHits(); + misses = m.getCacheMisses(); + txCommits = m.getCacheTxCommits(); + txRollbacks = m.getCacheTxRollbacks(); + evicts = m.getCacheEvictions(); + removes = m.getCacheRemovals(); + + putAvgTimeNanos = m.getAveragePutTime(); + getAvgTimeNanos = m.getAverageGetTime(); + removeAvgTimeNanos = m.getAverageRemoveTime(); + commitAvgTimeNanos = m.getAverageTxCommitTime(); + rollbackAvgTimeNanos = m.getAverageTxRollbackTime(); + } + + /** {@inheritDoc} */ + @Override public long getCacheHits() { + return hits; + } + + /** {@inheritDoc} */ + @Override public float getCacheHitPercentage() { + if (hits == 0 || reads == 0) + return 0; + + return (float) hits / reads * 100.0f; + } + + /** {@inheritDoc} */ + @Override public long getCacheMisses() { + return misses; + } + + /** {@inheritDoc} */ + @Override public float getCacheMissPercentage() { + if (misses == 0 || reads == 0) { + return 0; + } + + return (float) misses / reads * 100.0f; + } + + /** {@inheritDoc} */ + @Override public long getCacheGets() { + return reads; + } + + /** {@inheritDoc} */ + @Override public long getCachePuts() { + return puts; + } + + /** {@inheritDoc} */ + @Override public long getCacheRemovals() { + return removes; + } + + /** {@inheritDoc} */ + @Override public long getCacheEvictions() { + return evicts; + } + + /** {@inheritDoc} */ + @Override public float getAverageGetTime() { + return getAvgTimeNanos; + } + + /** {@inheritDoc} */ + @Override public float getAveragePutTime() { + return putAvgTimeNanos; + } + + /** {@inheritDoc} */ + @Override public float getAverageRemoveTime() { + return removeAvgTimeNanos; + } + + /** {@inheritDoc} */ + @Override public float getAverageTxCommitTime() { + return commitAvgTimeNanos; + } + + /** {@inheritDoc} */ + @Override public float getAverageTxRollbackTime() { + return rollbackAvgTimeNanos; + } + + /** {@inheritDoc} */ + @Override public long getCacheTxCommits() { + return txCommits; + } + + /** {@inheritDoc} */ + @Override public long getCacheTxRollbacks() { + return txRollbacks; + } + + /** {@inheritDoc} */ + @Override public void writeExternal(ObjectOutput out) throws IOException { + out.writeLong(reads); + out.writeLong(puts); + out.writeLong(hits); + out.writeLong(misses); + out.writeLong(txCommits); + out.writeLong(txRollbacks); + out.writeLong(removes); + out.writeLong(evicts); + + out.writeFloat(putAvgTimeNanos); + out.writeFloat(getAvgTimeNanos); + out.writeFloat(removeAvgTimeNanos); + out.writeFloat(commitAvgTimeNanos); + out.writeFloat(rollbackAvgTimeNanos); + } + + /** {@inheritDoc} */ + @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + reads = in.readLong(); + puts = in.readLong(); + hits = in.readLong(); + misses = in.readLong(); + txCommits = in.readLong(); + txRollbacks = in.readLong(); + removes = in.readLong(); + evicts = in.readLong(); + + putAvgTimeNanos = in.readFloat(); + getAvgTimeNanos = in.readFloat(); + removeAvgTimeNanos = in.readFloat(); + commitAvgTimeNanos = in.readFloat(); + rollbackAvgTimeNanos = in.readFloat(); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(CacheMetricsSnapshot.class, this); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanAdapter.java deleted file mode 100644 index 199b417..0000000 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanAdapter.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal.processors.cache; - -import org.apache.ignite.*; -import org.gridgain.grid.cache.*; - -/** - * Management bean that provides access to {@link GridCache}. - */ -class CacheMxBeanAdapter implements IgniteCacheMxBean { - /** Cache context. */ - private GridCacheContext<?, ?> cctx; - - /** DHT context. */ - private GridCacheContext<?, ?> dhtCtx; - - /** Write-behind store, if configured. */ - private GridCacheWriteBehindStore store; - - /** - * Creates MBean; - * - * @param cctx Cache context. - */ - CacheMxBeanAdapter(GridCacheContext<?, ?> cctx) { - assert cctx != null; - - this.cctx = cctx; - - if (cctx.isNear()) - dhtCtx = cctx.near().dht().context(); - - if (cctx.store().store() instanceof GridCacheWriteBehindStore) - store = (GridCacheWriteBehindStore)cctx.store().store(); - } - - /** {@inheritDoc} */ - @Override public String name() { - return cctx.name(); - } - - /** {@inheritDoc} */ - @Override public String metricsFormatted() { - return String.valueOf(cctx.cache().metrics()); - } - - /** {@inheritDoc} */ - @Override public long getOverflowSize() { - try { - return cctx.cache().overflowSize(); - } - catch (IgniteCheckedException ignored) { - return -1; - } - } - - /** {@inheritDoc} */ - @Override public long getOffHeapEntriesCount() { - return cctx.cache().offHeapEntriesCount(); - } - - /** {@inheritDoc} */ - @Override public long getOffHeapAllocatedSize() { - return cctx.cache().offHeapAllocatedSize(); - } - - /** {@inheritDoc} */ - @Override public int getSize() { - return cctx.cache().size(); - } - - /** {@inheritDoc} */ - @Override public int getKeySize() { - return cctx.cache().size(); - } - - /** {@inheritDoc} */ - @Override public boolean isEmpty() { - return cctx.cache().isEmpty(); - } - - /** {@inheritDoc} */ - @Override public int getDhtEvictQueueCurrentSize() { - return cctx.isNear() ? dhtCtx.evicts().evictQueueSize() : cctx.evicts().evictQueueSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxCommitQueueSize() { - return cctx.tm().commitQueueSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxThreadMapSize() { - return cctx.tm().threadMapSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxXidMapSize() { - return cctx.tm().idMapSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxPrepareQueueSize() { - return cctx.tm().prepareQueueSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxStartVersionCountsSize() { - return cctx.tm().startVersionCountsSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxCommittedVersionsSize() { - return cctx.tm().committedVersionsSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxRolledbackVersionsSize() { - return cctx.tm().rolledbackVersionsSize(); - } - - /** {@inheritDoc} */ - @Override public int getTxDhtThreadMapSize() { - return cctx.isNear() ? dhtCtx.tm().threadMapSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getTxDhtXidMapSize() { - return cctx.isNear() ? dhtCtx.tm().idMapSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getTxDhtCommitQueueSize() { - return cctx.isNear() ? dhtCtx.tm().commitQueueSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getTxDhtPrepareQueueSize() { - return cctx.isNear() ? dhtCtx.tm().prepareQueueSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getTxDhtStartVersionCountsSize() { - return cctx.isNear() ? dhtCtx.tm().startVersionCountsSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getTxDhtCommittedVersionsSize() { - return cctx.isNear() ? dhtCtx.tm().committedVersionsSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getTxDhtRolledbackVersionsSize() { - return cctx.isNear() ? dhtCtx.tm().rolledbackVersionsSize() : -1; - } - - /** {@inheritDoc} */ - @Override public boolean isWriteBehindEnabled() { - return store != null; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindFlushSize() { - return store != null ? store.getWriteBehindFlushSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindFlushThreadCount() { - return store != null ? store.getWriteBehindFlushThreadCount() : -1; - } - - /** {@inheritDoc} */ - @Override public long getWriteBehindFlushFrequency() { - return store != null ? store.getWriteBehindFlushFrequency() : -1; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindStoreBatchSize() { - return store != null ? store.getWriteBehindStoreBatchSize() : -1; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindTotalCriticalOverflowCount() { - return store != null ? store.getWriteBehindTotalCriticalOverflowCount() : -1; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindCriticalOverflowCount() { - return store != null ? store.getWriteBehindCriticalOverflowCount() : -1; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindErrorRetryCount() { - return store != null ? store.getWriteBehindErrorRetryCount() : -1; - } - - /** {@inheritDoc} */ - @Override public int getWriteBehindBufferSize() { - return store != null ? store.getWriteBehindBufferSize() : -1; - } - - /** {@inheritDoc} */ - @Override public void clear() { - } - - /** {@inheritDoc} */ - @Override public long getCacheHits() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getCacheHitPercentage() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCacheMisses() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getCacheMissPercentage() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCacheGets() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCachePuts() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCacheRemovals() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCacheEvictions() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getAverageGetTime() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getAveragePutTime() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getAverageRemoveTime() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getAverageTxCommitTime() { - return 0; - } - - /** {@inheritDoc} */ - @Override public float getAverageTxRollbackTime() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCacheTxCommits() { - return 0; - } - - /** {@inheritDoc} */ - @Override public long getCacheTxRollbacks() { - return 0; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanImpl.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanImpl.java new file mode 100644 index 0000000..c3837f2 --- /dev/null +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/CacheMxBeanImpl.java @@ -0,0 +1,297 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.gridgain.grid.kernal.processors.cache; + +import org.apache.ignite.*; +import org.gridgain.grid.cache.*; + +/** + * Management bean that provides access to {@link GridCache}. + */ +class CacheMxBeanImpl implements IgniteCacheMxBean { + /** Cache context. */ + private GridCacheContext<?, ?> cctx; + + /** DHT context. */ + private GridCacheContext<?, ?> dhtCtx; + + /** Write-behind store, if configured. */ + private GridCacheWriteBehindStore store; + + /** + * Creates MBean; + * + * @param cctx Cache context. + */ + CacheMxBeanImpl(GridCacheContext<?, ?> cctx) { + assert cctx != null; + + this.cctx = cctx; + + if (cctx.isNear()) + dhtCtx = cctx.near().dht().context(); + + if (cctx.store().store() instanceof GridCacheWriteBehindStore) + store = (GridCacheWriteBehindStore)cctx.store().store(); + } + + /** {@inheritDoc} */ + @Override public String name() { + return cctx.name(); + } + + /** {@inheritDoc} */ + @Override public String metricsFormatted() { + return String.valueOf(cctx.cache().metrics()); + } + + /** {@inheritDoc} */ + @Override public long getOverflowSize() { + try { + return cctx.cache().overflowSize(); + } + catch (IgniteCheckedException ignored) { + return -1; + } + } + + /** {@inheritDoc} */ + @Override public long getOffHeapEntriesCount() { + return cctx.cache().offHeapEntriesCount(); + } + + /** {@inheritDoc} */ + @Override public long getOffHeapAllocatedSize() { + return cctx.cache().offHeapAllocatedSize(); + } + + /** {@inheritDoc} */ + @Override public int getSize() { + return cctx.cache().size(); + } + + /** {@inheritDoc} */ + @Override public int getKeySize() { + return cctx.cache().size(); + } + + /** {@inheritDoc} */ + @Override public boolean isEmpty() { + return cctx.cache().isEmpty(); + } + + /** {@inheritDoc} */ + @Override public int getDhtEvictQueueCurrentSize() { + return cctx.isNear() ? dhtCtx.evicts().evictQueueSize() : cctx.evicts().evictQueueSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxCommitQueueSize() { + return cctx.tm().commitQueueSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxThreadMapSize() { + return cctx.tm().threadMapSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxXidMapSize() { + return cctx.tm().idMapSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxPrepareQueueSize() { + return cctx.tm().prepareQueueSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxStartVersionCountsSize() { + return cctx.tm().startVersionCountsSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxCommittedVersionsSize() { + return cctx.tm().committedVersionsSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxRolledbackVersionsSize() { + return cctx.tm().rolledbackVersionsSize(); + } + + /** {@inheritDoc} */ + @Override public int getTxDhtThreadMapSize() { + return cctx.isNear() ? dhtCtx.tm().threadMapSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getTxDhtXidMapSize() { + return cctx.isNear() ? dhtCtx.tm().idMapSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getTxDhtCommitQueueSize() { + return cctx.isNear() ? dhtCtx.tm().commitQueueSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getTxDhtPrepareQueueSize() { + return cctx.isNear() ? dhtCtx.tm().prepareQueueSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getTxDhtStartVersionCountsSize() { + return cctx.isNear() ? dhtCtx.tm().startVersionCountsSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getTxDhtCommittedVersionsSize() { + return cctx.isNear() ? dhtCtx.tm().committedVersionsSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getTxDhtRolledbackVersionsSize() { + return cctx.isNear() ? dhtCtx.tm().rolledbackVersionsSize() : -1; + } + + /** {@inheritDoc} */ + @Override public boolean isWriteBehindEnabled() { + return store != null; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindFlushSize() { + return store != null ? store.getWriteBehindFlushSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindFlushThreadCount() { + return store != null ? store.getWriteBehindFlushThreadCount() : -1; + } + + /** {@inheritDoc} */ + @Override public long getWriteBehindFlushFrequency() { + return store != null ? store.getWriteBehindFlushFrequency() : -1; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindStoreBatchSize() { + return store != null ? store.getWriteBehindStoreBatchSize() : -1; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindTotalCriticalOverflowCount() { + return store != null ? store.getWriteBehindTotalCriticalOverflowCount() : -1; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindCriticalOverflowCount() { + return store != null ? store.getWriteBehindCriticalOverflowCount() : -1; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindErrorRetryCount() { + return store != null ? store.getWriteBehindErrorRetryCount() : -1; + } + + /** {@inheritDoc} */ + @Override public int getWriteBehindBufferSize() { + return store != null ? store.getWriteBehindBufferSize() : -1; + } + + /** {@inheritDoc} */ + @Override public void clear() { + cctx.cache().metrics0().clear(); + } + + /** {@inheritDoc} */ + @Override public long getCacheHits() { + return cctx.cache().metrics0().getCacheHits(); + } + + /** {@inheritDoc} */ + @Override public float getCacheHitPercentage() { + return cctx.cache().metrics0().getCacheHitPercentage(); + } + + /** {@inheritDoc} */ + @Override public long getCacheMisses() { + return cctx.cache().metrics0().getCacheMisses(); + } + + /** {@inheritDoc} */ + @Override public float getCacheMissPercentage() { + return cctx.cache().metrics0().getCacheMissPercentage(); + } + + /** {@inheritDoc} */ + @Override public long getCacheGets() { + return cctx.cache().metrics0().getCacheGets(); + } + + /** {@inheritDoc} */ + @Override public long getCachePuts() { + return cctx.cache().metrics0().getCachePuts(); + } + + /** {@inheritDoc} */ + @Override public long getCacheRemovals() { + return cctx.cache().metrics0().getCacheRemovals(); + } + + /** {@inheritDoc} */ + @Override public long getCacheEvictions() { + return cctx.cache().metrics0().getCacheEvictions(); + } + + /** {@inheritDoc} */ + @Override public float getAverageGetTime() { + return cctx.cache().metrics0().getAverageGetTime(); + } + + /** {@inheritDoc} */ + @Override public float getAveragePutTime() { + return cctx.cache().metrics0().getAveragePutTime(); + } + + /** {@inheritDoc} */ + @Override public float getAverageRemoveTime() { + return cctx.cache().metrics0().getAverageRemoveTime(); + } + + /** {@inheritDoc} */ + @Override public float getAverageTxCommitTime() { + return cctx.cache().metrics0().getAverageTxCommitTime(); + } + + /** {@inheritDoc} */ + @Override public float getAverageTxRollbackTime() { + return cctx.cache().metrics0().getAverageTxRollbackTime(); + } + + /** {@inheritDoc} */ + @Override public long getCacheTxCommits() { + return cctx.cache().metrics0().getCacheTxCommits(); + } + + /** {@inheritDoc} */ + @Override public long getCacheTxRollbacks() { + return cctx.cache().metrics0().getCacheTxRollbacks(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java index 1f9cdb0..68f782d 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheAdapter.java @@ -149,6 +149,9 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, /** Cache metrics. */ protected volatile CacheMetricsImpl metrics; + /** Cache mxBean. */ + protected IgniteCacheMxBean mxBean; + /** Logger. */ protected IgniteLogger log; @@ -228,6 +231,8 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, metrics = new CacheMetricsImpl(); + mxBean = new CacheMxBeanImpl(ctx); + IgniteFsConfiguration[] ggfsCfgs = gridCfg.getGgfsConfiguration(); if (ggfsCfgs != null) { @@ -3392,7 +3397,12 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, /** {@inheritDoc} */ @Override public CacheMetrics metrics() { - return metrics; + return new CacheMetricsSnapshot(metrics); + } + + /** {@inheritDoc} */ + @Override public IgniteCacheMxBean mxBean() { + return mxBean; } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java index 611e2cb..1cd4759 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProcessor.java @@ -101,12 +101,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { /** Caches stop sequence. */ private final Deque<GridCacheAdapter<?, ?>> stopSeq; - /** MBean server. */ - private final MBeanServer mBeanSrv; - - /** Cache MBeans. */ - private final Collection<ObjectName> cacheMBeans = new LinkedList<>(); - /** Transaction interface implementation. */ private IgniteTransactionsImpl transactions; @@ -124,8 +118,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { sysCaches = new HashSet<>(); stopSeq = new LinkedList<>(); - - mBeanSrv = ctx.config().getMBeanServer(); } /** @@ -893,21 +885,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { jCacheProxies.put(e.getKey(), new IgniteCacheProxy(cache.context(), cache, null, false)); } - for (GridCacheAdapter<?, ?> cache : caches.values()) { - try { - ObjectName mb = U.registerCacheMBean(mBeanSrv, ctx.gridName(), cache.name(), "Cache", - new CacheMxBeanAdapter(cache.context()), IgniteCacheMxBean.class); - - cacheMBeans.add(mb); - - if (log.isDebugEnabled()) - log.debug("Registered cache MBean: " + mb); - } - catch (JMException ex) { - U.error(log, "Failed to register cache MBean.", ex); - } - } - // Internal caches which should not be returned to user. for (Map.Entry<String, GridCacheAdapter<?, ?>> e : caches.entrySet()) { GridCacheAdapter cache = e.getValue(); @@ -1387,20 +1364,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { if (ctx.config().isDaemon()) return; - if (!F.isEmpty(cacheMBeans)) { - for (ObjectName mb : cacheMBeans) { - try { - mBeanSrv.unregisterMBean(mb); - - if (log.isDebugEnabled()) - log.debug("Unregistered cache MBean: " + mb); - } - catch (JMException e) { - U.error(log, "Failed to unregister cache MBean: " + mb, e); - } - } - } - for (GridCacheAdapter<?, ?> cache : stopSeq) { GridCacheContext ctx = cache.context(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProxyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProxyImpl.java index 5c986cf..ada2542 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProxyImpl.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheProxyImpl.java @@ -208,6 +208,18 @@ public class GridCacheProxyImpl<K, V> implements GridCacheProxy<K, V>, Externali } /** {@inheritDoc} */ + @Override public IgniteCacheMxBean mxBean() { + GridCacheProjectionImpl<K, V> prev = gate.enter(prj); + + try { + return cache.mxBean(); + } + finally { + gate.leave(prev); + } + } + + /** {@inheritDoc} */ @Override public long overflowSize() throws IgniteCheckedException { GridCacheProjectionImpl<K, V> prev = gate.enter(prj); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/main/java/org/gridgain/grid/kernal/visor/cache/VisorCacheResetMetricsTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/visor/cache/VisorCacheResetMetricsTask.java b/modules/core/src/main/java/org/gridgain/grid/kernal/visor/cache/VisorCacheResetMetricsTask.java index 3a18008..ea25524 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/visor/cache/VisorCacheResetMetricsTask.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/visor/cache/VisorCacheResetMetricsTask.java @@ -56,7 +56,7 @@ public class VisorCacheResetMetricsTask extends VisorOneNodeTask<String, Void> { GridCache cache = g.cachex(cacheName); if (cache != null) - cache.metrics().clear(); + cache.mxBean().clear(); return null; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/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 920910e..c757ebc 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 @@ -81,7 +81,7 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract assert g.cache(null).isEmpty(); - g.cache(null).metrics().clear(); + g.cache(null).mxBean().clear(); g.transactions().resetMetrics(); } @@ -101,6 +101,15 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract /** * @throws Exception If failed. */ + public void testGetMetricsSnapshot() throws Exception { + IgniteCache<Object, Object> cache = grid(0).jcache(null); + + assertNotSame("Method metrics() should return snapshot.", cache.metrics(), cache.metrics()); + } + + /** + * @throws Exception If failed. + */ public void testRemoveAsyncAvgTime() throws Exception { GridCache<Object, Object> cache = grid(0).cache(null); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java index ecf83dc..4b6a799 100644 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java +++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java @@ -92,7 +92,7 @@ public class GridCachePartitionedNearDisabledMetricsSelfTest extends GridCacheAb assert g.cache(null).isEmpty(); - g.cache(null).metrics().clear(); + g.cache(null).mxBean().clear(); } assertNull("Value is not null for key: " + 0, cache.get(0)); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/669f3a91/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 d9a6861..3a8f79e 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 @@ -70,7 +70,7 @@ public class GridCacheNearMetricsSelfTest extends GridCacheAbstractSelfTest { assert g.cache(null).isEmpty(); - g.cache(null).metrics().clear(); + g.cache(null).mxBean().clear(); } }