Merge branch 'ignite-1.9.1-p1' # Conflicts: # modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3f541676 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3f541676 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3f541676 Branch: refs/heads/ignite-4587 Commit: 3f541676e208b3bfaf13346a60e8508c68767772 Parents: 922b258 6d12bd4 Author: dkarachentsev <[email protected]> Authored: Fri Apr 14 09:45:14 2017 +0300 Committer: dkarachentsev <[email protected]> Committed: Fri Apr 14 09:45:14 2017 +0300 ---------------------------------------------------------------------- assembly/release-fabric-base.xml | 6 + .../binary/builder/BinaryBuilderReader.java | 8 + .../managers/communication/GridIoManager.java | 12 +- .../dht/atomic/GridDhtAtomicCache.java | 25 ++- .../util/nio/GridNioBackPressureControl.java | 39 ++++- .../util/nio/GridNioMessageTracker.java | 7 + .../mutabletest/GridBinaryTestClasses.java | 9 + .../CacheAtomicPrimarySyncBackPressureTest.java | 167 +++++++++++++++++++ .../testsuites/IgniteCacheTestSuite4.java | 3 + 9 files changed, 262 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3f541676/assembly/release-fabric-base.xml ---------------------------------------------------------------------- diff --cc assembly/release-fabric-base.xml index c3bad39,97222c9..b374ab4 --- a/assembly/release-fabric-base.xml +++ b/assembly/release-fabric-base.xml @@@ -172,16 -178,10 +172,22 @@@ <directory>modules/clients/target/cppdoc/html</directory> <outputDirectory>/platforms/cpp/docs</outputDirectory> </fileSet> + + <!-- Move CPP binaries. --> + <fileSet> + <directory>modules/platforms/cpp/bin</directory> + <outputDirectory>/platforms/cpp/bin</outputDirectory> + </fileSet> + + <!-- Move CPP binaries. --> + <fileSet> + <directory>modules/platforms/cpp/bin</directory> ++ <outputDirectory>/platforms/cpp/bin</outputDirectory> ++ </fileSet> + + <!-- Move CPP binaries. --> + <fileSet> + <directory>modules/platforms/cpp/bin</directory> <outputDirectory>/platforms/cpp/bin</outputDirectory> </fileSet> http://git-wip-us.apache.org/repos/asf/ignite/blob/3f541676/modules/core/src/main/java/org/apache/ignite/internal/binary/builder/BinaryBuilderReader.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3f541676/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3f541676/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java index 6bcd6c2,da16e74..2810327 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java @@@ -99,15 -100,20 +101,18 @@@ import org.apache.ignite.internal.util. import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteBiTuple; import org.apache.ignite.lang.IgniteClosure; + import org.apache.ignite.lang.IgniteInClosure; import org.apache.ignite.lang.IgniteOutClosure; + import org.apache.ignite.lang.IgniteRunnable; +import org.apache.ignite.lang.IgniteUuid; import org.apache.ignite.plugin.security.SecurityPermission; import org.apache.ignite.transactions.TransactionIsolation; import org.jetbrains.annotations.Nullable; import static org.apache.ignite.IgniteSystemProperties.IGNITE_ATOMIC_DEFERRED_ACK_BUFFER_SIZE; import static org.apache.ignite.IgniteSystemProperties.IGNITE_ATOMIC_DEFERRED_ACK_TIMEOUT; -import static org.apache.ignite.cache.CacheAtomicWriteOrderMode.CLOCK; import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_ASYNC; -import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC; + import static org.apache.ignite.cache.CacheWriteSynchronizationMode.PRIMARY_SYNC; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.DELETE; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.TRANSFORM; import static org.apache.ignite.internal.processors.cache.GridCacheOperation.UPDATE; @@@ -1870,15 -1905,33 +1875,33 @@@ public class GridDhtAtomicCache<K, V> e res.returnValue(retVal); - if (dhtFut != null) - if (req.writeSynchronizationMode() != FULL_ASYNC) - req.cleanup(!node.isLocal()); - + if (dhtFut != null) { + if (req.writeSynchronizationMode() == PRIMARY_SYNC + // To avoid deadlock disable back-pressure for sender data node. + && !ctx.discovery().cacheAffinityNode(ctx.discovery().node(nodeId), ctx.name()) + && !dhtFut.isDone()) { + final IgniteRunnable tracker = GridNioBackPressureControl.threadTracker(); + + if (tracker != null && tracker instanceof GridNioMessageTracker) { + ((GridNioMessageTracker)tracker).onMessageReceived(); + + dhtFut.listen(new IgniteInClosure<IgniteInternalFuture<Void>>() { + @Override public void apply(IgniteInternalFuture<Void> fut) { + ((GridNioMessageTracker)tracker).onMessageProcessed(); + } + }); + } + } + - ctx.mvcc().addAtomicFuture(dhtFut.version(), dhtFut); + ctx.mvcc().addAtomicFuture(dhtFut.id(), dhtFut); + } } - else + else { // Should remap all keys. remap = true; + + res.remapTopologyVersion(top.topologyVersion()); + } } finally { top.readUnlock(); http://git-wip-us.apache.org/repos/asf/ignite/blob/3f541676/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite4.java ----------------------------------------------------------------------
