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; + } +}
