IGNITE-6181 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b770c0a1 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b770c0a1 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b770c0a1 Branch: refs/heads/ignite-6181-1 Commit: b770c0a1d6b2853c8b629a5ac08ecfbc00486d35 Parents: 6a92846 Author: ascherbakoff <alexey.scherbak...@gmail.com> Authored: Tue Sep 5 16:50:42 2017 +0300 Committer: ascherbakoff <alexey.scherbak...@gmail.com> Committed: Tue Sep 5 16:50:42 2017 +0300 ---------------------------------------------------------------------- .../apache/ignite/IgniteSystemProperties.java | 6 ----- .../cache/distributed/near/GridNearTxLocal.java | 24 +++++--------------- .../cache/transactions/IgniteTxHandler.java | 8 +++---- .../transactions/IgniteTxLocalAdapter.java | 1 - .../cache/transactions/IgniteTxManager.java | 11 +++------ .../transactions/TxRollbackOnTimeoutTest.java | 14 ------------ .../ignite/testsuites/IgniteCacheTestSuite.java | 3 +++ 7 files changed, 16 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index c22d552..d3cba2b 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -706,12 +706,6 @@ public final class IgniteSystemProperties { public static final String IGNITE_ENABLE_FORCIBLE_NODE_KILL = "IGNITE_ENABLE_FORCIBLE_NODE_KILL"; /** - * If this property is set, a node will track transaction initiators, printing them in tx timeout error. - * Useful for debugging. - */ - public static final String IGNITE_TRACK_TRANSACTION_INITIATOR = "IGNITE_TRACK_TRANSACTION_INITIATOR"; - - /** * Enforces singleton. */ private IgniteSystemProperties() { http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/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 f5ecdd8..965a502 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 @@ -34,7 +34,6 @@ import javax.cache.CacheException; import javax.cache.expiry.ExpiryPolicy; import javax.cache.processor.EntryProcessor; import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.NodeStoppingException; @@ -116,17 +115,11 @@ import static org.apache.ignite.transactions.TransactionState.ROLLED_BACK; import static org.apache.ignite.transactions.TransactionState.ROLLING_BACK; import static org.apache.ignite.transactions.TransactionState.UNKNOWN; -import static org.apache.ignite.IgniteSystemProperties.IGNITE_TRACK_TRANSACTION_INITIATOR; - /** * Replicated user transaction. */ @SuppressWarnings("unchecked") public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeoutObject, AutoCloseable { - /** {@link IgniteSystemProperties#IGNITE_TRACK_TRANSACTION_INITIATOR} */ - private static final boolean TRACK_TRANSACTION_INITIATOR = - IgniteSystemProperties.getBoolean(IGNITE_TRACK_TRANSACTION_INITIATOR, false); - /** */ private static final long serialVersionUID = 0L; @@ -182,9 +175,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou @GridToStringExclude private TransactionProxyImpl proxy; - /** */ - private transient Exception trackE; - /** * Empty constructor required for {@link Externalizable}. */ @@ -240,12 +230,8 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou mappings = implicitSingle ? new IgniteTxMappingsSingleImpl() : new IgniteTxMappingsImpl(); - if (this.timeout > 0) { - if (TRACK_TRANSACTION_INITIATOR) - trackE = new Exception(); - + if (this.timeout > 0) cctx.time().addTimeoutObject(this); - } initResult(); } @@ -4084,9 +4070,11 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou /** {@inheritDoc} */ @Override public void onTimeout() { if (state(MARKED_ROLLBACK, true)) { - log.error("Transaction is timed out and will be rolled back: [" + this + ']', trackE); - - rollbackNearTxLocalAsync(); + cctx.kernalContext().closure().runLocalSafe(new Runnable() { + @Override public void run() { + rollbackNearTxLocalAsync(); + } + }); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/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 6f96b4b..de0e415 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 @@ -673,8 +673,8 @@ public class IgniteTxHandler { * @param res Response. */ private void processNearTxFinishResponse(UUID nodeId, GridNearTxFinishResponse res) { - //if (txFinishMsgLog.isDebugEnabled()) - txFinishMsgLog.info("Received near finish response [txId=" + res.xid() + ", node=" + nodeId + ']'); + if (txFinishMsgLog.isDebugEnabled()) + txFinishMsgLog.debug("Received near finish response [txId=" + res.xid() + ", node=" + nodeId + ']'); ctx.tm().onFinishedRemote(nodeId, res.threadId()); @@ -783,8 +783,8 @@ public class IgniteTxHandler { UUID nodeId, GridNearTxFinishRequest req ) { - //if (txFinishMsgLog.isDebugEnabled()) - txFinishMsgLog.info("Received near finish request [txId=" + req.version() + ", node=" + nodeId + ']'); + if (txFinishMsgLog.isDebugEnabled()) + txFinishMsgLog.debug("Received near finish request [txId=" + req.version() + ", node=" + nodeId + ']'); IgniteInternalFuture<IgniteInternalTx> fut = finish(nodeId, null, req); http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java index ea105ae..e6e19e3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java @@ -92,7 +92,6 @@ import static org.apache.ignite.internal.processors.dr.GridDrType.DR_NONE; import static org.apache.ignite.internal.processors.dr.GridDrType.DR_PRIMARY; import static org.apache.ignite.transactions.TransactionState.COMMITTED; import static org.apache.ignite.transactions.TransactionState.COMMITTING; -import static org.apache.ignite.transactions.TransactionState.MARKED_ROLLBACK; import static org.apache.ignite.transactions.TransactionState.PREPARING; import static org.apache.ignite.transactions.TransactionState.ROLLED_BACK; import static org.apache.ignite.transactions.TransactionState.ROLLING_BACK; http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/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 ee7d922..7ff36ac 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 @@ -31,7 +31,6 @@ import java.util.UUID; import java.util.concurrent.ConcurrentMap; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteClientDisconnectedException; -import org.apache.ignite.IgniteException; import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.binary.BinaryObjectException; import org.apache.ignite.cluster.ClusterNode; @@ -70,7 +69,6 @@ import org.apache.ignite.internal.processors.cache.distributed.near.GridNearOpti import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal; import org.apache.ignite.internal.processors.cache.transactions.TxDeadlockDetection.TxDeadlockFuture; import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; -import org.apache.ignite.internal.processors.timeout.GridTimeoutObject; import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter; import org.apache.ignite.internal.transactions.IgniteTxOptimisticCheckedException; import org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException; @@ -1425,11 +1423,8 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter { private void clearThreadMap(IgniteInternalTx tx) { if (tx.local() && !tx.dht()) { if (!tx.system()) { - /** - * Timed out local transactions are cleared in {@link #onLocalClose} - * TODO reduce heap size of timed out transaction. - */ - if (!(tx.timedOut() && tx.pessimistic() && tx.local() && !tx.dht())) + /** Timed out local transactions are cleared in {@link #onLocalClose}. */ + if (!tx.timedOut() || !tx.pessimistic()) threadMap.remove(tx.threadId(), tx); } else { @@ -2323,7 +2318,7 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter { } /** - * Remove thread completely. + * Callback for closing local transaction. * @param threadId Thread ID. * @param tx Local transaction. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java index bb1bbc7..84e85ff 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java @@ -86,20 +86,6 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest { } /** {@inheritDoc} */ - @Override protected void beforeTestsStarted() throws Exception { - super.beforeTestsStarted(); - - System.setProperty(IgniteSystemProperties.IGNITE_TRACK_TRANSACTION_INITIATOR, "true"); - } - - /** {@inheritDoc} */ - @Override protected void afterTestsStopped() throws Exception { - super.afterTestsStopped(); - - System.clearProperty(IgniteSystemProperties.IGNITE_TRACK_TRANSACTION_INITIATOR); - } - - /** {@inheritDoc} */ @Override protected void beforeTest() throws Exception { super.beforeTest(); http://git-wip-us.apache.org/repos/asf/ignite/blob/b770c0a1/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java index dea0eb0..c06647a 100755 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java @@ -134,6 +134,7 @@ import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCa import org.apache.ignite.internal.processors.cache.local.GridCacheLocalTxExceptionSelfTest; import org.apache.ignite.internal.processors.cache.query.continuous.CacheEntryProcessorExternalizableFailedTest; import org.apache.ignite.internal.processors.cache.query.continuous.CacheEntryProcessorNonSerializableTest; +import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutTest; import org.apache.ignite.internal.processors.datastreamer.DataStreamProcessorSelfTest; import org.apache.ignite.internal.processors.datastreamer.DataStreamerImplSelfTest; import org.apache.ignite.internal.processors.datastreamer.DataStreamerMultiThreadedSelfTest; @@ -314,6 +315,8 @@ public class IgniteCacheTestSuite extends TestSuite { suite.addTestSuite(IgniteIncompleteCacheObjectSelfTest.class); + suite.addTestSuite(TxRollbackOnTimeoutTest.class); + return suite; } }