Repository: ignite Updated Branches: refs/heads/ignite-8446 778dd0dce -> 2e11d9fd0
8446 Signed-off-by: Anton Vinogradov <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2e11d9fd Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2e11d9fd Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2e11d9fd Branch: refs/heads/ignite-8446 Commit: 2e11d9fd0f3bafa8ac773ee4e89a78121e959ea9 Parents: 778dd0d Author: Anton Vinogradov <[email protected]> Authored: Tue Jun 26 17:06:13 2018 +0300 Committer: Anton Vinogradov <[email protected]> Committed: Tue Jun 26 17:06:13 2018 +0300 ---------------------------------------------------------------------- .../org/apache/ignite/events/EventType.java | 15 +- .../cache/distributed/near/GridNearTxLocal.java | 8 +- .../cache/transactions/IgniteTxAdapter.java | 199 ++++--------------- .../cache/transactions/IgniteTxManager.java | 1 - .../transactions/TxStateChangeEventTest.java | 41 +--- 5 files changed, 55 insertions(+), 209 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/2e11d9fd/modules/core/src/main/java/org/apache/ignite/events/EventType.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/events/EventType.java b/modules/core/src/main/java/org/apache/ignite/events/EventType.java index e11f697..a6ab962 100644 --- a/modules/core/src/main/java/org/apache/ignite/events/EventType.java +++ b/modules/core/src/main/java/org/apache/ignite/events/EventType.java @@ -841,18 +841,6 @@ public interface EventType { public static final int EVT_TX_RESUMED = 133; /** - * Built-in event type: Transaction has been prepared. - * <p> - * Fired for each prepared transaction except system transactions. - * <p> - * NOTE: all types in range <b>from 1 to 1000 are reserved</b> for - * internal Ignite events and should not be used by user-defined events. - * - * @see TransactionStateChangedEvent - */ - public static final int EVT_TX_PREPARED = 134; - - /** * All checkpoint events. This array can be directly passed into * {@link IgniteEvents#localListen(IgnitePredicate, int...)} method to * subscribe to all checkpoint events. @@ -1062,8 +1050,7 @@ public interface EventType { EVT_TX_COMMITTED, EVT_TX_ROLLED_BACK, EVT_TX_SUSPENDED, - EVT_TX_RESUMED, - EVT_TX_PREPARED + EVT_TX_RESUMED }; /** http://git-wip-us.apache.org/repos/asf/ignite/blob/2e11d9fd/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 a810638..16653e0 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 @@ -47,10 +47,10 @@ import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.GridCacheEntryEx; import org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException; import org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate; +import org.apache.ignite.internal.processors.cache.GridCacheVersionedFuture; import org.apache.ignite.internal.processors.cache.GridCacheOperation; import org.apache.ignite.internal.processors.cache.GridCacheReturn; import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; -import org.apache.ignite.internal.processors.cache.GridCacheVersionedFuture; import org.apache.ignite.internal.processors.cache.IgniteCacheExpiryPolicy; import org.apache.ignite.internal.processors.cache.KeyCacheObject; import org.apache.ignite.internal.processors.cache.distributed.GridDistributedCacheEntry; @@ -3981,8 +3981,10 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou return hasRemoteLocks; } - /** {@inheritDoc} */ - @Override public TransactionProxy proxy() { + /** + * @return Public API proxy. + */ + public TransactionProxy proxy() { if (proxy == null) proxy = new TransactionProxyImpl(this, cctx, false); http://git-wip-us.apache.org/repos/asf/ignite/blob/2e11d9fd/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 e8e06d7..f7c5b11 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 @@ -62,6 +62,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheReturn; import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.KeyCacheObject; import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheEntry; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal; import org.apache.ignite.internal.processors.cache.store.CacheStoreManager; import org.apache.ignite.internal.processors.cache.version.GridCacheLazyPlainVersionedEntry; import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; @@ -82,9 +83,7 @@ import org.apache.ignite.internal.util.typedef.T2; import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.lang.IgniteAsyncSupport; import org.apache.ignite.lang.IgniteBiTuple; -import org.apache.ignite.lang.IgniteFuture; import org.apache.ignite.lang.IgniteUuid; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; @@ -93,7 +92,6 @@ import org.jetbrains.annotations.Nullable; import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ; import static org.apache.ignite.events.EventType.EVT_TX_COMMITTED; -import static org.apache.ignite.events.EventType.EVT_TX_PREPARED; import static org.apache.ignite.events.EventType.EVT_TX_RESUMED; import static org.apache.ignite.events.EventType.EVT_TX_ROLLED_BACK; import static org.apache.ignite.events.EventType.EVT_TX_SUSPENDED; @@ -1017,8 +1015,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement protected final boolean state(TransactionState state, boolean timedOut) { boolean valid = false; - int evtType = -1; - TransactionState prev; boolean notify = false; @@ -1032,8 +1028,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement case ACTIVE: { valid = prev == SUSPENDED; - evtType = EVT_TX_RESUMED; - break; } case PREPARING: { @@ -1044,8 +1038,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement case PREPARED: { valid = prev == PREPARING; - evtType = EVT_TX_PREPARED; - break; } case COMMITTING: { @@ -1069,8 +1061,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement valid = prev == COMMITTING; - evtType = EVT_TX_COMMITTED; - break; } @@ -1080,8 +1070,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement valid = prev == ROLLING_BACK; - evtType = EVT_TX_ROLLED_BACK; - break; } @@ -1101,8 +1089,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement case SUSPENDED: { valid = prev == ACTIVE; - evtType = EVT_TX_SUSPENDED; - break; } } @@ -1116,8 +1102,7 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement if (log.isDebugEnabled()) log.debug("Changed transaction state [prev=" + prev + ", new=" + this.state + ", tx=" + this + ']'); - if (evtType != -1) - recordStateChangedEvent(evtType); + recordStateChanged(state); notifyAll(); } @@ -1184,6 +1169,41 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement return valid; } + /** */ + private void recordStateChanged(TransactionState state){ + if (!near() || !local()) // Covers only GridNearTxLocal's state changes. + return; + + switch (state) { + case ACTIVE: { + recordStateChangedEvent(EVT_TX_RESUMED); + + break; + } + + case COMMITTED: { + recordStateChangedEvent(EVT_TX_COMMITTED); + + break; + } + + case ROLLED_BACK: { + recordStateChangedEvent(EVT_TX_ROLLED_BACK); + + break; + } + + case SUSPENDED: { + recordStateChangedEvent(EVT_TX_SUSPENDED); + + break; + } + + default: + return; + } + } + /** * @param type Event type. */ @@ -1191,7 +1211,8 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement GridEventStorageManager evtMgr = cctx.gridEvents(); if (!system() /* ignoring system tx */ && evtMgr.isRecordable(type)) - evtMgr.record(new TransactionStateChangedEvent(cctx.discovery().localNode(), null, type, proxy())); + evtMgr.record(new TransactionStateChangedEvent( + cctx.discovery().localNode(), null, type, ((GridNearTxLocal)this).proxy())); } /** {@inheritDoc} */ @@ -1237,13 +1258,6 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement this.sysInvalidate = sysInvalidate; } - /** - * @return Public API proxy. - */ - public TransactionProxy proxy() { - return new DefaultTransactionProxyImpl(this); - } - /** {@inheritDoc} */ @Nullable @Override public Map<UUID, Collection<UUID>> transactionNodes() { return txNodes; @@ -2453,139 +2467,4 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement return S.toString(TxFinishFuture.class, this, "duration", duration); } } - - /** - * Default proxy. - */ - private static class DefaultTransactionProxyImpl implements TransactionProxy{ - /** Tx. */ - private IgniteTxAdapter tx; - - /** - * @param tx Tx. - */ - public DefaultTransactionProxyImpl(IgniteTxAdapter tx) { - this.tx = tx; - } - - /** {@inheritDoc} */ - @Override public IgniteUuid xid() { - return tx.xid(); - } - - /** {@inheritDoc} */ - @Override public UUID nodeId() { - return tx.nodeId(); - } - - /** {@inheritDoc} */ - @Override public long threadId() { - return tx.threadId(); - } - - /** {@inheritDoc} */ - @Override public long startTime() { - return tx.startTime(); - } - - /** {@inheritDoc} */ - @Override public TransactionIsolation isolation() { - return tx.isolation(); - } - - /** {@inheritDoc} */ - @Override public TransactionConcurrency concurrency() { - return tx.concurrency(); - } - - /** {@inheritDoc} */ - @Override public boolean implicit() { - return tx.implicit(); - } - - /** {@inheritDoc} */ - @Override public boolean isInvalidate() { - return tx.isInvalidate(); - } - - /** {@inheritDoc} */ - @Override public TransactionState state() { - return tx.state(); - } - - /** {@inheritDoc} */ - @Override public long timeout() { - return tx.timeout(); - } - - /** {@inheritDoc} */ - @Override public long timeout(long timeout) { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public boolean setRollbackOnly() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public boolean isRollbackOnly() { - return tx.isRollbackOnly(); - } - - /** {@inheritDoc} */ - @Override public void commit() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public IgniteFuture<Void> commitAsync() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void close() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void rollback() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public IgniteFuture<Void> rollbackAsync() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void resume() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public void suspend() throws IgniteException { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Nullable @Override public String label() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public IgniteAsyncSupport withAsync() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public boolean isAsync() { - throw new UnsupportedOperationException(); - } - - /** {@inheritDoc} */ - @Override public <R> IgniteFuture<R> future() { - throw new UnsupportedOperationException(); - } - } } http://git-wip-us.apache.org/repos/asf/ignite/blob/2e11d9fd/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 dd7f14d..4dbbe85 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 @@ -534,7 +534,6 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter { sysThreadMap.put(new TxThreadKey(tx.threadId(), cacheCtx.cacheId()), tx); } - // tx.state(newState) does not cover tx start case. ((GridNearTxLocal)tx).recordStateChangedEvent(EVT_TX_STARTED); } http://git-wip-us.apache.org/repos/asf/ignite/blob/2e11d9fd/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java index 9d3e86b..d688465 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxStateChangeEventTest.java @@ -33,7 +33,6 @@ import org.apache.ignite.transactions.TransactionState; import static org.apache.ignite.events.EventType.EVTS_TX; import static org.apache.ignite.events.EventType.EVT_TX_COMMITTED; -import static org.apache.ignite.events.EventType.EVT_TX_PREPARED; import static org.apache.ignite.events.EventType.EVT_TX_RESUMED; import static org.apache.ignite.events.EventType.EVT_TX_ROLLED_BACK; import static org.apache.ignite.events.EventType.EVT_TX_STARTED; @@ -64,9 +63,6 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { /** Resume. */ private AtomicBoolean resume = new AtomicBoolean(); - /** Prepare. */ - private AtomicBoolean prepare = new AtomicBoolean(); - /** * */ @@ -125,8 +121,7 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { commit.get() && !rollback.get() && !suspend.get() && - !resume.get() && - prepare.get()); + !resume.get()); clear(); @@ -149,8 +144,7 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { commit.get() && !rollback.get() && suspend.get() && - resume.get()&& - prepare.get()); + resume.get()); clear(); @@ -165,8 +159,7 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { !commit.get() && rollback.get() && !suspend.get() && - !resume.get()&& - !prepare.get()); + !resume.get()); } /** @@ -178,7 +171,6 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { rollback.set(false); suspend.set(false); resume.set(false); - prepare.set(false); } /** @@ -187,15 +179,14 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { private void checkEvent(TransactionStateChangedEvent evt) { Transaction tx = evt.tx(); - assertTrue(tx.timeout() > 0); // Remote tx has relative timeout + assertEquals(timeout, tx.timeout()); + assertEquals(lb, tx.label()); switch (evt.type()) { case EVT_TX_STARTED: { - assertEquals(lb, tx.label()); - assertFalse(creation.get()); assertEquals(tx.state(), TransactionState.ACTIVE); - creation.set(true); + assertFalse(creation.getAndSet(true)); break; } @@ -203,7 +194,7 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { case EVT_TX_COMMITTED: { assertEquals(tx.state(), TransactionState.COMMITTED); - commit.set(true); + assertFalse(commit.getAndSet(true)); break; } @@ -211,35 +202,23 @@ public class TxStateChangeEventTest extends GridCommonAbstractTest { case EVT_TX_ROLLED_BACK: { assertEquals(tx.state(), TransactionState.ROLLED_BACK); - rollback.set(true); + assertFalse(rollback.getAndSet(true)); break; } case EVT_TX_SUSPENDED: { - assertEquals(lb, tx.label()); - assertFalse(commit.get()); assertEquals(tx.state(), TransactionState.SUSPENDED); - suspend.set(true); + assertFalse(suspend.getAndSet(true)); break; } case EVT_TX_RESUMED: { - assertEquals(lb, tx.label()); - assertFalse(commit.get()); assertEquals(tx.state(), TransactionState.ACTIVE); - resume.set(true); - - break; - } - - case EVT_TX_PREPARED: { - assertEquals(tx.state(), TransactionState.PREPARED); - - prepare.set(true); + assertFalse(resume.getAndSet(true)); break; }
