You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/01/20 11:03:53 UTC

ignite git commit: ignite-gg-10837 review

Repository: ignite
Updated Branches:
  refs/heads/ignite-gg-10837 c286fabb4 -> 6652d871f


ignite-gg-10837 review


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

Branch: refs/heads/ignite-gg-10837
Commit: 6652d871f41ce9d49cf384f8223035faf19bd264
Parents: c286fab
Author: sboikov <sb...@gridgain.com>
Authored: Wed Jan 20 13:03:44 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Jan 20 13:03:44 2016 +0300

----------------------------------------------------------------------
 .../transactions/IgniteTxLocalAdapter.java      | 53 +++++++++++---------
 1 file changed, 30 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6652d871/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 32a9e27..4b7b992 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
@@ -2056,14 +2056,14 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
         @Nullable ExpiryPolicy expiryPlc,
         @Nullable EntryProcessor<K, V, Object> entryProcessor,
         @Nullable Object[] invokeArgs,
-        @Nullable GridCacheVersion drVer,
         final boolean retval,
         boolean lockOnly,
         final CacheEntryPredicate[] filter,
         final GridCacheReturn ret,
         boolean skipStore,
         final boolean singleRmv,
-        boolean keepBinary) {
+        boolean keepBinary,
+        Byte dataCenterId) {
         try {
             addActiveCache(cacheCtx);
 
@@ -2074,6 +2074,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
             if (entryProcessor != null)
                 transform = true;
 
+            GridCacheVersion drVer = dataCenterId != null ? cctx.versions().next(dataCenterId) : null;
             long drTtl = singleRmv ? -1L : CU.TTL_ETERNAL;
             long drExpireTime = singleRmv ? -1L : CU.EXPIRE_TIME_ETERNAL;
 
@@ -2136,6 +2137,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
      * @param drRmvMap DR remove map (optional).
      * @param skipStore Skip store flag.
      * @param singleRmv {@code True} for single key remove operation ({@link Cache#remove(Object)}.
+     * @param keepBinary Keep binary flag.
+     * @param dataCenterId Optional data center ID.
      * @return Future for missing values loading.
      */
     private <K, V> IgniteInternalFuture<Void> enlistWrite(
@@ -2154,7 +2157,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
         @Nullable Map<KeyCacheObject, GridCacheVersion> drRmvMap,
         boolean skipStore,
         final boolean singleRmv,
-        final boolean keepBinary
+        final boolean keepBinary,
+        Byte dataCenterId
     ) {
         assert retval || invokeMap == null;
 
@@ -2208,6 +2212,11 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
                     drTtl = -1L;
                     drExpireTime = -1L;
                 }
+                else if (dataCenterId != null) {
+                    drVer = cctx.versions().next(dataCenterId);
+                    drTtl = -1L;
+                    drExpireTime = -1L;
+                }
                 else {
                     drVer = null;
                     drTtl = -1L;
@@ -2949,10 +2958,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
 
             CacheOperationContext opCtx = cacheCtx.operationContextPerCall();
 
-            GridCacheVersion drVer = null;
-
-            if (opCtx != null && opCtx.hasDataCenterId())
-                drVer = cacheCtx.versions().next(opCtx.dataCenterId());
+            final Byte dataCenterId = opCtx != null ? opCtx.dataCenterId() : null;
 
             KeyCacheObject cacheKey = cacheCtx.toCacheKeyObject(key);
 
@@ -2965,14 +2971,14 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
                 opCtx != null ? opCtx.expiry() : null,
                 entryProcessor,
                 invokeArgs,
-                drVer,
                 retval,
                 /*lockOnly*/false,
                 filter,
                 ret,
                 opCtx != null && opCtx.skipStore(),
                 /*singleRmv*/false,
-                keepBinary);
+                keepBinary,
+                dataCenterId);
 
             if (pessimistic()) {
                 assert loadFut == null || loadFut.isDone() : loadFut;
@@ -3085,17 +3091,16 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
 
         final CacheOperationContext opCtx = cacheCtx.operationContextPerCall();
 
+        final Byte dataCenterId;
+
         if (opCtx != null && opCtx.hasDataCenterId()) {
             assert drMap == null : drMap;
             assert map != null || invokeMap != null;
 
-            drMap = (Map<KeyCacheObject, GridCacheDrInfo>)F.viewReadOnly((Map)(map != null ? map : invokeMap),
-                new IgniteClosure<V, GridCacheDrInfo>() {
-                    @Override public GridCacheDrInfo apply(V val) {
-                        return new GridCacheDrInfo(cctx.versions().next(opCtx.dataCenterId()));
-                    }
-                });
+            dataCenterId = opCtx.dataCenterId();
         }
+        else
+            dataCenterId = null;
 
         // Cached entry may be passed only from entry wrapper.
         final Map<?, ?> map0 = map;
@@ -3143,7 +3148,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
                 null,
                 opCtx != null && opCtx.skipStore(),
                 false,
-                keepBinary);
+                keepBinary,
+                dataCenterId);
 
             if (pessimistic()) {
                 assert loadFut == null || loadFut.isDone() : loadFut;
@@ -3349,15 +3355,15 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
 
         CacheOperationContext opCtx = cacheCtx.operationContextPerCall();
 
-        // DrMap used as map. Keys order doesn't matter.
-        if (keys != null && drMap == null && opCtx != null && opCtx.hasDataCenterId()) {
-            Map<K, GridCacheVersion> confMap = new HashMap<>(keys.size());
+        final Byte dataCenterId;
 
-            for (K key : keys)
-                confMap.put(key, cacheCtx.versions().next(opCtx.dataCenterId()));
+        if (opCtx != null && opCtx.hasDataCenterId()) {
+            assert drMap == null : drMap;
 
-            drMap = (Map)confMap;
+            dataCenterId = opCtx.dataCenterId();
         }
+        else
+            dataCenterId = null;
 
         assert keys0 != null;
 
@@ -3417,7 +3423,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
             drMap,
             opCtx != null && opCtx.skipStore(),
             singleRmv,
-            keepBinary
+            keepBinary,
+            dataCenterId
         );
 
         if (log.isDebugEnabled())