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/ed030e53 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ed030e53 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ed030e53 Branch: refs/heads/ignite-1786 Commit: ed030e53b532bbb031d2c49ce71cd521e94dd848 Parents: 687200d Author: dkarachentsev <dkarachent...@gridgain.com> Authored: Fri Mar 11 17:36:20 2016 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Fri Mar 11 17:36:20 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/ed030e53/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 71bb034..3a7b5ec 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 @@ -692,11 +692,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/ed030e53/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 16ff153..fb6aeef 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 @@ -1924,7 +1924,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(); @@ -1936,18 +1936,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, @@ -3353,14 +3353,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/ed030e53/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 ed44c49..f6dfd32 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 @@ -1413,10 +1413,12 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement 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/ed030e53/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/ed030e53/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 e627083..82b3f4b 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 @@ -677,7 +677,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; }