# ignite-656
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/42b96fca Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/42b96fca Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/42b96fca Branch: refs/heads/ignite-646 Commit: 42b96fcae3af8a8c878c54ef2234ce469e8cf027 Parents: 92d27f5 Author: sboikov <sboi...@gridgain.com> Authored: Thu Apr 23 17:10:20 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Thu Apr 23 17:10:20 2015 +0300 ---------------------------------------------------------------------- .../cache/distributed/dht/GridDhtLockFuture.java | 10 +++------- .../cache/transactions/IgniteTxLocalAdapter.java | 14 ++++++++++---- 2 files changed, 13 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/42b96fca/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java index 7263dfe..dd893ab 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java @@ -958,18 +958,14 @@ public final class GridDhtLockFuture<K, V> extends GridCompoundIdentityFuture<Bo * */ private void loadMissingFromStore() { - if (cctx.loadPreviousValue() && cctx.readThrough() && (needReturnVal || read)) { + if (!skipStore && cctx.loadPreviousValue() && cctx.readThrough() && (needReturnVal || read)) { final Map<KeyCacheObject, GridDhtCacheEntry> loadMap = new LinkedHashMap<>(); final GridCacheVersion ver = version(); for (GridDhtCacheEntry entry : entries) { - if (!entry.hasValue()) { - IgniteTxEntry txEntry = tx != null ? tx.entry(entry.txKey()) : null; - - if (txEntry == null || !txEntry.skipStore()) - loadMap.put(entry.key(), entry); - } + if (!entry.hasValue()) + loadMap.put(entry.key(), entry); } try { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/42b96fca/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java index 500a094..dfce09c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java @@ -1729,8 +1729,6 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter deserializePortable, false); } - else if (txEntry.skipStore()) - missed.remove(cacheKey); // Even though we bring the value back from lock acquisition, // we still need to recheck primary node for consistent values @@ -1832,10 +1830,18 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter if (missed.isEmpty()) return new GridFinishedFuture<>(retMap); + IgniteInternalFuture<Map<K, V>> fut0 = checkMissed(cacheCtx, + retMap, + missed, + redos, + deserializePortable, + skipVals, + keepCacheObjects, + skipStore); + return new GridEmbeddedFuture<>( // First future. - checkMissed(cacheCtx, retMap, missed, redos, deserializePortable, skipVals, keepCacheObjects, - skipStore), + fut0, // Closure that returns another future, based on result from first. new PMC<Map<K, V>>() { @Override public IgniteInternalFuture<Map<K, V>> postMiss(Map<K, V> map) {