IGNITE-2759: Now objects will be deserialized during conflicts only when "keepBinary" is set. This closes #542.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/db057276 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/db057276 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/db057276 Branch: refs/heads/ignite-2801 Commit: db05727630e8d2a0e3ed2a342579462ab3a79b36 Parents: d0749bc Author: dkarachentsev <[email protected]> Authored: Fri Mar 11 17:36:20 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Tue Mar 15 09:30:12 2016 +0300 ---------------------------------------------------------------------- .../internal/processors/cache/GridCacheEntryEx.java | 3 ++- .../internal/processors/cache/GridCacheMapEntry.java | 14 +++++++------- .../cache/transactions/IgniteTxAdapter.java | 6 ++++-- .../GridCacheStoreManagerDeserializationTest.java | 1 + .../processors/cache/GridCacheTestEntryEx.java | 2 +- 5 files changed, 15 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/db057276/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java index c9b4631..29283e2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java @@ -694,11 +694,12 @@ public interface GridCacheEntryEx { /** * Create versioned entry for this cache entry. * + * @param keepBinary Keep binary flag. * @return Versioned entry. * @throws IgniteCheckedException In case of error. * @throws GridCacheEntryRemovedException If entry was removed. */ - public <K, V> GridCacheVersionedEntryEx<K, V> versionedEntry() + public <K, V> GridCacheVersionedEntryEx<K, V> versionedEntry(final boolean keepBinary) throws IgniteCheckedException, GridCacheEntryRemovedException; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/db057276/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java index 1c1a6e9..b58996a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java @@ -1918,7 +1918,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme } else { writeObj = oldVal; - writeObj0 = CU.value(oldVal, cctx, false); + writeObj0 = cctx.unwrapBinaryIfNeeded(oldVal, keepBinary, false); } key0 = entry.key(); @@ -1930,18 +1930,18 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme invokeRes = new IgniteBiTuple(null, e); writeObj = oldVal; - writeObj0 = CU.value(oldVal, cctx, false); + writeObj0 = cctx.unwrapBinaryIfNeeded(oldVal, keepBinary, false); } } else - writeObj0 = CU.value((CacheObject)writeObj, cctx, false); + writeObj0 = cctx.unwrapBinaryIfNeeded(writeObj, keepBinary, false); GridTuple3<Long, Long, Boolean> expiration = ttlAndExpireTime(expiryPlc, explicitTtl, explicitExpireTime); // Prepare old and new entries for conflict resolution. - GridCacheVersionedEntryEx oldEntry = versionedEntry(); + GridCacheVersionedEntryEx oldEntry = versionedEntry(keepBinary); GridCacheVersionedEntryEx newEntry = new GridCachePlainVersionedEntry<>( oldEntry.key(), writeObj0, @@ -3381,14 +3381,14 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme } /** {@inheritDoc} */ - @Override public synchronized GridCacheVersionedEntryEx versionedEntry() + @Override public synchronized GridCacheVersionedEntryEx versionedEntry(final boolean keepBinary) throws IgniteCheckedException, GridCacheEntryRemovedException { boolean isNew = isStartVersion(); CacheObject val = isNew ? unswap(true) : rawGetOrUnmarshalUnlocked(false); - return new GridCachePlainVersionedEntry<>(keyValue(true), - CU.value(val, cctx, true), + return new GridCachePlainVersionedEntry<>(cctx.unwrapBinaryIfNeeded(key, keepBinary, true), + cctx.unwrapBinaryIfNeeded(val, keepBinary, true), ttlExtras(), expireTimeExtras(), ver.conflictVersion(), http://git-wip-us.apache.org/repos/asf/ignite/blob/db057276/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 53f4f56..ca5a8fd 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 @@ -1393,10 +1393,12 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter assert newExpireTime != CU.EXPIRE_TIME_CALCULATE; // Construct old entry info. - GridCacheVersionedEntryEx oldEntry = old.versionedEntry(); + GridCacheVersionedEntryEx oldEntry = old.versionedEntry(txEntry.keepBinary()); // Construct new entry info. - Object newVal0 = CU.value(newVal, txEntry.context(), false); + GridCacheContext entryCtx = txEntry.context(); + + Object newVal0 = entryCtx.unwrapBinaryIfNeeded(newVal, txEntry.keepBinary(), false); GridCacheVersionedEntryEx newEntry = new GridCachePlainVersionedEntry( oldEntry.key(), http://git-wip-us.apache.org/repos/asf/ignite/blob/db057276/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java index 9fe60e0..d12f56a 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheStoreManagerDeserializationTest.java @@ -188,6 +188,7 @@ public class GridCacheStoreManagerDeserializationTest extends GridCommonAbstract streamer.addData(key, key); } + streamer.flush(); streamer.close(); streamer.future().get(); http://git-wip-us.apache.org/repos/asf/ignite/blob/db057276/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java index f6eb430..97b7a8f 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java @@ -678,7 +678,7 @@ public class GridCacheTestEntryEx extends GridMetadataAwareAdapter implements Gr } /** @inheritDoc */ - @Override public GridCacheVersionedEntryEx versionedEntry() throws IgniteCheckedException { + @Override public GridCacheVersionedEntryEx versionedEntry(final boolean keepBinary) throws IgniteCheckedException { return null; }
