Merge remote-tracking branch 'remotes/upstream/ignite-1.6.8' into ignite-1.7.2

# Conflicts:
#       
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java


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

Branch: refs/heads/master
Commit: 83ff7c7df8e659c9b0f267a55f6a04223145d69f
Parents: a3e98da 9b72d18
Author: Anton Vinogradov <a...@apache.org>
Authored: Mon Sep 19 18:37:34 2016 +0300
Committer: Anton Vinogradov <a...@apache.org>
Committed: Mon Sep 19 18:37:34 2016 +0300

----------------------------------------------------------------------
 .../apache/ignite/IgniteSystemProperties.java   |  12 +
 .../internal/GridEventConsumeHandler.java       |   5 -
 .../internal/GridMessageListenHandler.java      |   5 -
 .../internal/binary/BinaryObjectExImpl.java     | 161 ++++++---
 .../communication/GridIoMessageFactory.java     |   6 +
 .../processors/cache/GridCacheEntryEx.java      |   8 +
 .../processors/cache/GridCacheMapEntry.java     |   9 +-
 .../GridCacheReturnCompletableWrapper.java      | 101 ++++++
 .../cache/GridDeferredAckMessageSender.java     | 219 ++++++++++++
 .../GridDistributedTxRemoteAdapter.java         |  65 +++-
 .../distributed/dht/GridDhtTxFinishFuture.java  |  12 +-
 .../distributed/dht/GridDhtTxFinishRequest.java |  33 +-
 .../dht/GridDhtTxFinishResponse.java            |  52 ++-
 .../dht/GridDhtTxOnePhaseCommitAckRequest.java  | 134 +++++++
 .../distributed/dht/GridDhtTxPrepareFuture.java |  42 ++-
 .../dht/GridDhtTxPrepareRequest.java            |  93 +++--
 .../cache/distributed/dht/GridDhtTxRemote.java  |   6 +-
 .../dht/atomic/GridDhtAtomicCache.java          | 227 +++---------
 ...arOptimisticSerializableTxPrepareFuture.java |   4 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |   7 +-
 .../GridNearPessimisticTxPrepareFuture.java     |   4 +-
 .../near/GridNearTxFinishFuture.java            | 112 +++++-
 .../continuous/CacheContinuousQueryHandler.java |   5 -
 .../cache/transactions/IgniteTxAdapter.java     |  46 ++-
 .../cache/transactions/IgniteTxEntry.java       |  44 ++-
 .../cache/transactions/IgniteTxHandler.java     | 163 +++++++--
 .../transactions/IgniteTxLocalAdapter.java      |  27 +-
 .../cache/transactions/IgniteTxManager.java     | 154 +++++++-
 .../continuous/GridContinuousHandler.java       |   8 -
 .../continuous/GridContinuousProcessor.java     |  33 +-
 .../binary/BinaryObjectToStringSelfTest.java    |  75 ++++
 ...idAbstractCacheInterceptorRebalanceTest.java | 356 +++++++++++++++++++
 ...heInterceptorAtomicOffheapRebalanceTest.java |  30 ++
 ...GridCacheInterceptorAtomicRebalanceTest.java |  36 ++
 ...ceptorTransactionalOffheapRebalanceTest.java |  35 ++
 ...heInterceptorTransactionalRebalanceTest.java |  36 ++
 .../processors/cache/GridCacheTestEntryEx.java  |   4 +
 .../IgniteCacheInterceptorSelfTestSuite.java    |   5 +
 .../IgniteCachePutRetryAbstractSelfTest.java    |  39 +-
 ...gniteCachePutRetryTransactionalSelfTest.java |  75 +++-
 ...ContinuousQueryFailoverAbstractSelfTest.java |  99 ++++++
 ...eContinuousQueryMultiNodesFilteringTest.java | 161 +++++++++
 .../IgniteBinaryObjectsTestSuite.java           |   2 +
 .../config/benchmark-client-mode.properties     |   2 +
 .../config/benchmark-tx-win.properties          |   2 +
 .../yardstick/config/benchmark-tx.properties    |   2 +
 .../yardstick/config/benchmark-win.properties   |   2 +
 modules/yardstick/config/benchmark.properties   |   2 +
 .../cache/IgniteGetAndPutBenchmark.java         |  41 +++
 .../cache/IgniteGetAndPutTxBenchmark.java       |  70 ++++
 .../cache/IgniteInvokeTxBenchmark.java          |  40 +++
 51 files changed, 2471 insertions(+), 440 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/83ff7c7d/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/83ff7c7d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
----------------------------------------------------------------------
diff --cc 
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
index 620d9ae,a5b2202..fbd8ce5
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
@@@ -990,41 -959,44 +999,47 @@@ public class IgniteTxHandler 
                  req.deployInfo() != null);
          }
  
-         try {
-             // Reply back to sender.
-             ctx.io().send(nodeId, res, req.policy());
+         if (req.onePhaseCommit()) {
+             IgniteInternalFuture completeFut;
  
-             if (txPrepareMsgLog.isDebugEnabled()) {
-                 txPrepareMsgLog.debug("Sent dht prepare response [txId=" + 
req.nearXidVersion() +
-                     ", dhtTxId=" + req.version() +
-                     ", node=" + nodeId + ']');
-             }
-         }
-         catch (IgniteCheckedException e) {
-             if (e instanceof ClusterTopologyCheckedException) {
-                 if (txPrepareMsgLog.isDebugEnabled()) {
-                     txPrepareMsgLog.debug("Failed to send dht prepare 
response, node left [txId=" + req.nearXidVersion() +
-                         ", dhtTxId=" + req.version() +
-                         ", node=" + nodeId + ']');
-                 }
-             }
-             else {
-                 U.warn(log, "Failed to send tx response to remote node (will 
rollback transaction) [" +
-                     "txId=" + req.nearXidVersion() +
-                     ", dhtTxId=" + req.version() +
-                     ", node=" + nodeId +
-                     ", err=" + e.getMessage() + ']');
+             IgniteInternalFuture<IgniteInternalTx> dhtFin = dhtTx == null ?
+                 null : dhtTx.done() ? null : dhtTx.finishFuture();
+ 
+             final IgniteInternalFuture<IgniteInternalTx> nearFin = nearTx == 
null ?
+                 null : nearTx.done() ? null : nearTx.finishFuture();
+ 
+             if (dhtFin != null && nearFin != null) {
+                 GridCompoundFuture fut = new GridCompoundFuture();
+ 
+                 fut.add(dhtFin);
+                 fut.add(nearFin);
+ 
+                 fut.markInitialized();
+ 
+                 completeFut = fut;
              }
+             else
+                 completeFut = dhtFin != null ? dhtFin : nearFin;
  
-             if (nearTx != null)
-                 nearTx.rollback();
+             if (completeFut != null) {
+                 final GridDhtTxPrepareResponse res0 = res;
+                 final GridDhtTxRemote dhtTx0 = dhtTx;
+                 final GridNearTxRemote nearTx0 = nearTx;
  
-             if (dhtTx != null)
-                 dhtTx.rollback();
+                 completeFut.listen(new 
CI1<IgniteInternalFuture<IgniteInternalTx>>() {
+                     @Override public void 
apply(IgniteInternalFuture<IgniteInternalTx> fut) {
+                         sendReply(nodeId, req, res0, dhtTx0, nearTx0);
+                     }
+                 });
+             }
+             else
+                 sendReply(nodeId, req, res, dhtTx, nearTx);
          }
+         else
+             sendReply(nodeId, req, res, dhtTx, nearTx);
 +
 +        assert req.txState() != null || res.error() != null ||
 +            (ctx.tm().tx(req.version()) == null && 
ctx.tm().nearTx(req.version()) == null);
      }
  
      /**

Reply via email to