Repository: ignite
Updated Branches:
  refs/heads/ignite-6149 f3f582140 -> 1a7e10ac5


ignite-6149


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

Branch: refs/heads/ignite-6149
Commit: c961bd91186217807e51453fad906cd5118a8b9a
Parents: 7a99432
Author: sboikov <[email protected]>
Authored: Wed Sep 13 14:24:21 2017 +0300
Committer: sboikov <[email protected]>
Committed: Wed Sep 13 15:17:02 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheMapEntry.java     |  2 +-
 .../processors/cache/GridCacheProcessor.java    |  3 +-
 .../cache/IgniteCacheOffheapManagerImpl.java    |  8 +++
 .../mvcc/CacheCoordinatorsSharedManager.java    | 51 ++++++++++++--------
 .../yardstick/IgniteBenchmarkArguments.java     | 12 +++++
 .../org/apache/ignite/yardstick/IgniteNode.java |  9 ++++
 .../ignite/yardstick/TmpMvccNodeFilter.java     | 30 ++++++++++++
 7 files changed, 92 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/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 28b14fd..3a42a98 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
@@ -1010,7 +1010,7 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
 
             assert val != null;
 
-            if (cctx.mvccEnabled()) {
+            if (cctx.mvccEnabled() && 
!((IgniteCacheOffheapManagerImpl)cctx.offheap()).IGNITE_FAKE_MVCC_STORAGE) {
                 assert mvccVer != null;
 
                 mvccWaitTxs = cctx.offheap().mvccUpdate(this, val, newVer, 
mvccVer);

http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 0a1115a..2a91113 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -1131,7 +1131,8 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 (cfg.getGroupName() != null ? ", group=" + cfg.getGroupName() 
: "") +
                 ", memoryPolicyName=" + memPlcName +
                 ", mode=" + cfg.getCacheMode() +
-                ", atomicity=" + cfg.getAtomicityMode() + ']');
+                ", atomicity=" + cfg.getAtomicityMode() +
+                ", mvcc=" + cfg.isMvccEnabled() + ']');
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index a507985..c52da83 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -31,6 +31,7 @@ import javax.cache.Cache;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.internal.NodeStoppingException;
 import org.apache.ignite.internal.pagemem.FullPageId;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -81,6 +82,9 @@ import static 
org.apache.ignite.internal.pagemem.PageIdAllocator.INDEX_PARTITION
  */
 @SuppressWarnings("PublicInnerClass")
 public class IgniteCacheOffheapManagerImpl implements 
IgniteCacheOffheapManager {
+    // TODO IGNITE-3478
+    public final boolean IGNITE_FAKE_MVCC_STORAGE = 
IgniteSystemProperties.getBoolean("IGNITE_FAKE_MVCC_STORAGE", false);
+
     /** */
     protected GridCacheSharedContext ctx;
 
@@ -127,6 +131,10 @@ public class IgniteCacheOffheapManagerImpl implements 
IgniteCacheOffheapManager
 
         updateValSizeThreshold = ctx.database().pageSize() / 2;
 
+        // TODO IGNITE-3478
+        if (grp.mvccEnabled())
+            log.info("IgniteCacheOffheapManagerImpl start, fakeMvcc=" + 
IGNITE_FAKE_MVCC_STORAGE);
+
         if (grp.affinityNode()) {
             ctx.database().checkpointReadLock();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/CacheCoordinatorsSharedManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/CacheCoordinatorsSharedManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/CacheCoordinatorsSharedManager.java
index 0989fdb..7b666d2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/CacheCoordinatorsSharedManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/CacheCoordinatorsSharedManager.java
@@ -28,9 +28,11 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.events.DiscoveryEvent;
 import org.apache.ignite.events.Event;
+import org.apache.ignite.internal.GridTopic;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
+import org.apache.ignite.internal.managers.communication.GridIoPolicy;
 import org.apache.ignite.internal.managers.communication.GridMessageListener;
 import org.apache.ignite.internal.managers.discovery.DiscoCache;
 import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
@@ -59,6 +61,13 @@ import static 
org.apache.ignite.internal.managers.communication.GridIoPolicy.SYS
 public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManagerAdapter<K, V> {
     /** */
     public static final long COUNTER_NA = 0L;
+
+    /** */
+    private static final GridTopic MSG_TOPIC = TOPIC_CACHE_COORDINATOR;
+
+    /** */
+    private static final byte MSG_POLICY = SYSTEM_POOL;
+    
     /** */
     private final CoordinatorAssignmentHistory assignHist = new 
CoordinatorAssignmentHistory();
 
@@ -96,7 +105,7 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
         cctx.gridEvents().addLocalEventListener(new 
CacheCoordinatorDiscoveryListener(),
             EVT_NODE_FAILED, EVT_NODE_LEFT);
 
-        cctx.gridIO().addMessageListener(TOPIC_CACHE_COORDINATOR, new 
CoordinatorMessageListener());
+        cctx.gridIO().addMessageListener(MSG_TOPIC, new 
CoordinatorMessageListener());
     }
 
     /**
@@ -125,9 +134,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(crd,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 new CoordinatorTxCounterRequest(fut.id, tx.nearXidVersion()),
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (IgniteCheckedException e) {
             if (verFuts.remove(fut.id) != null)
@@ -144,9 +153,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
     public void ackQueryDone(ClusterNode crd, long cntr) {
         try {
             cctx.gridIO().sendToGridTopic(crd,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 new CoordinatorQueryAckRequest(cntr),
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (log.isDebugEnabled())
@@ -171,9 +180,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(crd,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 new CoordinatorQueryVersionRequest(fut.id),
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (IgniteCheckedException e) {
             if (verFuts.remove(fut.id) != null)
@@ -200,9 +209,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(crd,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 new CoordinatorWaitTxsRequest(fut.id, txs),
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (ackFuts.remove(fut.id) != null)
@@ -231,9 +240,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(crd,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 new CoordinatorTxAckRequest(fut.id, txId),
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (ackFuts.remove(fut.id) != null)
@@ -258,9 +267,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(crd,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 msg,
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (log.isDebugEnabled())
@@ -289,9 +298,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(node,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 res,
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (log.isDebugEnabled())
@@ -321,9 +330,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
 
         try {
             cctx.gridIO().sendToGridTopic(node,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 res,
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (log.isDebugEnabled())
@@ -372,9 +381,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
         if (!msg.skipResponse()) {
             try {
                 cctx.gridIO().sendToGridTopic(nodeId,
-                    TOPIC_CACHE_COORDINATOR,
+                    MSG_TOPIC,
                     new CoordinatorFutureResponse(msg.futureId()),
-                    SYSTEM_POOL);
+                    MSG_POLICY);
             }
             catch (ClusterTopologyCheckedException e) {
                 if (log.isDebugEnabled())
@@ -557,9 +566,9 @@ public class CacheCoordinatorsSharedManager<K, V> extends 
GridCacheSharedManager
     private void sendFutureResponse(UUID nodeId, CoordinatorWaitTxsRequest 
msg) {
         try {
             cctx.gridIO().sendToGridTopic(nodeId,
-                TOPIC_CACHE_COORDINATOR,
+                MSG_TOPIC,
                 new CoordinatorFutureResponse(msg.futureId()),
-                SYSTEM_POOL);
+                MSG_POLICY);
         }
         catch (ClusterTopologyCheckedException e) {
             if (log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
----------------------------------------------------------------------
diff --git 
a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
index 594fa1f..13ba165 100644
--- 
a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
+++ 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
@@ -20,6 +20,7 @@ package org.apache.ignite.yardstick;
 import com.beust.jcommander.Parameter;
 import org.apache.ignite.IgniteDataStreamer;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.MemoryConfiguration;
 import org.apache.ignite.configuration.PersistentStoreConfiguration;
 import org.apache.ignite.internal.util.tostring.GridToStringBuilder;
@@ -252,6 +253,17 @@ public class IgniteBenchmarkArguments {
     @Parameter(names = {"-stbs", "--streamerBufSize"}, description = "Data 
streamer buffer size")
     private int streamerBufSize = IgniteDataStreamer.DFLT_PER_NODE_BUFFER_SIZE;
 
+    /** */
+    @Parameter(names = {"-mvcc", "--mvcc"}, description = "Enable MVCC for 
cache")
+    private boolean mvcc;
+
+    /**
+     * @return {@code True} if need enable cache mvcc (see {@link 
CacheConfiguration#isMvccEnabled()}).
+     */
+    public boolean mvccEnabled() {
+        return mvcc;
+    }
+
     /**
      * @return {@code True} if need set {@link PersistentStoreConfiguration}.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
----------------------------------------------------------------------
diff --git 
a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
index 35fa949..a3a31d1 100644
--- 
a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
+++ 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
@@ -24,6 +24,8 @@ import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteSpring;
 import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.eviction.lru.LruEvictionPolicy;
 import org.apache.ignite.configuration.BinaryConfiguration;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -138,6 +140,13 @@ public class IgniteNode implements BenchmarkServer {
 
                 cc.setWriteBehindEnabled(args.isWriteBehind());
 
+                if (args.mvccEnabled() &&
+                    cc.getAtomicityMode() == CacheAtomicityMode.TRANSACTIONAL 
&&
+                    cc.getCacheMode() != CacheMode.LOCAL) {
+                    cc.setMvccEnabled(true);
+                    cc.setNodeFilter(new TmpMvccNodeFilter());
+                }
+
                 BenchmarkUtils.println(cfg, "Cache configured with the 
following parameters: " + cc);
             }
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/c961bd91/modules/yardstick/src/main/java/org/apache/ignite/yardstick/TmpMvccNodeFilter.java
----------------------------------------------------------------------
diff --git 
a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/TmpMvccNodeFilter.java
 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/TmpMvccNodeFilter.java
new file mode 100644
index 0000000..77296a4
--- /dev/null
+++ 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/TmpMvccNodeFilter.java
@@ -0,0 +1,30 @@
+/*
+ * 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.yardstick;
+
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.lang.IgnitePredicate;
+
+/**
+ * TODO IGNITE-3478: remove when coordinator assignment is implemented.
+ */
+public class TmpMvccNodeFilter implements IgnitePredicate<ClusterNode> {
+    @Override public boolean apply(ClusterNode node) {
+        return node.order() > 1;
+    }
+}

Reply via email to