Repository: ignite Updated Branches: refs/heads/ignite-1272 9c93f8bc7 -> 8635693f7
ignite-1272: added 'depEnabled' flag to GridCacheMessage. Used in cases when 'cacheId' is not set for a GridCacheMessage for some reason Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8635693f Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8635693f Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8635693f Branch: refs/heads/ignite-1272 Commit: 8635693f701f16b19090d97cf5bd9376a9518f5c Parents: 9c93f8b Author: Denis Magda <dma...@gridgain.com> Authored: Wed Oct 7 14:18:56 2015 +0300 Committer: Denis Magda <dma...@gridgain.com> Committed: Wed Oct 7 14:18:56 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheIoManager.java | 26 ++++++++++++++++---- .../processors/cache/GridCacheMessage.java | 19 ++++++++++++++ .../cache/GridCacheSharedContext.java | 3 +++ .../distributed/GridCacheTxRecoveryRequest.java | 3 ++- .../GridCacheTxRecoveryResponse.java | 4 ++- .../GridDistributedTxRemoteAdapter.java | 5 ++++ .../distributed/dht/GridDhtTxFinishFuture.java | 9 ++++--- .../distributed/dht/GridDhtTxFinishRequest.java | 5 +++- .../dht/GridDhtTxFinishResponse.java | 6 +++-- .../distributed/dht/GridDhtTxPrepareFuture.java | 9 ++++--- .../dht/GridDhtTxPrepareRequest.java | 4 ++- .../dht/GridDhtTxPrepareResponse.java | 6 +++-- .../GridDhtPartitionsAbstractMessage.java | 5 +++- .../near/GridNearTxFinishFuture.java | 8 +++--- .../near/GridNearTxFinishRequest.java | 5 +++- .../near/GridNearTxFinishResponse.java | 4 ++- .../near/GridNearTxPrepareRequest.java | 3 ++- .../near/GridNearTxPrepareResponse.java | 7 ++++-- .../cache/transactions/IgniteInternalTx.java | 8 +++++- .../cache/transactions/IgniteTxAdapter.java | 5 ++++ .../cache/transactions/IgniteTxHandler.java | 13 ++++++---- .../transactions/IgniteTxLocalAdapter.java | 11 +++++++++ 22 files changed, 134 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 3a5c0c1..dda01af 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 @@ -404,7 +404,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter { GridDhtTxPrepareResponse res = new GridDhtTxPrepareResponse( req.version(), req.futureId(), - req.miniId()); + req.miniId(), + req.deployInfo() != null); res.error(req.classError()); @@ -533,7 +534,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter { req.version(), null, null, - null); + null, + req.deployInfo() != null); res.error(req.classError()); @@ -617,10 +619,24 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter { if (destNodeId == null || !cctx.localNodeId().equals(destNodeId)) { msg.prepareMarshal(cctx); - GridCacheContext ctx = cctx.cacheContext(msg.cacheId()); + if (depEnabled) { + boolean depEnabled0; + + if (msg.deploymentEnabled() != null) + depEnabled0 = msg.deploymentEnabled(); + else { + GridCacheContext ctx = cctx.cacheContext(msg.cacheId()); - if (depEnabled && ctx.deploymentEnabled() && msg instanceof GridCacheDeployable) - cctx.deploy().prepare((GridCacheDeployable)msg); + if (ctx == null) + throw new IgniteCheckedException("Deployment related info is missing in message: [msg=" + + msg +']'); + + depEnabled0 = ctx.deploymentEnabled(); + } + + if (depEnabled0 && msg instanceof GridCacheDeployable) + cctx.deploy().prepare((GridCacheDeployable)msg); + } } return true; http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java index 7cffd09..c91dfc7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMessage.java @@ -77,6 +77,13 @@ public abstract class GridCacheMessage implements Message { protected int cacheId; /** + * Deployment enabled flag indicates whether deployment info has to be added to this message. + * If the flag is not set use {@link GridCacheMessage#cacheId} to find out this information. + */ + @GridDirectTransient + protected Boolean depEnabled; + + /** * @return Error, if any. */ @Nullable public Throwable error() { @@ -181,6 +188,18 @@ public abstract class GridCacheMessage implements Message { } /** + * Deployment enabled flag indicates whether deployment info has to be added to this message. + * If the flag is not set use {@link #cacheId()} to find out this information. + * + * @return {@code true} or {@code false} if the deployment is enabled or disabled for all active caches involved + * in this message. Returns {@code null} if the flag hasn't been explicitly specified and {@link #cacheId()} has + * to be use to find out whether deployment is enabled for a cache or not. + */ + public Boolean deploymentEnabled() { + return depEnabled; + } + + /** * @param o Object to prepare for marshalling. * @param ctx Context. * @throws IgniteCheckedException If failed. http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java index 13e390a..277c648 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java @@ -590,6 +590,9 @@ public class GridCacheSharedContext<K, V> { if (store.isWriteBehind() != activeStore.isWriteBehind()) return "caches with different write-behind setting can't be enlisted in one transaction"; + if (activeCacheCtx.deploymentEnabled() != cacheCtx.deploymentEnabled()) + return "caches with enabled and disabled deployment modes can't be enlisted in one transaction"; + // If local and write-behind validations passed, this must be true. assert store.isWriteToStoreFromDht() == activeStore.isWriteToStoreFromDht(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java index bd6cd88..6efb27c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryRequest.java @@ -80,6 +80,7 @@ public class GridCacheTxRecoveryRequest extends GridDistributedBaseMessage { this.miniId = miniId; this.txNum = txNum; this.nearTxCheck = nearTxCheck; + this.depEnabled = tx.activeCachesDeploymentEnabled(); } /** @@ -258,4 +259,4 @@ public class GridCacheTxRecoveryRequest extends GridDistributedBaseMessage { @Override public String toString() { return S.toString(GridCacheTxRecoveryRequest.class, this, "super", super.toString()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java index 8b9550f..af80c4f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryResponse.java @@ -64,6 +64,8 @@ public class GridCacheTxRecoveryResponse extends GridDistributedBaseMessage { this.futId = futId; this.miniId = miniId; this.success = success; + + this.depEnabled = false; } /** @@ -179,4 +181,4 @@ public class GridCacheTxRecoveryResponse extends GridDistributedBaseMessage { @Override public String toString() { return S.toString(GridCacheTxRecoveryResponse.class, this, "super", super.toString()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 f969737..aa16a5f 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 @@ -192,6 +192,11 @@ public class GridDistributedTxRemoteAdapter extends IgniteTxAdapter return Collections.emptyList(); } + /** {@inheritDoc} */ + @Nullable @Override public Boolean activeCachesDeploymentEnabled() { + return null; + } + /** * @return Checks if transaction has no entries. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 79bccc2..992bd66 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 @@ -320,7 +320,8 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur tx.pendingVersions(), tx.size(), tx.subjectId(), - tx.taskNameHash()); + tx.taskNameHash(), + tx.activeCachesDeploymentEnabled()); try { cctx.io().send(n, req, tx.ioPolicy()); @@ -397,7 +398,8 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur tx.pendingVersions(), tx.size(), tx.subjectId(), - tx.taskNameHash()); + tx.taskNameHash(), + tx.activeCachesDeploymentEnabled()); req.writeVersion(tx.writeVersion() != null ? tx.writeVersion() : tx.xidVersion()); @@ -450,7 +452,8 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur tx.pendingVersions(), tx.size(), tx.subjectId(), - tx.taskNameHash()); + tx.taskNameHash(), + tx.activeCachesDeploymentEnabled()); req.writeVersion(tx.writeVersion()); http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 f859314..4f395e0 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 @@ -104,6 +104,7 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest { * @param txSize Expected transaction size. * @param subjId Subject ID. * @param taskNameHash Task name hash. + * @param depEnabled Deployment enabled flag. */ public GridDhtTxFinishRequest( UUID nearNodeId, @@ -127,7 +128,8 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest { Collection<GridCacheVersion> pendingVers, int txSize, @Nullable UUID subjId, - int taskNameHash + int taskNameHash, + boolean depEnabled ) { super( xidVer, @@ -157,6 +159,7 @@ public class GridDhtTxFinishRequest extends GridDistributedTxFinishRequest { this.sysInvalidate = sysInvalidate; this.subjId = subjId; this.taskNameHash = taskNameHash; + this.depEnabled = depEnabled; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java index ec0f234..9c78aeb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishResponse.java @@ -61,13 +61,15 @@ public class GridDhtTxFinishResponse extends GridDistributedTxFinishResponse { * @param xid Xid version. * @param futId Future ID. * @param miniId Mini future ID. + * @param depEnabled Deployment enabled. */ - public GridDhtTxFinishResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId) { + public GridDhtTxFinishResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId, boolean depEnabled) { super(xid, futId); assert miniId != null; this.miniId = miniId; + this.depEnabled = depEnabled; } /** @@ -214,4 +216,4 @@ public class GridDhtTxFinishResponse extends GridDistributedTxFinishResponse { @Override public byte fieldsCount() { return 8; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java index 81cc272..82c6152 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java @@ -666,7 +666,8 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter tx.writeVersion(), ret, prepErr, - null); + null, + tx.activeCachesDeploymentEnabled()); if (prepErr == null) { addDhtValues(res); @@ -972,7 +973,8 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter true, tx.onePhaseCommit(), tx.subjectId(), - tx.taskNameHash()); + tx.taskNameHash(), + tx.activeCachesDeploymentEnabled()); int idx = 0; @@ -1071,7 +1073,8 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter true, tx.onePhaseCommit(), tx.subjectId(), - tx.taskNameHash()); + tx.taskNameHash(), + tx.activeCachesDeploymentEnabled()); for (IgniteTxEntry entry : nearMapping.writes()) { try { http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 f0da09c..8f2f717 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 @@ -131,7 +131,8 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest { boolean last, boolean onePhaseCommit, UUID subjId, - int taskNameHash) { + int taskNameHash, + boolean depEnabled) { super(tx, null, dhtWrites, txNodes, onePhaseCommit); assert futId != null; @@ -145,6 +146,7 @@ public class GridDhtTxPrepareRequest extends GridDistributedTxPrepareRequest { this.last = last; this.subjId = subjId; this.taskNameHash = taskNameHash; + this.depEnabled = depEnabled; invalidateNearEntries = new BitSet(dhtWrites == null ? 0 : dhtWrites.size()); http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java index d903165..b0a2475 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareResponse.java @@ -84,8 +84,9 @@ public class GridDhtTxPrepareResponse extends GridDistributedTxPrepareResponse { * @param xid Xid version. * @param futId Future ID. * @param miniId Mini future ID. + * @param depEnabled Deployment enabled. */ - public GridDhtTxPrepareResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId) { + public GridDhtTxPrepareResponse(GridCacheVersion xid, IgniteUuid futId, IgniteUuid miniId, boolean depEnabled) { super(xid); assert futId != null; @@ -93,6 +94,7 @@ public class GridDhtTxPrepareResponse extends GridDistributedTxPrepareResponse { this.futId = futId; this.miniId = miniId; + this.depEnabled = depEnabled; } /** @@ -367,4 +369,4 @@ public class GridDhtTxPrepareResponse extends GridDistributedTxPrepareResponse { @Override public byte fieldsCount() { return 14; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java index cc7d439..c01eddb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsAbstractMessage.java @@ -53,6 +53,9 @@ abstract class GridDhtPartitionsAbstractMessage extends GridCacheMessage { GridDhtPartitionsAbstractMessage(GridDhtPartitionExchangeId exchId, @Nullable GridCacheVersion lastVer) { this.exchId = exchId; this.lastVer = lastVer; + + // Partitions related messages don't have objects for which deployment info has to be written. + this.depEnabled = false; } /** {@inheritDoc} */ @@ -147,4 +150,4 @@ abstract class GridDhtPartitionsAbstractMessage extends GridCacheMessage { @Override public String toString() { return S.toString(GridDhtPartitionsAbstractMessage.class, this, super.toString()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java index ab6dc3c..3237829 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java @@ -452,7 +452,8 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu null, 0, null, - 0); + 0, + tx.activeCachesDeploymentEnabled()); finishReq.checkCommitted(true); @@ -574,7 +575,8 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu null, tx.size(), tx.subjectId(), - tx.taskNameHash() + tx.taskNameHash(), + tx.activeCachesDeploymentEnabled() ); // If this is the primary node for the keys. @@ -764,4 +766,4 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu return S.toString(MiniFuture.class, this, "done", isDone(), "cancelled", isCancelled(), "err", error()); } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 c52a127..afde904 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 @@ -77,6 +77,7 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest { * @param committedVers Committed versions. * @param rolledbackVers Rolled back versions. * @param txSize Expected transaction size. + * @param depEnabled Deployment enabled. */ public GridNearTxFinishRequest( IgniteUuid futId, @@ -96,7 +97,8 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest { Collection<GridCacheVersion> rolledbackVers, int txSize, @Nullable UUID subjId, - int taskNameHash) { + int taskNameHash, + boolean depEnabled) { super( xidVer, futId, @@ -119,6 +121,7 @@ public class GridNearTxFinishRequest extends GridDistributedTxFinishRequest { this.topVer = topVer; this.subjId = subjId; this.taskNameHash = taskNameHash; + this.depEnabled = depEnabled; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java index c860baa..4ede5ce 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishResponse.java @@ -73,6 +73,8 @@ public class GridNearTxFinishResponse extends GridDistributedTxFinishResponse { this.nearThreadId = nearThreadId; this.miniId = miniId; this.err = err; + + this.depEnabled = false; } /** {@inheritDoc} */ @@ -203,4 +205,4 @@ public class GridNearTxFinishResponse extends GridDistributedTxFinishResponse { @Override public String toString() { return S.toString(GridNearTxFinishResponse.class, this, "super", super.toString()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 2b3ddff..012baa5 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 @@ -142,6 +142,7 @@ public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest { this.subjId = subjId; this.taskNameHash = taskNameHash; this.firstClientReq = firstClientReq; + this.depEnabled = tx.activeCachesDeploymentEnabled(); } /** @@ -492,4 +493,4 @@ public class GridNearTxPrepareRequest extends GridDistributedTxPrepareRequest { @Override public String toString() { return S.toString(GridNearTxPrepareRequest.class, this, super.toString()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java index 6558f97..f515303 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java @@ -115,6 +115,7 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse * @param retVal Return value. * @param err Error. * @param clientRemapVer Not {@code null} if client node should remap transaction. + * @param depEnabled Deployment enabled. */ public GridNearTxPrepareResponse( GridCacheVersion xid, @@ -124,7 +125,8 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse GridCacheVersion writeVer, GridCacheReturn retVal, Throwable err, - AffinityTopologyVersion clientRemapVer + AffinityTopologyVersion clientRemapVer, + boolean depEnabled ) { super(xid, err); @@ -138,6 +140,7 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse this.writeVer = writeVer; this.retVal = retVal; this.clientRemapVer = clientRemapVer; + this.depEnabled = depEnabled; } /** @@ -543,4 +546,4 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse return S.toString(GridNearTxPrepareResponse.class, this, "super", super.toString()); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java index 11cd3fd..95e7f99 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteInternalTx.java @@ -280,6 +280,12 @@ public interface IgniteInternalTx extends AutoCloseable, GridTimeoutObject { public Collection<Integer> activeCacheIds(); /** + * @return {@code true} or {@code false} if the deployment is enabled or disabled for all active caches involved + * in this transaction. Returns {@code null} if there are no any active caches in the transaction yet. + */ + @Nullable public Boolean activeCachesDeploymentEnabled(); + + /** * Attempts to set topology version and returns the current value. * If topology version was previously set, then it's value will * be returned (but not updated). @@ -722,4 +728,4 @@ public interface IgniteInternalTx extends AutoCloseable, GridTimeoutObject { * @param topVer New topology version. */ public void onRemap(AffinityTopologyVersion topVer); -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 88752a2..2139696 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 @@ -1757,6 +1757,11 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter } /** {@inheritDoc} */ + @Nullable @Override public Boolean activeCachesDeploymentEnabled() { + return null; + } + + /** {@inheritDoc} */ @Nullable @Override public Object addMeta(int key, Object val) { throw new IllegalStateException("Deserialized transaction can only be used as read-only."); } http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 c2cc629..950bf01 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 @@ -241,7 +241,8 @@ public class IgniteTxHandler { req.version(), null, e, - null); + null, + req.deployInfo() != null); } } }); @@ -327,7 +328,8 @@ public class IgniteTxHandler { req.version(), null, null, - top.topologyVersion()); + top.topologyVersion(), + req.deployInfo() != null); try { ctx.io().send(nearNode, res, req.policy()); @@ -787,7 +789,7 @@ public class IgniteTxHandler { GridDhtTxPrepareResponse res; try { - res = new GridDhtTxPrepareResponse(req.version(), req.futureId(), req.miniId()); + res = new GridDhtTxPrepareResponse(req.version(), req.futureId(), req.miniId(), req.deployInfo() != null); // Start near transaction first. nearTx = !F.isEmpty(req.nearWrites()) ? startNearRemoteTx(ctx.deploy().globalLoader(), nodeId, req) : null; @@ -1053,7 +1055,8 @@ public class IgniteTxHandler { */ protected void sendReply(UUID nodeId, GridDhtTxFinishRequest req, boolean committed) { if (req.replyRequired()) { - GridDhtTxFinishResponse res = new GridDhtTxFinishResponse(req.version(), req.futureId(), req.miniId()); + GridDhtTxFinishResponse res = new GridDhtTxFinishResponse(req.version(), req.futureId(), req.miniId(), + req.deployInfo() != null); if (req.checkCommitted()) { res.checkCommitted(true); @@ -1382,4 +1385,4 @@ public class IgniteTxHandler { fut.onResult(nodeId, res); } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/8635693f/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 6ca1f72..4b89ef3 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 @@ -164,6 +164,9 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter /** Implicit transaction result. */ protected GridCacheReturn implicitRes; + /** Flag indicating whether deployment is enabled for caches from this transaction or not. */ + private Boolean depEnabled; + /** * Empty constructor required for {@link Externalizable}. */ @@ -276,6 +279,11 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter } /** {@inheritDoc} */ + @Nullable @Override public Boolean activeCachesDeploymentEnabled() { + return depEnabled; + } + + /** {@inheritDoc} */ @Override public boolean isStarted() { return txMap != null; } @@ -3219,6 +3227,9 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter } else activeCacheIds.add(cacheId); + + if (depEnabled == null) + depEnabled = cacheCtx.deploymentEnabled(); } }