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:17 UTC
[2/7] incubator-ignite git commit: IGNITE-49 Implemented
CacheStatisticsMXBean#getCacheRemovals()
IGNITE-49 Implemented CacheStatisticsMXBean#getCacheRemovals()
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/70d98c20
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/70d98c20
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/70d98c20
Branch: refs/heads/ignite-49
Commit: 70d98c20922d1cb9c31c3ef7b7d131acbcea2459
Parents: 9e7f696
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Wed Dec 24 12:00:34 2014 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Fri Jan 16 14:13:33 2015 +0300
----------------------------------------------------------------------
.../ignite/cache/CacheConfigurationMXBean.java | 68 ++++++++++++
.../gridgain/grid/cache/GridCacheMetrics.java | 3 +-
.../processors/cache/GridCacheMapEntry.java | 23 ++++-
.../cache/GridCacheMetricsAdapter.java | 103 ++++++++++++++++++-
.../cache/GridCacheAbstractMetricsSelfTest.java | 11 ++
5 files changed, 201 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70d98c20/modules/core/src/main/java/org/apache/ignite/cache/CacheConfigurationMXBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheConfigurationMXBean.java b/modules/core/src/main/java/org/apache/ignite/cache/CacheConfigurationMXBean.java
new file mode 100644
index 0000000..2f04cc8
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheConfigurationMXBean.java
@@ -0,0 +1,68 @@
+// @java.file.header
+
+/* _________ _____ __________________ _____
+ * __ ____/___________(_)______ /__ ____/______ ____(_)_______
+ * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
+ * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
+ * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
+ */
+
+package org.apache.ignite.cache;
+
+import javax.cache.*;
+import javax.cache.configuration.*;
+import javax.cache.management.*;
+
+/**
+ * TODO: Add class description.
+ */
+public class CacheConfigurationMXBean<K, V> implements CacheMXBean {
+ /**
+ *
+ */
+ private final Cache<K, V> cache;
+
+ /**
+ * Constructor.
+ *
+ * @param cache The cache.
+ */
+ public CacheConfigurationMXBean(Cache<K, V> cache) {
+ this.cache = cache;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getKeyType() {
+ return cache.getConfiguration(CompleteConfiguration.class).getKeyType().getName();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getValueType() {
+ return cache.getConfiguration(CompleteConfiguration.class).getValueType().getName();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isReadThrough() {
+ return cache.getConfiguration(CompleteConfiguration.class).isReadThrough();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isWriteThrough() {
+ return cache.getConfiguration(CompleteConfiguration.class).isWriteThrough();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isStoreByValue() {
+ return cache.getConfiguration(Configuration.class).isStoreByValue();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isStatisticsEnabled() {
+ return cache.getConfiguration(CompleteConfiguration.class).isStatisticsEnabled();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isManagementEnabled() {
+ return cache.getConfiguration(CompleteConfiguration.class).isManagementEnabled();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70d98c20/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheMetrics.java b/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheMetrics.java
index c6a5302..d523c25 100644
--- a/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheMetrics.java
+++ b/modules/core/src/main/java/org/gridgain/grid/cache/GridCacheMetrics.java
@@ -17,13 +17,14 @@
package org.gridgain.grid.cache;
+import javax.cache.management.*;
import java.io.*;
/**
* Cache metrics used to obtain statistics on cache itself.
* Use {@link GridCache#metrics()} to obtain metrics for a cache.
*/
-public interface GridCacheMetrics extends Serializable {
+public interface GridCacheMetrics extends CacheStatisticsMXBean, Serializable {
/**
* Gets create time of the owning entity (either cache or entry).
*
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70d98c20/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 9b8945a..46dc22d 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
@@ -1293,7 +1293,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V>
drReplicate(drType, null, null, newVer);
if (metrics)
- cctx.cache().metrics0().onWrite();
+ cctx.cache().metrics0().onRemove();
if (tx == null)
obsoleteVer = newVer;
@@ -1588,8 +1588,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V>
res = hadVal;
}
- if (metrics)
- cctx.cache().metrics0().onWrite();
+ updateMetrics(op, metrics);
cctx.continuousQueries().onEntryUpdate(this, key, val, valueBytesUnlocked(), old, oldBytes);
@@ -2057,8 +2056,7 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V>
newDrExpireTime = -1L;
}
- if (metrics)
- cctx.cache().metrics0().onWrite();
+ updateMetrics(op, metrics);
if (primary || cctx.isReplicated())
cctx.continuousQueries().onEntryUpdate(this, key, val, valueBytesUnlocked(), old, oldBytes);
@@ -4130,6 +4128,21 @@ public abstract class GridCacheMapEntry<K, V> implements GridCacheEntryEx<K, V>
}
/**
+ * Updates metrics.
+ *
+ * @param op Operation.
+ * @param metrics Update merics flag.
+ */
+ private void updateMetrics(GridCacheOperation op, boolean metrics) {
+ if (metrics) {
+ if (op == DELETE)
+ cctx.cache().metrics0().onRemove();
+ else
+ cctx.cache().metrics0().onWrite();
+ }
+ }
+
+ /**
* @return TTL.
*/
public long ttlExtras() {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70d98c20/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 9a01ef5..63899f8 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
@@ -64,6 +64,10 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable
/** Number of transaction rollbacks. */
private volatile int txRollbacks;
+ private volatile long getCnt;
+ private volatile long putCnt;
+ private volatile long rmCnt;
+
/** Cache metrics. */
@GridToStringExclude
private transient GridCacheMetricsAdapter delegate;
@@ -90,6 +94,7 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable
misses = m.misses();
txCommits = m.txCommits();
txRollbacks = m.txRollbacks();
+ rmCnt = m.getCacheRemovals();
}
/**
@@ -131,7 +136,7 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable
/** {@inheritDoc} */
@Override public int writes() {
- return writes;
+ return (int)(writes + rmCnt);
}
/** {@inheritDoc} */
@@ -154,6 +159,90 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable
return txRollbacks;
}
+ /** {@inheritDoc} */
+ @Override public void clear() {
+ //TODO: rewrite
+ createTime = U.currentTimeMillis();
+ readTime = createTime;
+ writeTime = createTime;
+ commitTime = createTime;
+ rollbackTime = createTime;
+ reads = 0;
+ writes = 0;
+ hits = 0;
+ misses = 0;
+ txCommits = 0;
+ txRollbacks = 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCacheHits() {
+ return hits;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getCacheHitPercentage() {
+ long hits0 = hits;
+
+ if (hits0 == 0)
+ return 0;
+
+ return (float) hits0 / getCacheGets() * 100.0f;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCacheMisses() {
+ return misses;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getCacheMissPercentage() {
+ long misses0 = misses;
+
+ if (misses0 == 0)
+ return 0;
+
+ return (float) misses0 / getCacheGets() * 100.0f;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCacheGets() {
+ //TODO: split read
+ return 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCachePuts() {
+ //TODO: split write
+ return 0;
+ }
+
+ @Override
+ public long getCacheRemovals() {
+ return rmCnt;
+ }
+
+ @Override
+ public long getCacheEvictions() {
+ //TODO: discuss with Semen
+ return 0;
+ }
+
+ @Override
+ public float getAverageGetTime() {
+ return 0;
+ }
+
+ @Override
+ public float getAveragePutTime() {
+ return 0;
+ }
+
+ @Override
+ public float getAverageRemoveTime() {
+ return 0;
+ }
+
/**
* Cache read callback.
* @param isHit Hit or miss flag.
@@ -185,6 +274,18 @@ public class GridCacheMetricsAdapter implements GridCacheMetrics, Externalizable
}
/**
+ * Cache remove callback.
+ */
+ public void onRemove(){
+ writeTime = U.currentTimeMillis();
+
+ rmCnt++;
+
+ if (delegate != null)
+ delegate.onRemove();
+ }
+
+ /**
* Transaction commit callback.
*/
public void onTxCommit() {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/70d98c20/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 54a2b2d..33fa252 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
@@ -215,4 +215,15 @@ public abstract class GridCacheAbstractMetricsSelfTest extends GridCacheAbstract
assertEquals("Expected 2 misses", 2, cache.metrics().misses());
assertEquals("Expected 1 hit", 1, cache.metrics().hits());
}
+
+ public void testRemoves() throws Exception {
+ GridCache<Integer, Integer> cache = grid(0).cache(null);
+
+ cache.put(1, 1);
+
+ // +1 remove
+ cache.remove(1);
+
+ assert cache.metrics().getCacheRemovals() == 1;
+ }
}