Fixed serialization of conflict version.

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

Branch: refs/heads/ignite-2.1.2-exchange
Commit: ba809d2276b1cf2ffab4260dfffaf709a7faa37a
Parents: 8c04df6
Author: Konstantin Dudkov <[email protected]>
Authored: Fri Jun 16 22:27:22 2017 +0300
Committer: devozerov <[email protected]>
Committed: Fri Jun 16 22:27:22 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheContext.java      |  3 +-
 .../processors/cache/GridCacheProcessor.java    |  7 ++
 .../cache/IgniteCacheOffheapManagerImpl.java    |  7 +-
 .../persistence/freelist/FreeListImpl.java      | 11 ++-
 .../persistence/tree/io/CacheVersionIO.java     | 99 +++++++++++++++++---
 .../cache/transactions/IgniteTxAdapter.java     | 31 +++---
 .../version/CacheVersionConflictResolver.java   |  2 +
 .../GridCacheLazyPlainVersionedEntry.java       |  5 +-
 .../version/GridCachePlainVersionedEntry.java   |  3 +-
 .../version/GridCacheRawVersionedEntry.java     |  5 +-
 .../GridCacheVersionConflictContext.java        | 16 +++-
 .../cache/version/GridCacheVersionedEntry.java  |  4 +-
 12 files changed, 151 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 2dc575a..33db2ff 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -1608,7 +1608,8 @@ public class GridCacheContext<K, V> implements 
Externalizable {
         GridCacheVersionedEntryEx<K, V> newEntry, boolean atomicVerComp) 
throws IgniteCheckedException {
         assert conflictRslvr != null : "Should not reach this place.";
 
-        GridCacheVersionConflictContext<K, V> ctx = 
conflictRslvr.resolve(oldEntry, newEntry, atomicVerComp);
+        GridCacheVersionConflictContext<K, V> ctx = 
conflictRslvr.resolve(cacheObjCtx, oldEntry, newEntry,
+            atomicVerComp);
 
         if (ctx.isManualResolve())
             drMgr.onReceiveCacheConflictResolved(ctx.isUseNew(), 
ctx.isUseOld(), ctx.isMerge());

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 2729829..6750582 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -3191,6 +3191,13 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
         if (ctx.discovery().localNode().isClient()) {
             IgniteCacheProxy<K, V> proxy = (IgniteCacheProxy<K, 
V>)jCacheProxies.get(name);
 
+            if (proxy == null) {
+                GridCacheAdapter<?, ?> cacheAdapter = caches.get(name);
+
+                if (cacheAdapter != null)
+                    proxy = new IgniteCacheProxy(cacheAdapter.context(), 
cacheAdapter, null, false);
+            }
+
             assert proxy != null;
 
             return proxy.internalProxy();

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 74863f8..e90a6c4 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -42,6 +42,7 @@ import 
org.apache.ignite.internal.processors.cache.persistence.CacheSearchRow;
 import org.apache.ignite.internal.processors.cache.persistence.RootPage;
 import org.apache.ignite.internal.processors.cache.persistence.RowStore;
 import 
org.apache.ignite.internal.processors.cache.persistence.freelist.FreeList;
+import 
org.apache.ignite.internal.processors.cache.persistence.freelist.FreeListImpl;
 import org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.BPlusIO;
 import 
org.apache.ignite.internal.processors.cache.persistence.tree.io.BPlusInnerIO;
@@ -1081,14 +1082,12 @@ public class IgniteCacheOffheapManagerImpl implements 
IgniteCacheOffheapManager
             if (oldRow.expireTime() != dataRow.expireTime())
                 return false;
 
-            CacheObjectContext coCtx = cctx.cacheObjectContext();
-
-            int oldLen = oldRow.key().valueBytesLength(coCtx) + 
oldRow.value().valueBytesLength(coCtx);
+            int oldLen = FreeListImpl.getRowSize(oldRow);
 
             if (oldLen > updateValSizeThreshold)
                 return false;
 
-            int newLen = dataRow.key().valueBytesLength(coCtx) + 
dataRow.value().valueBytesLength(coCtx);
+            int newLen = FreeListImpl.getRowSize(dataRow);
 
             return oldLen == newLen;
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
index 4e8b8d8..139c6f3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/FreeListImpl.java
@@ -28,6 +28,8 @@ import 
org.apache.ignite.internal.pagemem.wal.record.delta.DataPageInsertFragmen
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.DataPageInsertRecord;
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.DataPageRemoveRecord;
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.DataPageUpdateRecord;
+import org.apache.ignite.internal.processors.cache.CacheObject;
+import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
 import 
org.apache.ignite.internal.processors.cache.persistence.MemoryMetricsImpl;
 import org.apache.ignite.internal.processors.cache.persistence.MemoryPolicy;
@@ -580,9 +582,12 @@ public class FreeListImpl extends PagesList implements 
FreeList, ReuseList {
      * @return Entry size on page.
      * @throws IgniteCheckedException If failed.
      */
-    private static int getRowSize(CacheDataRow row) throws 
IgniteCheckedException {
-        int keyLen = row.key().valueBytesLength(null);
-        int valLen = row.value().valueBytesLength(null);
+    public static int getRowSize(CacheDataRow row) throws 
IgniteCheckedException {
+        KeyCacheObject key = row.key();
+        CacheObject val = row.value();
+
+        int keyLen = key.valueBytesLength(null);
+        int valLen = val.valueBytesLength(null);
 
         return keyLen + valLen + CacheVersionIO.size(row.version(), false) + 8 
+ (row.cacheId() == 0 ? 0 : 4);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/CacheVersionIO.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/CacheVersionIO.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/CacheVersionIO.java
index fef5612..d9fdf0e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/CacheVersionIO.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/CacheVersionIO.java
@@ -21,6 +21,7 @@ import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.pagemem.PageUtils;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
 
 /**
  * Utility to read and write {@link GridCacheVersion} instances.
@@ -30,7 +31,7 @@ public class CacheVersionIO {
     private static final byte NULL_PROTO_VER = 0;
 
     /** */
-    private static final byte MAX_PROTO_VER = 1;
+    private static final byte MAX_PROTO_VER = 2;
 
     /** */
     private static final int NULL_SIZE = 1;
@@ -38,6 +39,9 @@ public class CacheVersionIO {
     /** Serialized size in bytes. */
     private static final int SIZE_V1 = 17;
 
+    /** Serialized size in bytes. */
+    private static final int SIZE_V2 = 33;
+
     /**
      * @param ver Version.
      * @param allowNull Is {@code null} version allowed.
@@ -51,7 +55,7 @@ public class CacheVersionIO {
             throw new IllegalStateException("Cache version is null");
         }
 
-        return SIZE_V1;
+        return ver instanceof GridCacheVersionEx ? SIZE_V2 : SIZE_V1;
     }
 
     /**
@@ -66,6 +70,18 @@ public class CacheVersionIO {
             else
                 throw new IllegalStateException("Cache version is null");
         }
+        else if (ver instanceof GridCacheVersionEx) {
+            byte protoVer = 2; // Version of serialization protocol.
+
+            buf.put(protoVer);
+            buf.putInt(ver.topologyVersion());
+            buf.putInt(ver.nodeOrderAndDrIdRaw());
+            buf.putLong(ver.order());
+
+            buf.putInt(ver.conflictVersion().topologyVersion());
+            buf.putInt(ver.conflictVersion().nodeOrderAndDrIdRaw());
+            buf.putLong(ver.conflictVersion().order());
+        }
         else {
             byte protoVer = 1; // Version of serialization protocol.
 
@@ -88,6 +104,18 @@ public class CacheVersionIO {
             else
                 throw new IllegalStateException("Cache version is null");
         }
+        else if (ver instanceof GridCacheVersionEx) {
+            byte protoVer = 2; // Version of serialization protocol.
+
+            PageUtils.putByte(addr, 0, protoVer);
+            PageUtils.putInt(addr, 1, ver.topologyVersion());
+            PageUtils.putInt(addr, 5, ver.nodeOrderAndDrIdRaw());
+            PageUtils.putLong(addr, 9, ver.order());
+
+            PageUtils.putInt(addr, 17, 
ver.conflictVersion().topologyVersion());
+            PageUtils.putInt(addr, 21, 
ver.conflictVersion().nodeOrderAndDrIdRaw());
+            PageUtils.putLong(addr, 25, ver.conflictVersion().order());
+        }
         else {
             byte protoVer = 1; // Version of serialization protocol.
 
@@ -134,6 +162,9 @@ public class CacheVersionIO {
             case 1:
                 return SIZE_V1;
 
+            case 2:
+                return SIZE_V2;
+
             default:
                 throw new IllegalStateException();
         }
@@ -151,14 +182,34 @@ public class CacheVersionIO {
     public static GridCacheVersion read(ByteBuffer buf, boolean allowNull) 
throws IgniteCheckedException {
         byte protoVer = checkProtocolVersion(buf.get(), allowNull);
 
-        if (protoVer == NULL_PROTO_VER)
-            return null;
+        switch (protoVer) {
+            case NULL_PROTO_VER:
+                return null;
+
+            case 1: {
+                int topVer = buf.getInt();
+                int nodeOrderDrId = buf.getInt();
+                long order = buf.getLong();
+
+                return new GridCacheVersion(topVer, nodeOrderDrId, order);
+            }
+
+            case 2: {
+                int topVer = buf.getInt();
+                int nodeOrderDrId = buf.getInt();
+                long order = buf.getLong();
+
+                int conflictTop = buf.getInt();
+                int conflictNodeOrderDrId = buf.getInt();
+                long conflictOrder = buf.getLong();
 
-        int topVer = buf.getInt();
-        int nodeOrderDrId = buf.getInt();
-        long order = buf.getLong();
+                return new GridCacheVersionEx(topVer, nodeOrderDrId, order,
+                    new GridCacheVersion(conflictTop, conflictNodeOrderDrId, 
conflictOrder));
+            }
 
-        return new GridCacheVersion(topVer, nodeOrderDrId, order);
+            default:
+                throw new IllegalStateException();
+        }
     }
 
     /**
@@ -172,13 +223,33 @@ public class CacheVersionIO {
     public static GridCacheVersion read(long pageAddr, boolean allowNull) 
throws IgniteCheckedException {
         byte protoVer = checkProtocolVersion(PageUtils.getByte(pageAddr, 0), 
allowNull);
 
-        if (protoVer == NULL_PROTO_VER)
-            return null;
+        switch (protoVer) {
+            case NULL_PROTO_VER:
+                return null;
+
+            case 1: {
+                int topVer = PageUtils.getInt(pageAddr, 1);
+                int nodeOrderDrId = PageUtils.getInt(pageAddr, 5);
+                long order = PageUtils.getLong(pageAddr, 9);
+
+                return new GridCacheVersion(topVer, nodeOrderDrId, order);
+            }
+
+            case 2: {
+                int topVer = PageUtils.getInt(pageAddr, 1);
+                int nodeOrderDrId = PageUtils.getInt(pageAddr, 5);
+                long order = PageUtils.getLong(pageAddr, 9);
 
-        int topVer = PageUtils.getInt(pageAddr, 1);
-        int nodeOrderDrId = PageUtils.getInt(pageAddr, 5);
-        long order = PageUtils.getLong(pageAddr, 9);
+                int conflictTop = PageUtils.getInt(pageAddr, 17);
+                int conflictNodeOrderDrId = PageUtils.getInt(pageAddr, 21);
+                long conflictOrder = PageUtils.getLong(pageAddr, 25);
 
-        return new GridCacheVersion(topVer, nodeOrderDrId, order);
+                return new GridCacheVersionEx(topVer, nodeOrderDrId, order,
+                    new GridCacheVersion(conflictTop, conflictNodeOrderDrId, 
conflictOrder));
+            }
+
+            default:
+                throw new IllegalStateException();
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index 96af425..ee8afb0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -415,24 +415,29 @@ public abstract class IgniteTxAdapter extends 
GridMetadataAwareAdapter implement
      */
     @SuppressWarnings({"CatchGenericClass"})
     protected void uncommit() {
-        for (IgniteTxEntry e : writeMap().values()) {
-            try {
-                GridCacheEntryEx Entry = e.cached();
+        try {
+            for (IgniteTxEntry e : writeMap().values()) {
+                try {
+                    GridCacheEntryEx Entry = e.cached();
 
-                if (e.op() != NOOP)
-                    Entry.invalidate(null, xidVer);
-            }
-            catch (Throwable t) {
-                U.error(log, "Failed to invalidate transaction entries while 
reverting a commit.", t);
+                    if (e.op() != NOOP)
+                        Entry.invalidate(null, xidVer);
+                }
+                catch (Throwable t) {
+                    U.error(log, "Failed to invalidate transaction entries 
while reverting a commit.", t);
 
-                if (t instanceof Error)
-                    throw (Error)t;
+                    if (t instanceof Error)
+                        throw (Error)t;
 
-                break;
+                    break;
+                }
             }
-        }
 
-        cctx.tm().uncommitTx(this);
+            cctx.tm().uncommitTx(this);
+        }
+        catch (Exception ex) {
+            U.error(log, "Failed to do uncommit.", ex);
+        }
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionConflictResolver.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionConflictResolver.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionConflictResolver.java
index 0fb3ebf..0559937 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionConflictResolver.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/CacheVersionConflictResolver.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.processors.cache.version;
 
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 
 /**
  * Cache version conflict resolver.
@@ -33,6 +34,7 @@ public interface CacheVersionConflictResolver {
      * @throws IgniteCheckedException If failed.
      */
     public <K, V> GridCacheVersionConflictContext<K, V> resolve(
+        CacheObjectValueContext ctx,
         GridCacheVersionedEntryEx<K, V> oldEntry,
         GridCacheVersionedEntryEx<K, V> newEntry,
         boolean atomicVerComparator

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
index dae50bf..0fa2f7e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.processors.cache.version;
 
 import org.apache.ignite.internal.processors.cache.CacheObject;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -87,7 +88,7 @@ public class GridCacheLazyPlainVersionedEntry<K, V> extends 
GridCachePlainVersio
     }
 
     /** {@inheritDoc} */
-    @Override public V value() {
+    @Override public V value(CacheObjectValueContext ctx) {
         return value(keepBinary);
     }
 
@@ -108,6 +109,6 @@ public class GridCacheLazyPlainVersionedEntry<K, V> extends 
GridCachePlainVersio
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(GridCacheLazyPlainVersionedEntry.class, this,
-            "super", super.toString(), "key", key(), "val", value());
+            "super", super.toString(), "key", key(), "val", value(keepBinary));
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCachePlainVersionedEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCachePlainVersionedEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCachePlainVersionedEntry.java
index f4d7e08..d8034a8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCachePlainVersionedEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCachePlainVersionedEntry.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.cache.version;
 
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.jetbrains.annotations.Nullable;
@@ -80,7 +81,7 @@ public class GridCachePlainVersionedEntry<K, V> implements 
GridCacheVersionedEnt
     }
 
     /** {@inheritDoc} */
-    @Override public V value() {
+    @Override public V value(CacheObjectValueContext ctx) {
         return val;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
index 1146496..586a043 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheRawVersionedEntry.java
@@ -26,6 +26,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.GridDirectTransient;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.CacheObjectContext;
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.datastreamer.DataStreamerEntry;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -133,8 +134,8 @@ public class GridCacheRawVersionedEntry<K, V> extends 
DataStreamerEntry implemen
     }
 
     /** {@inheritDoc} */
-    @Override public V value() {
-        return val != null ? val.<V>value(null, false) : null;
+    @Override public V value(CacheObjectValueContext ctx) {
+        return val != null ? val.<V>value(ctx, false) : null;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionConflictContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionConflictContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionConflictContext.java
index fa40206..c666b1f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionConflictContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionConflictContext.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.cache.version;
 
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.internal.CU;
@@ -35,6 +36,9 @@ public class GridCacheVersionConflictContext<K, V> {
     @GridToStringInclude
     private final GridCacheVersionedEntry<K, V> newEntry;
 
+    /** Object context. */
+    private final CacheObjectValueContext ctx;
+
     /** Current state. */
     private State state;
 
@@ -54,13 +58,14 @@ public class GridCacheVersionConflictContext<K, V> {
      * @param oldEntry Old entry.
      * @param newEntry New entry.
      */
-    public GridCacheVersionConflictContext(GridCacheVersionedEntry<K, V> 
oldEntry,
+    public GridCacheVersionConflictContext(CacheObjectValueContext ctx, 
GridCacheVersionedEntry<K, V> oldEntry,
         GridCacheVersionedEntry<K, V> newEntry) {
         assert oldEntry != null && newEntry != null;
         assert oldEntry.ttl() >= 0 && newEntry.ttl() >= 0;
 
         this.oldEntry = oldEntry;
         this.newEntry = newEntry;
+        this.ctx = ctx;
 
         // Set initial state.
         useNew();
@@ -85,6 +90,15 @@ public class GridCacheVersionConflictContext<K, V> {
     }
 
     /**
+     * Gets cache object context.
+     *
+     * @return Cache object context.
+     */
+    public CacheObjectValueContext valueContext() {
+        return ctx;
+    }
+
+    /**
      * Force cache to ignore new entry and leave old (existing) entry 
unchanged.
      */
     public void useOld() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/ba809d22/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionedEntry.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionedEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionedEntry.java
index e685d79..5016393 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionedEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionedEntry.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.cache.version;
 
+import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -33,9 +34,10 @@ public interface GridCacheVersionedEntry<K, V> {
     /**
      * Gets entry's value.
      *
+     * @param ctx Object value context.
      * @return Entry's value.
      */
-    @Nullable public V value();
+    @Nullable public V value(CacheObjectValueContext ctx);
 
     /**
      * Gets entry's TTL.

Reply via email to