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;
+    }
 }