You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/06/17 08:54:43 UTC
[34/41] ignite git commit: GG-11237 KeepBinary flag will not be send
to another node.
GG-11237 KeepBinary flag will not be send to another node.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5c3efa9a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5c3efa9a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5c3efa9a
Branch: refs/heads/ignite-3331
Commit: 5c3efa9a6b17ec583422e1f8f228878286fa4644
Parents: 314794b
Author: Anton Vinogradov <av...@apache.org>
Authored: Wed Jun 15 23:06:38 2016 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Wed Jun 15 23:06:38 2016 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheMapEntry.java | 49 ++++-----
.../cache/transactions/IgniteTxAdapter.java | 15 +--
.../GridCacheLazyPlainVersionedEntry.java | 107 +++++++++++++++++++
.../version/GridCachePlainVersionedEntry.java | 7 +-
4 files changed, 140 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5c3efa9a/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 b5359f3..18bb630 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
@@ -54,7 +54,7 @@ import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter;
-import org.apache.ignite.internal.processors.cache.version.GridCachePlainVersionedEntry;
+import org.apache.ignite.internal.processors.cache.version.GridCacheLazyPlainVersionedEntry;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionConflictContext;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
@@ -2033,8 +2033,14 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
// Cache is conflict-enabled.
if (cctx.conflictNeedResolve()) {
- // Get new value, optionally unmarshalling and/or transforming it.
- Object writeObj0;
+ GridCacheVersionedEntryEx newEntry;
+
+ GridTuple3<Long, Long, Boolean> expiration = ttlAndExpireTime(expiryPlc,
+ explicitTtl,
+ explicitExpireTime);
+
+ // Prepare old and new entries for conflict resolution.
+ GridCacheVersionedEntryEx oldEntry = versionedEntry(keepBinary);
if (op == GridCacheOperation.TRANSFORM) {
transformClo = writeObj;
@@ -2049,14 +2055,10 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
try {
Object computed = entryProcessor.process(entry, invokeArgs);
- if (entry.modified()) {
- writeObj0 = cctx.unwrapTemporary(entry.getValue());
- writeObj = cctx.toCacheObject(writeObj0);
- }
- else {
+ if (entry.modified())
+ writeObj = cctx.toCacheObject(cctx.unwrapTemporary(entry.getValue()));
+ else
writeObj = oldVal;
- writeObj0 = cctx.unwrapBinaryIfNeeded(oldVal, keepBinary, false);
- }
key0 = entry.key();
@@ -2067,24 +2069,17 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
invokeRes = new IgniteBiTuple(null, e);
writeObj = oldVal;
- writeObj0 = cctx.unwrapBinaryIfNeeded(oldVal, keepBinary, false);
}
}
- else
- 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(keepBinary);
- GridCacheVersionedEntryEx newEntry = new GridCachePlainVersionedEntry<>(
- oldEntry.key(),
- writeObj0,
+ newEntry = new GridCacheLazyPlainVersionedEntry<>(
+ cctx,
+ key,
+ (CacheObject)writeObj,
expiration.get1(),
expiration.get2(),
- conflictVer != null ? conflictVer : newVer);
+ conflictVer != null ? conflictVer : newVer,
+ keepBinary);
// Resolve conflict.
conflictCtx = cctx.conflictResolve(oldEntry, newEntry, verCheck);
@@ -3549,12 +3544,14 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
CacheObject val = isNew ? unswap(true, false) : rawGetOrUnmarshalUnlocked(false);
- return new GridCachePlainVersionedEntry<>(cctx.unwrapBinaryIfNeeded(key, keepBinary, true),
- cctx.unwrapBinaryIfNeeded(val, keepBinary, true),
+ return new GridCacheLazyPlainVersionedEntry<>(cctx,
+ key,
+ val,
ttlExtras(),
expireTimeExtras(),
ver.conflictVersion(),
- isNew);
+ isNew,
+ keepBinary);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/5c3efa9a/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 3bb3a17..4c76340 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
@@ -54,7 +54,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheEntry;
import org.apache.ignite.internal.processors.cache.store.CacheStoreManager;
-import org.apache.ignite.internal.processors.cache.version.GridCachePlainVersionedEntry;
+import org.apache.ignite.internal.processors.cache.version.GridCacheLazyPlainVersionedEntry;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionConflictContext;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionedEntryEx;
@@ -1644,14 +1644,15 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter
// Construct new entry info.
GridCacheContext entryCtx = txEntry.context();
- Object newVal0 = entryCtx.unwrapBinaryIfNeeded(newVal, txEntry.keepBinary(), false);
-
- GridCacheVersionedEntryEx newEntry = new GridCachePlainVersionedEntry(
- oldEntry.key(),
- newVal0,
+ GridCacheVersionedEntryEx newEntry = new GridCacheLazyPlainVersionedEntry(
+ entryCtx,
+ txEntry.key(),
+ newVal,
newTtl,
newExpireTime,
- newVer);
+ newVer,
+ false,
+ txEntry.keepBinary());
GridCacheVersionConflictContext ctx = old.context().conflictResolve(oldEntry, newEntry, false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/5c3efa9a/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
new file mode 100644
index 0000000..50de328
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheLazyPlainVersionedEntry.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.version;
+
+import org.apache.ignite.internal.processors.cache.CacheObject;
+import org.apache.ignite.internal.processors.cache.GridCacheContext;
+import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+
+/**
+ * Lazy plain versioned entry.
+ */
+public class GridCacheLazyPlainVersionedEntry<K, V> extends GridCachePlainVersionedEntry<K, V> {
+ /** Cache context. */
+ protected GridCacheContext cctx;
+
+ /** Key cache object. */
+ private KeyCacheObject keyObj;
+
+ /** Cache object value. */
+ private CacheObject valObj;
+
+ /** Keep binary flag. */
+ private boolean keepBinary;
+
+ /**
+ * @param cctx Context.
+ * @param keyObj Key.
+ * @param valObj Value.
+ * @param ttl TTL.
+ * @param expireTime Expire time.
+ * @param ver Version.
+ * @param isStartVer Start version flag.
+ * @param keepBinary Keep binary flag.
+ */
+ public GridCacheLazyPlainVersionedEntry(GridCacheContext cctx,
+ KeyCacheObject keyObj,
+ CacheObject valObj,
+ long ttl,
+ long expireTime,
+ GridCacheVersion ver,
+ boolean isStartVer,
+ boolean keepBinary) {
+ super(null, null, ttl, expireTime, ver, isStartVer);
+
+ this.cctx = cctx;
+ this.keyObj = keyObj;
+ this.valObj = valObj;
+ this.keepBinary = keepBinary;
+ }
+
+ public GridCacheLazyPlainVersionedEntry(GridCacheContext cctx,
+ KeyCacheObject keyObj,
+ CacheObject valObj,
+ long ttl,
+ long expireTime,
+ GridCacheVersion ver,
+ boolean keepBinary) {
+ super(null, null, ttl, expireTime, ver);
+ this.cctx = cctx;
+ this.keepBinary = keepBinary;
+ this.keyObj = keyObj;
+ this.valObj = valObj;
+ }
+
+ /** {@inheritDoc} */
+ @Override public K key() {
+ if (key == null)
+ key = (K)cctx.unwrapBinaryIfNeeded(keyObj, keepBinary);
+
+ return key;
+ }
+
+ /** {@inheritDoc} */
+ @Override public V value() {
+ return value(keepBinary);
+ }
+
+ /**
+ * Returns the value stored in the cache when this entry was created.
+ *
+ * @param keepBinary Flag to keep binary if needed.
+ * @return the value corresponding to this entry
+ */
+ @SuppressWarnings("unchecked")
+ public V value(boolean keepBinary) {
+ if (val == null)
+ val = (V)cctx.unwrapBinaryIfNeeded(valObj, keepBinary, true);
+
+ return val;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5c3efa9a/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 e1da1c4..dd682e9 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
@@ -25,10 +25,10 @@ import org.jetbrains.annotations.Nullable;
*/
public class GridCachePlainVersionedEntry<K, V> implements GridCacheVersionedEntryEx<K, V> {
/** Key. */
- private final K key;
+ protected K key;
/** Value. */
- private final V val;
+ protected V val;
/** TTL. */
private final long ttl;
@@ -63,9 +63,6 @@ public class GridCachePlainVersionedEntry<K, V> implements GridCacheVersionedEnt
*/
public GridCachePlainVersionedEntry(K key, V val, long ttl, long expireTime, GridCacheVersion ver,
boolean isStartVer) {
- assert ver != null;
- assert key != null;
-
this.key = key;
this.val = val;
this.ttl = ttl;