Merge remote-tracking branch 'remotes/origin/master' into ignite-3478 # Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9f0572bb Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9f0572bb Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9f0572bb Branch: refs/heads/ignite-3478 Commit: 9f0572bb6569332e037622cc4c31b1d8268f581f Parents: 7a4baba aefa9a8 Author: sboikov <[email protected]> Authored: Tue Sep 26 12:42:46 2017 +0300 Committer: sboikov <[email protected]> Committed: Tue Sep 26 12:42:46 2017 +0300 ---------------------------------------------------------------------- modules/compatibility/README.txt | 5 + modules/compatibility/licenses/apache-2.0.txt | 202 ++++++++ modules/compatibility/pom.xml | 94 ++++ .../ignite/compatibility/package-info.java | 22 + .../DummyPersistenceCompatibilityTest.java | 108 ++++ ...itePersistenceCompatibilityAbstractTest.java | 89 ++++ .../compatibility/persistence/package-info.java | 22 + .../junits/CompatibilityTestsFacade.java | 46 ++ .../junits/IgniteCompatibilityAbstractTest.java | 280 +++++++++++ .../junits/IgniteCompatibilityNodeRunner.java | 157 ++++++ .../logger/ListenedGridTestLog4jLogger.java | 91 ++++ .../junits/logger/package-info.java | 22 + .../testframework/junits/package-info.java | 22 + .../testframework/package-info.java | 22 + .../plugins/DisabledValidationProcessor.java | 42 ++ .../TestCompatibilityPluginProvider.java | 119 +++++ .../testframework/plugins/package-info.java | 22 + .../testframework/util/MavenUtils.java | 208 ++++++++ .../testframework/util/package-info.java | 22 + .../IgniteCompatibilityBasicTestSuite.java | 38 ++ .../compatibility/testsuites/package-info.java | 22 + .../org.apache.ignite.plugin.PluginProvider | 1 + .../configuration/IgniteConfiguration.java | 6 + .../cache/GatewayProtectedCacheProxy.java | 5 - .../processors/cache/GridCacheAdapter.java | 135 +++-- .../processors/cache/GridCacheProxyImpl.java | 12 - .../processors/cache/IgniteCacheProxy.java | 8 - .../processors/cache/IgniteCacheProxyImpl.java | 16 - .../processors/cache/IgniteInternalCache.java | 9 - .../dht/CacheDistributedGetFutureAdapter.java | 5 +- .../distributed/dht/GridDhtCacheAdapter.java | 5 - .../cache/distributed/dht/GridDhtGetFuture.java | 2 - .../distributed/dht/GridDhtGetSingleFuture.java | 6 +- .../dht/GridDhtPartitionTopologyImpl.java | 495 ++++++++++--------- .../dht/GridPartitionedGetFuture.java | 22 +- .../dht/GridPartitionedSingleGetFuture.java | 5 +- .../dht/atomic/GridDhtAtomicCache.java | 67 +-- .../dht/colocated/GridDhtColocatedCache.java | 24 +- .../distributed/near/GridNearAtomicCache.java | 2 - .../distributed/near/GridNearCacheAdapter.java | 3 - .../distributed/near/GridNearCacheEntry.java | 1 - .../distributed/near/GridNearGetFuture.java | 3 - .../near/GridNearTransactionalCache.java | 3 - .../cache/distributed/near/GridNearTxLocal.java | 2 - .../local/atomic/GridLocalAtomicCache.java | 2 - .../GridCacheDatabaseSharedManager.java | 10 +- .../wal/FileWriteAheadLogManager.java | 4 +- .../utils/PlatformConfigurationUtils.java | 10 + .../processors/query/GridQueryProcessor.java | 2 +- .../ignite/internal/util/IgniteUtils.java | 9 + .../org.apache.ignite.plugin.PluginProvider | 2 +- .../IgniteCacheTopologySafeGetSelfTest.java | 222 --------- .../local/GridCacheLocalFullApiSelfTest.java | 76 ++- .../IgnitePdsExchangeDuringCheckpointTest.java | 135 +++++ .../file/IgnitePdsThreadInterruptionTest.java | 2 +- .../persistence/db/wal/IgnitePdsWalTlbTest.java | 4 +- .../junits/multijvm/IgniteNodeRunner.java | 2 +- .../junits/multijvm/IgniteProcessProxy.java | 90 +++- .../IgniteCacheDataStructuresSelfTestSuite.java | 4 +- .../IgniteCacheFailoverTestSuite.java | 2 - .../ignite/testsuites/IgnitePdsTestSuite2.java | 4 + .../cache/hibernate/HibernateCacheProxy.java | 5 - .../TestExtensions.cs | 2 + .../Apache.Ignite.Core.Tests.csproj | 4 + .../Binary/BinaryDynamicRegistrationTest.cs | 15 +- .../Cache/CacheConfigurationTest.cs | 39 +- .../Cache/PersistentStoreTest.cs | 47 +- .../Config/Dynamic/dynamic-data.xml | 2 + .../Config/cache-default.xml | 56 +++ .../IgniteConfigurationSerializerTest.cs | 65 +-- .../IgniteConfigurationTest.cs | 73 ++- .../Apache.Ignite.Core.Tests/TestUtils.cs | 61 +++ .../Cache/Configuration/CacheConfiguration.cs | 14 +- .../Apache.Ignite.Core/IgniteConfiguration.cs | 10 + .../IgniteConfigurationSection.xsd | 5 + .../Common/IgniteConfigurationXmlSerializer.cs | 4 +- pom.xml | 8 + 77 files changed, 2616 insertions(+), 866 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index 437d9d7,6d9f0d3..400f36a --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@@ -1812,9 -1803,7 +1804,8 @@@ public abstract class GridCacheAdapter< skipVals, /*keep cache objects*/false, recovery, - canRemap, - needVer); + needVer, + null); // TODO IGNITE-3478. } /** @@@ -1844,9 -1832,7 +1834,8 @@@ final boolean skipVals, final boolean keepCacheObjects, final boolean recovery, - boolean canRemap, - final boolean needVer + final boolean needVer, + MvccCoordinatorVersion mvccVer ) { if (F.isEmpty(keys)) return new GridFinishedFuture<>(Collections.<K1, V1>emptyMap()); http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java index ac04e4b,bbb2c5b..ee42a14 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java @@@ -777,9 -771,7 +774,8 @@@ public abstract class GridDhtCacheAdapt String taskName, @Nullable IgniteCacheExpiryPolicy expiry, boolean skipVals, - boolean canRemap, - boolean recovery + boolean recovery, + MvccCoordinatorVersion mvccVer ) { return getAllAsync0(keys, readerArgs, @@@ -792,9 -784,7 +788,8 @@@ skipVals, /*keep cache objects*/true, recovery, - canRemap, - /*need version*/true); + /*need version*/true, + mvccVer); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java index 78a4057,4319374..0b1d76d --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java @@@ -428,9 -422,7 +428,8 @@@ public final class GridDhtGetFuture<K, taskName, expiryPlc, skipVals, - /*can remap*/true, - recovery); + recovery, + mvccVer); } else { final ReaderArguments args = readerArgs; @@@ -453,9 -445,7 +452,8 @@@ taskName, expiryPlc, skipVals, - /*can remap*/true, - recovery); + recovery, + mvccVer); } } ); http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java index 67e726e,7c6c020..9fb4b0a --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java @@@ -365,9 -365,7 +365,8 @@@ public final class GridDhtGetSingleFutu taskName, expiryPlc, skipVals, - /*can remap*/true, - recovery); + recovery, - null); // TODO IGNITE-3478 ++ null); // TODO IGNITE-3478 } else { final ReaderArguments args = readerArgs; @@@ -392,9 -390,7 +391,8 @@@ taskName, expiryPlc, skipVals, - /*can remap*/true, - recovery); + recovery, - null); // TODO IGNITE-3478 ++ null); // TODO IGNITE-3478 fut0.listen(createGetFutureListener()); } http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java index 9b7d733,73c0ea5..cd8b8c8 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java @@@ -75,15 -73,6 +75,12 @@@ public class GridPartitionedGetFuture<K /** Logger. */ private static IgniteLogger log; - /** Topology version. */ - private AffinityTopologyVersion topVer; - + /** */ + private ClusterNode mvccCrd; + + /** */ + private MvccCoordinatorVersion mvccVer; + /** * @param cctx Context. * @param keys Keys. @@@ -143,49 -128,17 +136,49 @@@ AffinityTopologyVersion lockedTopVer = cctx.shared().lockedTopologyVersion(null); if (lockedTopVer != null) { - canRemap = false; + topVer = lockedTopVer; - map(keys, Collections.<ClusterNode, LinkedHashMap<KeyCacheObject, Boolean>>emptyMap(), lockedTopVer); + canRemap = false; } else { - topVer = this.topVer.topologyVersion() > 0 ? this.topVer : + topVer = topVer.topologyVersion() > 0 ? topVer : canRemap ? cctx.affinity().affinityTopologyVersion() : cctx.shared().exchange().readyAffinityVersion(); + } + + // TODO IGNITE-3478 (correct failover and remap). + if (cctx.mvccEnabled()) { + mvccCrd = cctx.shared().coordinators().coordinator(topVer); + + if (mvccCrd == null) { + onDone(new ClusterTopologyCheckedException("Mvcc coordinator is not assigned: " + topVer)); + + return; + } + + IgniteInternalFuture<MvccCoordinatorVersion> cntrFut = cctx.shared().coordinators().requestQueryCounter(mvccCrd); - map(keys, Collections.<ClusterNode, LinkedHashMap<KeyCacheObject, Boolean>>emptyMap(), topVer); + cntrFut.listen(new IgniteInClosure<IgniteInternalFuture<MvccCoordinatorVersion>>() { + @Override public void apply(IgniteInternalFuture<MvccCoordinatorVersion> fut) { + try { + mvccVer = fut.get(); + + map(keys, + Collections.<ClusterNode, LinkedHashMap<KeyCacheObject, Boolean>>emptyMap(), + GridPartitionedGetFuture.this.topVer); + + markInitialized(); + } + catch (IgniteCheckedException e) { + onDone(e); + } + } + }); + + return; } + map(keys, Collections.<ClusterNode, LinkedHashMap<KeyCacheObject, Boolean>>emptyMap(), topVer); + markInitialized(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9f0572bb/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java ----------------------------------------------------------------------
