You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by nt...@apache.org on 2015/08/14 11:55:14 UTC

[18/23] incubator-ignite git commit: ignite-946: simplified VersionedEntry interface

ignite-946: simplified VersionedEntry interface


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/b6bef13e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/b6bef13e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/b6bef13e

Branch: refs/heads/master
Commit: b6bef13eef82d9a2e040c01881d07c186ade372e
Parents: dd3cecf
Author: Denis Magda <dm...@gridgain.com>
Authored: Tue Aug 11 10:17:24 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Tue Aug 11 10:17:24 2015 +0300

----------------------------------------------------------------------
 .../ignite/cache/version/VersionedEntry.java    | 83 +++++++++-----------
 .../cache/version/CacheVersionedEntryImpl.java  | 23 +-----
 .../cache/version/GridCacheVersionManager.java  |  4 +-
 .../CacheVersionedEntryAbstractTest.java        |  9 +--
 4 files changed, 45 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6bef13e/modules/core/src/main/java/org/apache/ignite/cache/version/VersionedEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/version/VersionedEntry.java b/modules/core/src/main/java/org/apache/ignite/cache/version/VersionedEntry.java
index 1aac68a..135d681 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/version/VersionedEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/version/VersionedEntry.java
@@ -24,7 +24,7 @@ import javax.cache.processor.*;
 import java.util.*;
 
 /**
- * Cache entry that stores entry's version related information.
+ * Cache entry that stores entry's version related information along with its data.
  *
  * To get a {@code VersionedEntry} of an {@link Cache.Entry} use {@link Cache.Entry#unwrap(Class)} by passing
  * {@code VersionedEntry} class to it as the argument.
@@ -42,62 +42,51 @@ import java.util.*;
  * is excluded from responses.
  * <h2 class="header">Java Example</h2>
  * <pre name="code" class="java">
- * Cache<Integer, String> cache = grid(0).cache(null);
+ * IgniteCache<Integer, String> cache = grid(0).cache(null);
  *
- *  cache.invoke(100, new EntryProcessor<Integer, String, Object>() {
- *      public Object process(MutableEntry<Integer, String> entry, Object... arguments) throws EntryProcessorException {
- *          VersionedEntry<Integer, String> verEntry = entry.unwrap(VersionedEntry.class);
- *          return entry;
- *       }
- *   });
+ * VersionedEntry<String, Integer> entry1 = cache.invoke(100,
+ *     new EntryProcessor<Integer, String, VersionedEntry<String, Integer>>() {
+ *          public VersionedEntry<String, Integer> process(MutableEntry<Integer, String> entry,
+ *              Object... arguments) throws EntryProcessorException {
+ *                  return entry.unwrap(VersionedEntry.class);
+ *          }
+ *     });
+ *
+ * // Cache entry for the given key may be updated at some point later.
+ *
+ * VersionedEntry<String, Integer> entry2 = cache.invoke(100,
+ *     new EntryProcessor<Integer, String, VersionedEntry<String, Integer>>() {
+ *          public VersionedEntry<String, Integer> process(MutableEntry<Integer, String> entry,
+ *              Object... arguments) throws EntryProcessorException {
+ *                  return entry.unwrap(VersionedEntry.class);
+ *          }
+ *     });
+ *
+ * if (entry1.version().compareTo(entry2.version()) < 0) {
+ *     // the entry has been updated
+ * }
  * </pre>
  */
 public interface VersionedEntry<K, V> extends Cache.Entry<K, V> {
     /**
-     * Versions comparator.
-     */
-    public static final Comparator<VersionedEntry> VER_COMP = new Comparator<VersionedEntry>() {
-        @Override public int compare(VersionedEntry o1, VersionedEntry o2) {
-            int res = Integer.compare(o1.topologyVersion(), o2.topologyVersion());
-
-            if (res != 0)
-                return res;
-
-            res = Long.compare(o1.order(), o2.order());
-
-            if (res != 0)
-                return res;
-
-            return Integer.compare(o1.nodeOrder(), o2.nodeOrder());
-        }
-    };
-
-    /**
-     * Gets the topology version at the time when the entry with a given pair of key and value has been created.
-     *
-     * @return Topology version plus number of seconds from the start time of the first grid node.
-     */
-    public int topologyVersion();
-
-    /**
-     * Gets versioned entry unique order.
-     * Each time a cache entry for a given key is updated a new {@code VersionedEntry} with increased order is created.
-     *
-     * @return Versioned entry unique order.
-     */
-    public long order();
-
-    /**
-     * Gets local node order at the time when the entry with a given pair of key and value has been created.
+     * Returns a comparable object representing the version of this cache entry.
+     * <p>
+     * It is valid to compare cache entries' versions for the same key. In this case the latter update will be
+     * represented by a higher version. The result of versions comparison of cache entries of different keys is
+     * undefined.
      *
-     * @return Local node order on which this version has been assigned.
+     * @return Version of this cache entry.
      */
-    public int nodeOrder();
+    public Comparable version();
 
     /**
-     * Gets the time when the entry with a given pair of key and value has been created.
+     * Returns the time when the cache entry for the given key has been updated or initially created.
+     * <p>
+     * It is valid to compare cache entries' update time for the same key. In this case the latter update will
+     * be represented by higher update time. The result of update time comparison of cache entries of different keys is
+     * undefined.
      *
      * @return Time in milliseconds.
      */
-    public long creationTime();
+    public long updateTime();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6bef13e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryImpl.java
index 22b699a..97b1995 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryImpl.java
@@ -51,30 +51,13 @@ public class CacheVersionedEntryImpl<K, V> extends CacheEntryImpl<K, V> implemen
         this.ver = ver;
     }
 
-    /**
-     * @return Version.
-     */
-    @Nullable public GridCacheVersion version() {
-        return ver;
-    }
-
-    /** {@inheritDoc} */
-    @Override public int topologyVersion() {
-        return ver.topologyOrder();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int nodeOrder() {
-        return ver.nodeOrder();
-    }
-
     /** {@inheritDoc} */
-    @Override public long order() {
-        return ver.order();
+    public GridCacheVersion version() {
+        return ver;
     }
 
     /** {@inheritDoc} */
-    @Override public long creationTime() {
+    @Override public long updateTime() {
         return ver.globalTime();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6bef13e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java
index d465a0c..85b14a4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionManager.java
@@ -224,6 +224,8 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter {
         if (topVer == -1)
             topVer = cctx.kernalContext().discovery().topologyVersion();
 
+        long globalTime = cctx.kernalContext().clockSync().adjustedTime(topVer);
+
         if (addTime) {
             if (gridStartTime == 0)
                 gridStartTime = cctx.kernalContext().discovery().gridStartTime();
@@ -231,8 +233,6 @@ public class GridCacheVersionManager extends GridCacheSharedManagerAdapter {
             topVer += (gridStartTime - TOP_VER_BASE_TIME) / 1000;
         }
 
-        long globalTime = cctx.kernalContext().clockSync().adjustedTime(topVer);
-
         int locNodeOrder = (int)cctx.localNode().order();
 
         if (txSerEnabled) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6bef13e/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryAbstractTest.java
index 0ad8038..9648b9b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryAbstractTest.java
@@ -152,7 +152,8 @@ public abstract class CacheVersionedEntryAbstractTest extends GridCacheAbstractS
                     }
             });
 
-        assert VersionedEntry.VER_COMP.compare(ver1, ver2) < 0;
+        assert ver1.version().compareTo(ver2.version()) < 0;
+        assert ver1.updateTime() < ver2.updateTime();
     }
 
     /**
@@ -161,10 +162,8 @@ public abstract class CacheVersionedEntryAbstractTest extends GridCacheAbstractS
     private void checkVersionedEntry(VersionedEntry<Integer, String> entry) {
         assertNotNull(entry);
 
-        assert entry.topologyVersion() > 0;
-        assert entry.order() > 0;
-        assert entry.nodeOrder() > 0;
-        assert entry.creationTime() > 0;
+        assertNotNull(entry.version());
+        assert entry.updateTime() > 0;
 
         assertNotNull(entry.getKey());
         assertNotNull(entry.getValue());