You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/12/06 16:09:26 UTC
ignite git commit: ignite-4371
Repository: ignite
Updated Branches:
refs/heads/ignite-4371 [created] 54d7cea30
ignite-4371
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/54d7cea3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/54d7cea3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/54d7cea3
Branch: refs/heads/ignite-4371
Commit: 54d7cea30e31d493a7e8ae0bc7a8e42281dafc3c
Parents: dd9f3c2
Author: sboikov <sb...@gridgain.com>
Authored: Tue Dec 6 16:26:45 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Dec 6 19:09:10 2016 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheIoManager.java | 3 +
.../GridDistributedTxFinishResponse.java | 6 --
.../GridDistributedTxRemoteAdapter.java | 2 +-
.../distributed/dht/GridDhtTxFinishFuture.java | 103 ++++++++++--------
.../distributed/dht/GridDhtTxFinishRequest.java | 2 +-
.../cache/distributed/dht/GridDhtTxLocal.java | 105 +++++--------------
.../distributed/dht/GridDhtTxLocalAdapter.java | 5 +-
.../dht/GridDhtTxPrepareRequest.java | 2 +-
.../near/GridNearTxFinishRequest.java | 2 +-
.../cache/distributed/near/GridNearTxLocal.java | 48 ++++-----
.../near/GridNearTxPrepareRequest.java | 2 +-
.../cache/transactions/IgniteTxAdapter.java | 6 ++
.../cache/transactions/IgniteTxHandler.java | 4 +-
.../cache/transactions/IgniteTxManager.java | 4 +
.../ignite/internal/util/IgniteUtils.java | 4 +-
.../IgniteTxExceptionAbstractSelfTest.java | 2 +-
16 files changed, 132 insertions(+), 168 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
index 924ce79..8d58651 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java
@@ -363,6 +363,9 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
unmarshall(nodeId, cacheMsg);
+ if (!cacheMsg.partitionExchangeMessage())
+ log.info("Message: " + cacheMsg);
+
if (cacheMsg.classError() != null)
processFailedMessage(nodeId, cacheMsg, c);
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
index c5cf332..109d665 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
@@ -86,12 +86,6 @@ public class GridDistributedTxFinishResponse extends GridCacheMessage {
}
/** {@inheritDoc} */
- @Override public int partition() {
- // TODO https://issues.apache.org/jira/browse/IGNITE-4371
- return Integer.MIN_VALUE;
- }
-
- /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index 4adfa8b..68c0e57 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -386,7 +386,7 @@ public class GridDistributedTxRemoteAdapter extends IgniteTxAdapter
// If another thread is doing prepare or rollback.
if (!state(PREPARING)) {
// In optimistic mode prepare may be called multiple times.
- if(state() != PREPARING || !optimistic()) {
+ if (state() != PREPARING || !optimistic()) {
if (log.isDebugEnabled())
log.debug("Invalid transaction state for prepare: " + this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index ac2ab41..288551b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -80,9 +80,6 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
@GridToStringExclude
private GridDhtTxLocalAdapter tx;
- /** Commit flag. */
- private boolean commit;
-
/** Error. */
@SuppressWarnings("UnusedDeclaration")
@GridToStringExclude
@@ -94,20 +91,15 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
/** Near mappings. */
private Map<UUID, GridDistributedTxMapping> nearMap;
- /** Trackable flag. */
- private boolean trackable = true;
-
/**
* @param cctx Context.
* @param tx Transaction.
- * @param commit Commit flag.
*/
- public GridDhtTxFinishFuture(GridCacheSharedContext<K, V> cctx, GridDhtTxLocalAdapter tx, boolean commit) {
+ public GridDhtTxFinishFuture(GridCacheSharedContext<K, V> cctx, GridDhtTxLocalAdapter tx) {
super(F.<IgniteInternalTx>identityReducer(tx));
this.cctx = cctx;
this.tx = tx;
- this.commit = commit;
dhtMap = tx.dhtMap();
nearMap = tx.nearMap();
@@ -151,46 +143,59 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
/** {@inheritDoc} */
@Override public boolean trackable() {
- return trackable;
+ return true;
}
/** {@inheritDoc} */
@Override public void markNotTrackable() {
- trackable = false;
+ assert false;
}
/**
* @param e Error.
*/
- public void onError(Throwable e) {
- if (ERR_UPD.compareAndSet(this, null, e)) {
- boolean marked = tx.setRollbackOnly();
-
- if (e instanceof IgniteTxRollbackCheckedException) {
- if (marked) {
- try {
- tx.rollback();
- }
- catch (IgniteCheckedException ex) {
- U.error(log, "Failed to automatically rollback transaction: " + tx, ex);
- }
- }
- }
- else if (tx.isSystemInvalidate()) { // Invalidate remote transactions on heuristic error.
- finish();
+ public void rollbackOnError(Throwable e) {
+// if (ERR_UPD.compareAndSet(this, null, e)) {
+// log.info("Dht rollback on error: " + tx.isSystemInvalidate() + " " + System.identityHashCode(tx) + " " + e);
+//
+// U.dumpStack("rollback on error");
+//
+// boolean marked = tx.setRollbackOnly();
+//
+// if (e instanceof IgniteTxRollbackCheckedException) {
+// if (marked) {
+// try {
+// tx.rollback();
+// }
+// catch (IgniteCheckedException ex) {
+// U.error(log, "Failed to automatically rollback transaction: " + tx, ex);
+// }
+// }
+// }
+// else if (tx.isSystemInvalidate()) { // Invalidate remote transactions on heuristic error.
+// finish(true);
+//
+// try {
+// get();
+// }
+// catch (IgniteTxHeuristicCheckedException ignore) {
+// // Future should complete with GridCacheTxHeuristicException.
+// }
+// catch (IgniteCheckedException err) {
+// U.error(log, "Failed to invalidate transaction: " + tx, err);
+// }
+// }
+//
+// onComplete();
+// }
+ assert e != null;
+
+ log.info("Dht rollback on error: " + tx.isSystemInvalidate() + " " + System.identityHashCode(tx) + " " + e);
- try {
- get();
- }
- catch (IgniteTxHeuristicCheckedException ignore) {
- // Future should complete with GridCacheTxHeuristicException.
- }
- catch (IgniteCheckedException err) {
- U.error(log, "Failed to invalidate transaction: " + tx, err);
- }
- }
+ if (ERR_UPD.compareAndSet(this, null, e)) {
+ tx.setRollbackOnly();
- onComplete();
+ finish(false);
}
}
@@ -245,7 +250,7 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
Throwable e = this.err;
- if (e == null && commit)
+ if (e == null)
e = this.tx.commitError();
Throwable finishErr = e != null ? e : err;
@@ -255,7 +260,7 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
finishErr = this.tx.commitError();
if (this.tx.syncMode() != PRIMARY_SYNC)
- this.tx.sendFinishReply(commit, finishErr);
+ this.tx.sendFinishReply(finishErr);
// Don't forget to clean up.
cctx.mvcc().removeFuture(futId);
@@ -284,15 +289,19 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
/**
* Initializes future.
+ *
+ * @param commit Commit flag.
*/
@SuppressWarnings({"SimplifiableIfStatement", "IfMayBeConditional"})
- public void finish() {
+ public void finish(boolean commit) {
+ log.info("Dht finish: " + commit + " " + System.identityHashCode(tx));
+
boolean sync;
if (!F.isEmpty(dhtMap) || !F.isEmpty(nearMap))
- sync = finish(dhtMap, nearMap);
+ sync = finish(commit, dhtMap, nearMap);
else if (!commit && !F.isEmpty(tx.lockTransactionNodes()))
- sync = rollbackLockTransactions(tx.lockTransactionNodes());
+ sync = rollbackLockTransactions(commit, tx.lockTransactionNodes());
else
// No backup or near nodes to send commit message to (just complete then).
sync = false;
@@ -304,10 +313,11 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
}
/**
+ * @param commit Commit flag.
* @param nodes Nodes.
* @return {@code True} in case there is at least one synchronous {@code MiniFuture} to wait for.
*/
- private boolean rollbackLockTransactions(Collection<ClusterNode> nodes) {
+ private boolean rollbackLockTransactions(boolean commit, Collection<ClusterNode> nodes) {
assert !commit;
assert !F.isEmpty(nodes);
@@ -390,11 +400,14 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
}
/**
+ * @param commit Commit flag.
* @param dhtMap DHT map.
* @param nearMap Near map.
* @return {@code True} in case there is at least one synchronous {@code MiniFuture} to wait for.
*/
- private boolean finish(Map<UUID, GridDistributedTxMapping> dhtMap, Map<UUID, GridDistributedTxMapping> nearMap) {
+ private boolean finish(boolean commit,
+ Map<UUID, GridDistributedTxMapping> dhtMap,
+ Map<UUID, GridDistributedTxMapping> nearMap) {
if (tx.onePhaseCommit())
return false;
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
index c618a18..abacf27 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishRequest.java
@@ -368,7 +368,7 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest {
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridDhtTxFinishRequest.class, this, super.toString());
+ return "GridDhtTxFinishRequest [commit=" + commit() + ", inv=" + isSystemInvalidate() + ']';
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
index b659abb..6e1fae5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
@@ -503,10 +503,13 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
}
/**
+ * @param commit Commit flag.
* @param prepFut Prepare future.
* @param fut Finish future.
*/
- private void finishCommit(@Nullable IgniteInternalFuture prepFut, GridDhtTxFinishFuture fut) {
+ private void finishTx(boolean commit, @Nullable IgniteInternalFuture prepFut, GridDhtTxFinishFuture fut) {
+ assert prepFut == null || prepFut.isDone();
+
boolean primarySync = syncMode() == PRIMARY_SYNC;
IgniteCheckedException err = null;
@@ -515,36 +518,25 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
if (prepFut != null)
prepFut.get(); // Check for errors.
- if (finish(true)) {
- if (primarySync)
- sendFinishReply(true, null);
-
- fut.finish();
- }
- else {
- err = new IgniteCheckedException("Failed to commit transaction: " + CU.txString(this));
+ boolean finished = finish(commit);
- fut.onError(err);
- }
- }
- catch (IgniteTxOptimisticCheckedException e) {
- if (log.isDebugEnabled())
- log.debug("Failed to optimistically prepare transaction [tx=" + this + ", e=" + e + ']');
-
- err = e;
-
- fut.onError(e);
+ if (!finished)
+ err = new IgniteCheckedException("Failed to finish transaction [commit=" + commit +
+ ", tx=" + CU.txString(this) + ']');
}
catch (IgniteCheckedException e) {
- U.error(log, "Failed to prepare transaction: " + this, e);
+ U.error(log, "Failed to commit transaction: " + this, e);
err = e;
-
- fut.onError(e);
}
- if (primarySync && err != null)
- sendFinishReply(true, err);
+ if (primarySync)
+ sendFinishReply(err);
+
+ if (err != null)
+ fut.rollbackOnError(err);
+ else
+ fut.finish(commit);
}
/** {@inheritDoc} */
@@ -557,7 +549,7 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
if (pessimistic())
prepareAsync();
- final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this, /*commit*/true);
+ final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this);
cctx.mvcc().addFuture(fut, fut.futureId());
@@ -565,11 +557,11 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
if (prep != null) {
if (prep.isDone())
- finishCommit(prep, fut);
+ finishTx(true, prep, fut);
else {
prep.listen(new CI1<IgniteInternalFuture<?>>() {
@Override public void apply(IgniteInternalFuture<?> f) {
- finishCommit(f, fut);
+ finishTx(true, f, fut);
}
});
}
@@ -577,7 +569,7 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
else {
assert optimistic();
- finishCommit(null, fut);
+ finishTx(true, null, fut);
}
return fut;
@@ -590,56 +582,11 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
PREP_FUT_UPD.compareAndSet(this, fut, null);
}
- /**
- * @param prepFut Prepare future.
- * @param fut Finish future.
- */
- private void finishRollback(@Nullable IgniteInternalFuture prepFut, GridDhtTxFinishFuture fut) {
- try {
- if (prepFut != null)
- prepFut.get();
- }
- catch (IgniteCheckedException e) {
- if (log.isDebugEnabled())
- log.debug("Failed to prepare or rollback transaction [tx=" + this + ", e=" + e + ']');
- }
-
- boolean primarySync = syncMode() == PRIMARY_SYNC;
-
- IgniteCheckedException err = null;
-
- try {
- if (finish(false) || state() == UNKNOWN) {
- if (primarySync)
- sendFinishReply(false, null);
-
- fut.finish();
- }
- else {
- err = new IgniteCheckedException("Failed to rollback transaction: " +
- CU.txString(GridDhtTxLocal.this));
-
- fut.onError(err);
- }
- }
- catch (IgniteCheckedException e) {
- U.error(log, "Failed to gracefully rollback transaction: " + CU.txString(GridDhtTxLocal.this),
- e);
-
- err = e;
-
- fut.onError(e);
- }
-
- if (primarySync && err != null)
- sendFinishReply(false, err);
- }
-
/** {@inheritDoc} */
@Override public IgniteInternalFuture<IgniteInternalTx> rollbackAsync() {
GridDhtTxPrepareFuture prepFut = this.prepFut;
- final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this, /*rollback*/false);
+ final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this);
cctx.mvcc().addFuture(fut, fut.futureId());
@@ -648,12 +595,12 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
prepFut.listen(new CI1<IgniteInternalFuture<?>>() {
@Override public void apply(IgniteInternalFuture<?> f) {
- finishRollback(f, fut);
+ finishTx(false, f, fut);
}
});
}
else
- finishRollback(null, fut);
+ finishTx(false, null, fut);
return fut;
}
@@ -672,7 +619,7 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
}
/** {@inheritDoc} */
- @Override protected void sendFinishReply(boolean commit, @Nullable Throwable err) {
+ @Override protected void sendFinishReply(@Nullable Throwable err) {
if (nearFinFutId != null) {
if (nearNodeId.equals(cctx.localNodeId())) {
if (log.isDebugEnabled())
@@ -701,8 +648,8 @@ public class GridDhtTxLocal extends GridDhtTxLocalAdapter implements GridCacheMa
}
}
catch (Throwable ex) {
- U.error(log, "Failed to send finish response to node (transaction was " +
- (commit ? "committed" : "rolledback") + ") [txId=" + nearXidVersion() +
+ U.error(log, "Failed to send finish response to node [txId=" + nearXidVersion() +
+ ", txState=" + state() +
", dhtTxId=" + xidVersion() +
", node=" + nearNodeId +
", res=" + res + ']', ex);
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
index 35dfb62..32453c6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
@@ -236,10 +236,9 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
AffinityTopologyVersion topVer);
/**
- * @param commit Commit flag.
* @param err Error, if any.
*/
- protected abstract void sendFinishReply(boolean commit, @Nullable Throwable err);
+ protected abstract void sendFinishReply(@Nullable Throwable err);
/** {@inheritDoc} */
@Override public boolean needsCompletedVersions() {
@@ -726,7 +725,7 @@ public abstract class GridDhtTxLocalAdapter extends IgniteTxLocalAdapter {
/*read*/read,
accessTtl,
filter == null ? CU.empty0() : filter,
- /**computeInvoke*/false);
+ /*computeInvoke*/false);
return ret;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
index a8f2087..cf17208 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareRequest.java
@@ -356,7 +356,7 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest {
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridDhtTxPrepareRequest.class, this, "super", super.toString());
+ return "GridDhtTxPrepareRequest [onePhase=" + onePhaseCommit() + ']';
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
index dfbbe18..2fc4f83 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishRequest.java
@@ -338,6 +338,6 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest {
/** {@inheritDoc} */
@Override public String toString() {
- return GridToStringBuilder.toString(GridNearTxFinishRequest.class, this, "super", super.toString());
+ return "GridNearTxFinishRequest [commit=" + commit() + ", inv=" + isInvalidate() + ']';
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index ed37059..56fad3c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -231,7 +231,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
}
/** {@inheritDoc} */
- @Override protected void sendFinishReply(boolean commit, @Nullable Throwable err) {
+ @Override protected void sendFinishReply(@Nullable Throwable err) {
// We are in near transaction, do not send finish reply to local node.
}
@@ -1062,50 +1062,48 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
return new GridFinishedFuture<IgniteInternalTx>(this);
}
- final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this, /*commit*/true);
+ final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this);
cctx.mvcc().addFuture(fut, fut.futureId());
if (prep == null || prep.isDone()) {
assert prep != null || optimistic();
+ IgniteCheckedException err = null;
+
try {
if (prep != null)
prep.get(); // Check for errors of a parent future.
-
- fut.finish();
- }
- catch (IgniteTxOptimisticCheckedException e) {
- if (log.isDebugEnabled())
- log.debug("Failed optimistically to prepare transaction [tx=" + this + ", e=" + e + ']');
-
- fut.onError(e);
}
catch (IgniteCheckedException e) {
- U.error(log, "Failed to prepare transaction: " + this, e);
+ err = e;
- fut.onError(e);
+ U.error(log, "Failed to prepare transaction: " + this, e);
}
+
+ if (err != null)
+ fut.rollbackOnError(err);
+ else
+ fut.finish(true);
}
else
prep.listen(new CI1<IgniteInternalFuture<?>>() {
@Override public void apply(IgniteInternalFuture<?> f) {
+ IgniteCheckedException err = null;
+
try {
f.get(); // Check for errors of a parent future.
-
- fut.finish();
- }
- catch (IgniteTxOptimisticCheckedException e) {
- if (log.isDebugEnabled())
- log.debug("Failed optimistically to prepare transaction [tx=" + this + ", e=" + e + ']');
-
- fut.onError(e);
}
catch (IgniteCheckedException e) {
- U.error(log, "Failed to prepare transaction: " + this, e);
+ err = e;
- fut.onError(e);
+ U.error(log, "Failed to prepare transaction: " + this, e);
}
+
+ if (err != null)
+ fut.rollbackOnError(err);
+ else
+ fut.finish(true);
}
});
@@ -1121,7 +1119,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
if (log.isDebugEnabled())
log.debug("Rolling back colocated tx locally: " + this);
- final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this, /*commit*/false);
+ final GridDhtTxFinishFuture fut = new GridDhtTxFinishFuture<>(cctx, this);
cctx.mvcc().addFuture(fut, fut.futureId());
@@ -1138,7 +1136,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
e.getMessage() + ']');
}
- fut.finish();
+ fut.finish(false);
}
else
prep.listen(new CI1<IgniteInternalFuture<?>>() {
@@ -1151,7 +1149,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter {
e.getMessage() + ']');
}
- fut.finish();
+ fut.finish(false);
}
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
index e55566b..2d243ee 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareRequest.java
@@ -485,6 +485,6 @@ public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest {
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridNearTxPrepareRequest.class, this, super.toString());
+ return "GridNearTxPrepareRequest [onePhase=" + onePhaseCommit() + ']';
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index 18c3011..f4791bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -318,6 +318,8 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
if (log == null)
log = U.logger(cctx.kernalContext(), logRef, this);
+
+ log.info("Created " + getClass().getSimpleName());
}
/**
@@ -367,6 +369,8 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
if (log == null)
log = U.logger(cctx.kernalContext(), logRef, this);
+
+ log.info("Created " + getClass().getSimpleName());
}
/** {@inheritDoc} */
@@ -1131,6 +1135,8 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
if (log.isDebugEnabled())
log.debug("Changed transaction state [prev=" + prev + ", new=" + this.state + ", tx=" + this + ']');
+ log.info("Changed state " + getClass().getSimpleName() + " " + state);
+
notifyAll();
}
else {
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
----------------------------------------------------------------------
diff --git 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
index 6b60f46..4626021 100644
--- 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
@@ -872,7 +872,7 @@ public class IgniteTxHandler {
U.error(log, "Failed completing transaction [commit=" + req.commit() + ", tx=" + tx + ']', e);
- IgniteInternalFuture<IgniteInternalTx> res = null;
+ IgniteInternalFuture<IgniteInternalTx> res;
IgniteInternalFuture<IgniteInternalTx> rollbackFut = tx.rollbackAsync();
@@ -884,7 +884,7 @@ public class IgniteTxHandler {
if (e instanceof Error)
throw (Error)e;
- return res == null ? new GridFinishedFuture<IgniteInternalTx>(e) : res;
+ return res;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index bd8e18b..a19a230 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -1198,6 +1198,8 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
assert tx.state() == COMMITTING : "Invalid transaction state for commit from tm [state=" + tx.state() +
", expected=COMMITTING, tx=" + tx + ']';
+ log.info("commit " + tx.getClass().getSimpleName());
+
if (log.isDebugEnabled())
log.debug("Committing from TM [locNodeId=" + cctx.localNodeId() + ", tx=" + tx + ']');
@@ -1300,6 +1302,8 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
if (log.isDebugEnabled())
log.debug("Rolling back from TM [locNodeId=" + cctx.localNodeId() + ", tx=" + tx + ']');
+ log.info("rollback " + tx.getClass().getSimpleName());
+
// 1. Record transaction version to avoid duplicates.
addRolledbackTx(tx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 3dfb3c6..3e31170 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -4268,9 +4268,9 @@ public abstract class IgniteUtils {
if (log != null) {
if (e == null)
- log.error(compact(longMsg.toString()));
+ log.info(compact(longMsg.toString()));
else
- log.error(compact(longMsg.toString()), e);
+ log.info(compact(longMsg.toString()) + " " + e);
}
else {
X.printerr("[" + SHORT_DATE_FMT.format(new java.util.Date()) + "] (err) " +
http://git-wip-us.apache.org/repos/asf/ignite/blob/54d7cea3/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
index 95161c3..8972c3b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxExceptionAbstractSelfTest.java
@@ -276,7 +276,7 @@ public abstract class IgniteTxExceptionAbstractSelfTest extends GridCacheAbstrac
* @throws Exception If failed.
*/
public void testPutMultipleKeysTx() throws Exception {
- for (TransactionConcurrency concurrency : TransactionConcurrency.values()) {
+ for (TransactionConcurrency concurrency : new TransactionConcurrency[]{TransactionConcurrency.PESSIMISTIC}) {
for (TransactionIsolation isolation : TransactionIsolation.values()) {
checkPutTx(true, concurrency, isolation,
keyForNode(grid(0).localNode(), PRIMARY),