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 2015/10/27 11:55:07 UTC
[4/6] ignite git commit: ignite-1272: support of custom class loaders
and conditional deployment info for portable marshaller and portable caches
ignite-1272: support of custom class loaders and conditional deployment info for portable marshaller and portable caches
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/df931bd0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/df931bd0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/df931bd0
Branch: refs/heads/ignite-1607
Commit: df931bd09d0a18af839c8d122853111488c1a294
Parents: 18fb46e
Author: Denis Magda <dm...@gridgain.com>
Authored: Tue Oct 27 12:32:02 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Tue Oct 27 12:32:08 2015 +0300
----------------------------------------------------------------------
.../internal/GridEventConsumeHandler.java | 19 +-
.../deployment/GridDeploymentLocalStore.java | 8 +-
.../GridDeploymentPerLoaderStore.java | 8 +-
.../GridDeploymentPerVersionStore.java | 8 +-
.../internal/portable/PortableContext.java | 91 +++++---
.../portable/api/PortableMarshaller.java | 5 +
.../processors/cache/CacheObjectContext.java | 17 +-
.../processors/cache/GridCacheContext.java | 10 +-
.../cache/GridCacheEvictionManager.java | 5 +-
.../cache/GridCacheEvictionRequest.java | 18 +-
.../cache/GridCacheEvictionResponse.java | 7 +-
.../processors/cache/GridCacheIoManager.java | 34 +--
.../processors/cache/GridCacheMessage.java | 72 +++++--
.../cache/GridCacheSharedContext.java | 3 +
.../processors/cache/GridCacheUtils.java | 20 +-
.../distributed/GridCacheTtlUpdateRequest.java | 7 +-
.../distributed/GridCacheTxRecoveryFuture.java | 9 +-
.../distributed/GridCacheTxRecoveryRequest.java | 8 +-
.../GridCacheTxRecoveryResponse.java | 10 +-
.../distributed/GridDistributedBaseMessage.java | 16 +-
.../distributed/GridDistributedLockRequest.java | 8 +-
.../GridDistributedLockResponse.java | 20 +-
.../GridDistributedTxFinishRequest.java | 6 +-
.../GridDistributedTxFinishResponse.java | 7 +-
.../GridDistributedTxPrepareRequest.java | 13 +-
.../GridDistributedTxPrepareResponse.java | 12 +-
.../GridDistributedTxRemoteAdapter.java | 5 +
.../GridDistributedUnlockRequest.java | 7 +-
.../dht/GridDhtAffinityAssignmentRequest.java | 7 +-
.../dht/GridDhtAffinityAssignmentResponse.java | 7 +-
.../distributed/dht/GridDhtCacheAdapter.java | 3 +-
.../distributed/dht/GridDhtLockFuture.java | 5 +-
.../distributed/dht/GridDhtLockRequest.java | 7 +-
.../distributed/dht/GridDhtLockResponse.java | 14 +-
.../dht/GridDhtTransactionalCacheAdapter.java | 22 +-
.../distributed/dht/GridDhtTxFinishFuture.java | 9 +-
.../distributed/dht/GridDhtTxFinishRequest.java | 7 +-
.../dht/GridDhtTxFinishResponse.java | 2 +-
.../distributed/dht/GridDhtTxPrepareFuture.java | 9 +-
.../dht/GridDhtTxPrepareRequest.java | 28 ++-
.../dht/GridDhtTxPrepareResponse.java | 13 +-
.../distributed/dht/GridDhtUnlockRequest.java | 7 +-
.../dht/GridPartitionedGetFuture.java | 3 +-
.../dht/atomic/GridDhtAtomicCache.java | 12 +-
.../GridDhtAtomicDeferredUpdateResponse.java | 12 +-
.../dht/atomic/GridDhtAtomicUpdateFuture.java | 6 +-
.../dht/atomic/GridDhtAtomicUpdateRequest.java | 25 ++-
.../dht/atomic/GridDhtAtomicUpdateResponse.java | 11 +-
.../dht/atomic/GridNearAtomicUpdateFuture.java | 12 +-
.../dht/atomic/GridNearAtomicUpdateRequest.java | 33 ++-
.../atomic/GridNearAtomicUpdateResponse.java | 11 +-
.../dht/colocated/GridDhtColocatedCache.java | 8 +-
.../colocated/GridDhtColocatedLockFuture.java | 3 +-
.../dht/preloader/GridDhtForceKeysFuture.java | 5 +-
.../dht/preloader/GridDhtForceKeysRequest.java | 35 ++-
.../dht/preloader/GridDhtForceKeysResponse.java | 11 +-
.../GridDhtPartitionDemandMessage.java | 5 +
.../GridDhtPartitionSupplyMessage.java | 9 +-
.../preloader/GridDhtPartitionSupplyPool.java | 10 +-
.../GridDhtPartitionsAbstractMessage.java | 7 +-
.../dht/preloader/GridDhtPreloader.java | 3 +-
.../distributed/near/GridNearGetFuture.java | 5 +-
.../distributed/near/GridNearGetRequest.java | 12 +-
.../distributed/near/GridNearGetResponse.java | 12 +-
.../distributed/near/GridNearLockFuture.java | 3 +-
.../distributed/near/GridNearLockRequest.java | 8 +-
.../distributed/near/GridNearLockResponse.java | 8 +-
.../near/GridNearOptimisticTxPrepareFuture.java | 3 +-
.../GridNearPessimisticTxPrepareFuture.java | 3 +-
.../near/GridNearTransactionalCache.java | 8 +-
.../near/GridNearTxFinishFuture.java | 8 +-
.../near/GridNearTxFinishRequest.java | 7 +-
.../near/GridNearTxFinishResponse.java | 2 +-
.../near/GridNearTxPrepareRequest.java | 8 +-
.../near/GridNearTxPrepareResponse.java | 8 +-
.../distributed/near/GridNearUnlockRequest.java | 7 +-
.../portable/CacheObjectPortableContext.java | 6 +-
.../CacheObjectPortableProcessorImpl.java | 5 +-
.../query/GridCacheDistributedQueryFuture.java | 5 +-
.../query/GridCacheDistributedQueryManager.java | 25 ++-
.../cache/query/GridCacheQueryRequest.java | 46 ++--
.../cache/query/GridCacheQueryResponse.java | 29 ++-
.../continuous/CacheContinuousQueryHandler.java | 8 +-
.../cache/transactions/IgniteInternalTx.java | 8 +-
.../cache/transactions/IgniteTxAdapter.java | 5 +
.../cache/transactions/IgniteTxEntry.java | 8 +-
.../cache/transactions/IgniteTxHandler.java | 16 +-
.../transactions/IgniteTxLocalAdapter.java | 11 +
.../IgniteCacheObjectProcessorImpl.java | 7 +-
.../ignite/marshaller/AbstractMarshaller.java | 12 +-
.../ignite/marshaller/jdk/JdkMarshaller.java | 7 +-
.../optimized/OptimizedMarshaller.java | 4 +-
...eAtomicEntryProcessorDeploymentSelfTest.java | 211 +++++++++++++++++++
.../GridCacheConditionalDeploymentSelfTest.java | 190 +++++++++++++++++
.../GridCacheDeploymentOffHeapSelfTest.java | 17 +-
.../cache/GridCacheDeploymentSelfTest.java | 26 +--
...ctionalEntryProcessorDeploymentSelfTest.java | 31 +++
.../communication/GridCacheMessageSelfTest.java | 17 +-
.../ignite/testsuites/IgniteBasicTestSuite.java | 4 +-
.../ignite/testsuites/IgniteCacheTestSuite.java | 18 +-
.../testsuites/IgniteCacheTestSuite3.java | 8 +-
.../testsuites/IgniteP2PSelfTestSuite.java | 16 +-
.../p2p/CacheDeploymentEntryProcessor.java | 35 +++
.../CacheDeploymentPortableEntryProcessor.java | 35 +++
104 files changed, 1332 insertions(+), 394 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
index 599d301..b4ce4ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java
@@ -35,6 +35,7 @@ import org.apache.ignite.internal.managers.deployment.GridDeploymentInfo;
import org.apache.ignite.internal.managers.deployment.GridDeploymentInfoBean;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
+import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheDeployable;
import org.apache.ignite.internal.processors.cache.GridCacheDeploymentManager;
import org.apache.ignite.internal.processors.continuous.GridContinuousHandler;
@@ -197,16 +198,18 @@ class GridEventConsumeHandler implements GridContinuousHandler {
if (node == null)
continue;
- if (ctx.config().isPeerClassLoadingEnabled()
- && ctx.discovery().cacheNode(node, cacheName)) {
- wrapper.p2pMarshal(ctx.config().getMarshaller());
+ if (ctx.config().isPeerClassLoadingEnabled()) {
+ GridCacheContext cctx =
+ ctx.cache().internalCache(cacheName).context();
- wrapper.cacheName = cacheName;
+ if (cctx.deploymentEnabled() &&
+ ctx.discovery().cacheNode(node, cacheName)) {
+ wrapper.p2pMarshal(ctx.config().getMarshaller());
- GridCacheDeploymentManager depMgr = ctx.cache()
- .internalCache(cacheName).context().deploy();
+ wrapper.cacheName = cacheName;
- depMgr.prepare(wrapper);
+ cctx.deploy().prepare(wrapper);
+ }
}
}
@@ -519,4 +522,4 @@ class GridEventConsumeHandler implements GridContinuousHandler {
evt = (Event)in.readObject();
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
index 420eea8..d095efb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java
@@ -39,7 +39,7 @@ import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.marshaller.AbstractMarshaller;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.deployment.DeploymentListener;
import org.apache.ignite.spi.deployment.DeploymentResource;
@@ -541,8 +541,8 @@ class GridDeploymentLocalStore extends GridDeploymentStoreAdapter {
ctx.resource().onUndeployed(dep);
// Clear optimized marshaller's cache.
- if (ctx.config().getMarshaller() instanceof OptimizedMarshaller)
- ((OptimizedMarshaller)ctx.config().getMarshaller()).onUndeploy(ldr);
+ if (ctx.config().getMarshaller() instanceof AbstractMarshaller)
+ ((AbstractMarshaller)ctx.config().getMarshaller()).onUndeploy(ldr);
clearSerializationCaches();
@@ -572,4 +572,4 @@ class GridDeploymentLocalStore extends GridDeploymentStoreAdapter {
undeploy(ldr);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
index 6ca74eb..4ba308c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerLoaderStore.java
@@ -39,7 +39,7 @@ import org.apache.ignite.internal.util.GridClassLoaderCache;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.marshaller.AbstractMarshaller;
import org.apache.ignite.spi.deployment.DeploymentSpi;
import static org.apache.ignite.events.EventType.EVT_CLASS_DEPLOYED;
@@ -511,8 +511,8 @@ public class GridDeploymentPerLoaderStore extends GridDeploymentStoreAdapter {
ctx.cache().onUndeployed(ldr);
// Clear optimized marshaller's cache.
- if (ctx.config().getMarshaller() instanceof OptimizedMarshaller)
- ((OptimizedMarshaller)ctx.config().getMarshaller()).onUndeploy(ldr);
+ if (ctx.config().getMarshaller() instanceof AbstractMarshaller)
+ ((AbstractMarshaller)ctx.config().getMarshaller()).onUndeploy(ldr);
clearSerializationCaches();
@@ -527,4 +527,4 @@ public class GridDeploymentPerLoaderStore extends GridDeploymentStoreAdapter {
return S.toString(IsolatedDeployment.class, this, super.toString());
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
index 6f9e968..fabbcb2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
@@ -46,7 +46,7 @@ import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
+import org.apache.ignite.marshaller.AbstractMarshaller;
import org.apache.ignite.spi.deployment.DeploymentSpi;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
@@ -1281,8 +1281,8 @@ public class GridDeploymentPerVersionStore extends GridDeploymentStoreAdapter {
ctx.cache().onUndeployed(ldr);
// Clear optimized marshaller's cache.
- if (ctx.config().getMarshaller() instanceof OptimizedMarshaller)
- ((OptimizedMarshaller)ctx.config().getMarshaller()).onUndeploy(ldr);
+ if (ctx.config().getMarshaller() instanceof AbstractMarshaller)
+ ((AbstractMarshaller)ctx.config().getMarshaller()).onUndeploy(ldr);
clearSerializationCaches();
@@ -1297,4 +1297,4 @@ public class GridDeploymentPerVersionStore extends GridDeploymentStoreAdapter {
return S.toString(SharedDeployment.class, this, "super", super.toString());
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
index e9cccf0..acd6a56 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
@@ -52,24 +52,25 @@ import java.util.jar.JarFile;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.IgnitionEx;
+import org.apache.ignite.internal.portable.api.PortableException;
+import org.apache.ignite.internal.portable.api.PortableIdMapper;
+import org.apache.ignite.internal.portable.api.PortableInvalidClassException;
+import org.apache.ignite.internal.portable.api.PortableMarshaller;
+import org.apache.ignite.internal.portable.api.PortableMetadata;
+import org.apache.ignite.internal.portable.api.PortableSerializer;
+import org.apache.ignite.internal.portable.api.PortableTypeConfiguration;
import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl;
+import org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetConfiguration;
+import org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetPortableConfiguration;
+import org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetPortableTypeConfiguration;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.lang.GridMapEntry;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.marshaller.MarshallerContext;
import org.apache.ignite.marshaller.optimized.OptimizedMarshaller;
-import org.apache.ignite.internal.portable.api.PortableMarshaller;
-import org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetConfiguration;
-import org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetPortableConfiguration;
-import org.apache.ignite.internal.processors.platform.dotnet.PlatformDotNetPortableTypeConfiguration;
-import org.apache.ignite.internal.portable.api.PortableException;
-import org.apache.ignite.internal.portable.api.PortableIdMapper;
-import org.apache.ignite.internal.portable.api.PortableInvalidClassException;
-import org.apache.ignite.internal.portable.api.PortableMetadata;
-import org.apache.ignite.internal.portable.api.PortableSerializer;
-import org.apache.ignite.internal.portable.api.PortableTypeConfiguration;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
@@ -81,6 +82,9 @@ public class PortableContext implements Externalizable {
private static final long serialVersionUID = 0L;
/** */
+ private static final ClassLoader dfltLdr = U.gridClassLoader();
+
+ /** */
static final PortableIdMapper DFLT_ID_MAPPER = new IdMapperWrapper(null);
/** */
@@ -108,8 +112,8 @@ public class PortableContext implements Externalizable {
/** */
private final ConcurrentMap<Class<?>, PortableClassDescriptor> descByCls = new ConcurrentHashMap8<>();
- /** */
- private final ConcurrentMap<Integer, PortableClassDescriptor> userTypes = new ConcurrentHashMap8<>(0);
+ /** Holds classes loaded by default class loader only. */
+ private final ConcurrentMap<Integer, PortableClassDescriptor> userTypes = new ConcurrentHashMap8<>();
/** */
private final Map<Integer, PortableClassDescriptor> predefinedTypes = new HashMap<>();
@@ -124,7 +128,7 @@ public class PortableContext implements Externalizable {
private final Map<Class<? extends Map>, Byte> mapTypes = new HashMap<>();
/** */
- private final Map<Integer, PortableIdMapper> mappers = new ConcurrentHashMap8<>(0);
+ private final ConcurrentMap<Integer, PortableIdMapper> mappers = new ConcurrentHashMap8<>(0);
/** */
private final Map<String, PortableIdMapper> typeMappers = new ConcurrentHashMap8<>(0);
@@ -454,16 +458,18 @@ public class PortableContext implements Externalizable {
public PortableClassDescriptor descriptorForTypeId(boolean userType, int typeId, ClassLoader ldr) {
assert typeId != GridPortableMarshaller.UNREGISTERED_TYPE_ID;
- //TODO: IGNITE-1358 (uncomment when fixed)
- //PortableClassDescriptor desc = userType ? userTypes.get(typeId) : predefinedTypes.get(typeId);
-
- // As a workaround for IGNITE-1358 we always check the predefined map before.
+ //TODO: As a workaround for IGNITE-1358 we always check the predefined map before without checking 'userType'
PortableClassDescriptor desc = predefinedTypes.get(typeId);
if (desc != null)
return desc;
- if (userType) {
+ if (ldr == null)
+ ldr = dfltLdr;
+
+ // If the type hasn't been loaded by default class loader then we mustn't return the descriptor from here
+ // giving a chance to a custom class loader to reload type's class.
+ if (userType && ldr.equals(dfltLdr)) {
desc = userTypes.get(typeId);
if (desc != null)
@@ -478,9 +484,17 @@ public class PortableContext implements Externalizable {
desc = descByCls.get(cls);
}
catch (ClassNotFoundException e) {
+ // Class might have been loaded by default class loader.
+ if (userType && !ldr.equals(dfltLdr) && (desc = descriptorForTypeId(true, typeId, dfltLdr)) != null)
+ return desc;
+
throw new PortableInvalidClassException(e);
}
catch (IgniteCheckedException e) {
+ // Class might have been loaded by default class loader.
+ if (userType && !ldr.equals(dfltLdr) && (desc = descriptorForTypeId(true, typeId, dfltLdr)) != null)
+ return desc;
+
throw new PortableException("Failed resolve class for ID: " + typeId, e);
}
@@ -541,7 +555,7 @@ public class PortableContext implements Externalizable {
String typeName = typeName(cls.getName());
- PortableIdMapper idMapper = idMapper(typeName);
+ PortableIdMapper idMapper = userTypeIdMapper(typeName);
int typeId = idMapper.typeId(typeName);
@@ -566,10 +580,15 @@ public class PortableContext implements Externalizable {
false /* predefined */
);
- // perform put() instead of putIfAbsent() because "registered" flag may have been changed.
- userTypes.put(typeId, desc);
+ // perform put() instead of putIfAbsent() because "registered" flag might have been changed or class loader
+ // might have reloaded described class.
+ if (IgniteUtils.detectClassLoader(cls).equals(dfltLdr))
+ userTypes.put(typeId, desc);
+
descByCls.put(cls, desc);
+ mappers.putIfAbsent(typeId, idMapper);
+
// TODO uncomment for https://issues.apache.org/jira/browse/IGNITE-1377
// if (registerMetadata && isMetaDataEnabled(typeId))
// metaHnd.addMeta(typeId, new PortableMetaDataImpl(typeName, desc.fieldsMeta(), null));
@@ -619,7 +638,7 @@ public class PortableContext implements Externalizable {
if (marshCtx.isSystemType(typeName))
return typeName.hashCode();
- return idMapper(shortTypeName).typeId(shortTypeName);
+ return userTypeIdMapper(shortTypeName).typeId(shortTypeName);
}
/**
@@ -628,20 +647,20 @@ public class PortableContext implements Externalizable {
* @return Field ID.
*/
public int fieldId(int typeId, String fieldName) {
- return idMapper(typeId).fieldId(typeId, fieldName);
+ return userTypeIdMapper(typeId).fieldId(typeId, fieldName);
}
/**
* @param typeId Type ID.
* @return Instance of ID mapper.
*/
- public PortableIdMapper idMapper(int typeId) {
+ public PortableIdMapper userTypeIdMapper(int typeId) {
PortableIdMapper idMapper = mappers.get(typeId);
if (idMapper != null)
return idMapper;
- if (userTypes.containsKey(typeId) || predefinedTypes.containsKey(typeId))
+ if (predefinedTypes.containsKey(typeId))
return DFLT_ID_MAPPER;
return BASIC_CLS_ID_MAPPER;
@@ -651,7 +670,7 @@ public class PortableContext implements Externalizable {
* @param typeName Type name.
* @return Instance of ID mapper.
*/
- private PortableIdMapper idMapper(String typeName) {
+ private PortableIdMapper userTypeIdMapper(String typeName) {
PortableIdMapper idMapper = typeMappers.get(typeName);
return idMapper != null ? idMapper : DFLT_ID_MAPPER;
@@ -784,7 +803,9 @@ public class PortableContext implements Externalizable {
fieldsMeta = desc.fieldsMeta();
- userTypes.put(id, desc);
+ if (IgniteUtils.detectClassLoader(cls).equals(dfltLdr))
+ userTypes.put(id, desc);
+
descByCls.put(cls, desc);
}
@@ -934,6 +955,22 @@ public class PortableContext implements Externalizable {
}
/**
+ * Undeployment callback invoked when class loader is being undeployed.
+ *
+ * Some marshallers may want to clean their internal state that uses the undeployed class loader somehow.
+ *
+ * @param ldr Class loader being undeployed.
+ */
+ public void onUndeploy(ClassLoader ldr) {
+ for (Class<?> cls : descByCls.keySet()) {
+ if (ldr.equals(cls.getClassLoader()))
+ descByCls.remove(cls);
+ }
+
+ U.clearClassCache(ldr);
+ }
+
+ /**
*/
private static class IdMapperWrapper implements PortableIdMapper {
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/portable/api/PortableMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/api/PortableMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/api/PortableMarshaller.java
index 3dfbdf0..24a39a7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/api/PortableMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/api/PortableMarshaller.java
@@ -349,4 +349,9 @@ public class PortableMarshaller extends AbstractMarshaller {
throw new PortableException("Failed to unmarshal the object from InputStream", e);
}
}
+
+ /** {@inheritDoc} */
+ @Override public void onUndeploy(ClassLoader ldr) {
+ impl.context().onUndeploy(ldr);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
index 7d7cbec..44b91a5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectContext.java
@@ -44,21 +44,27 @@ public class CacheObjectContext {
/** */
private boolean p2pEnabled;
+ /** */
+ private boolean addDepInfo;
+
/**
* @param kernalCtx Kernal context.
* @param dfltAffMapper Default affinity mapper.
* @param cpyOnGet Copy on get flag.
* @param storeVal {@code True} if should store unmarshalled value in cache.
+ * @param addDepInfo {@code true} if deployment info should be associated with the objects of this cache.
*/
public CacheObjectContext(GridKernalContext kernalCtx,
AffinityKeyMapper dfltAffMapper,
boolean cpyOnGet,
- boolean storeVal) {
+ boolean storeVal,
+ boolean addDepInfo) {
this.kernalCtx = kernalCtx;
this.p2pEnabled = kernalCtx.config().isPeerClassLoadingEnabled();
this.dfltAffMapper = dfltAffMapper;
this.cpyOnGet = cpyOnGet;
this.storeVal = storeVal;
+ this.addDepInfo = addDepInfo;
proc = kernalCtx.cacheObjects();
}
@@ -71,6 +77,13 @@ public class CacheObjectContext {
}
/**
+ * @return {@code True} if deployment info should be associated with the objects of this cache.
+ */
+ public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
+ /**
* @return Copy on get flag.
*/
public boolean copyOnGet() {
@@ -126,4 +139,4 @@ public class CacheObjectContext {
public Collection<Object> unwrapPortablesIfNeeded(Collection<Object> col, boolean keepPortable) {
return col;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 3a1cee6..1f4852c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -236,6 +236,9 @@ public class GridCacheContext<K, V> implements Externalizable {
/** Updates allowed flag. */
private boolean updatesAllowed;
+ /** Deployment enabled flag for this specific cache */
+ private boolean depEnabled;
+
/**
* Empty constructor required for {@link Externalizable}.
*/
@@ -312,6 +315,7 @@ public class GridCacheContext<K, V> implements Externalizable {
this.cacheType = cacheType;
this.affNode = affNode;
this.updatesAllowed = updatesAllowed;
+ this.depEnabled = ctx.deploy().enabled() && !cacheObjects().isPortableEnabled(cacheCfg);
/*
* Managers in starting order!
@@ -965,7 +969,7 @@ public class GridCacheContext<K, V> implements Externalizable {
* @return Cache transaction manager.
*/
public IgniteTxManager tm() {
- return sharedCtx.tm();
+ return sharedCtx.tm();
}
/**
@@ -1408,10 +1412,10 @@ public class GridCacheContext<K, V> implements Externalizable {
}
/**
- * @return {@code True} if deployment enabled.
+ * @return {@code True} if deployment is enabled.
*/
public boolean deploymentEnabled() {
- return ctx.deploy().enabled();
+ return depEnabled;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
index 1c34c76..9a89fee 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
@@ -1742,7 +1742,8 @@ public class GridCacheEvictionManager extends GridCacheManagerAdapter {
// There are remote participants.
for (ClusterNode node : nodes) {
GridCacheEvictionRequest req = F.addIfAbsent(reqMap, node.id(),
- new GridCacheEvictionRequest(cctx.cacheId(), id, evictInfos.size(), topVer));
+ new GridCacheEvictionRequest(cctx.cacheId(), id, evictInfos.size(), topVer,
+ cctx.deploymentEnabled()));
assert req != null;
@@ -2106,4 +2107,4 @@ public class GridCacheEvictionManager extends GridCacheManagerAdapter {
return S.toString(EvictionFuture.class, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
index fa0359c..09652a9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionRequest.java
@@ -62,14 +62,17 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
* @param futId Future id.
* @param size Size.
* @param topVer Topology version.
+ * @param addDepInfo Deployment info flag.
*/
- GridCacheEvictionRequest(int cacheId, long futId, int size, @NotNull AffinityTopologyVersion topVer) {
+ GridCacheEvictionRequest(int cacheId, long futId, int size, @NotNull AffinityTopologyVersion topVer,
+ boolean addDepInfo) {
assert futId > 0;
assert size > 0;
assert topVer.topologyVersion() > 0;
this.cacheId = cacheId;
this.futId = futId;
+ this.addDepInfo = addDepInfo;
entries = new ArrayList<>(size);
@@ -82,15 +85,13 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
super.prepareMarshal(ctx);
if (entries != null) {
- boolean depEnabled = ctx.deploymentEnabled();
-
GridCacheContext cctx = ctx.cacheContext(cacheId);
for (CacheEvictionEntry e : entries) {
e.prepareMarshal(cctx);
- if (depEnabled)
- prepareObject(e.key().value(cctx.cacheObjectContext(), false), ctx);
+ if (addDepInfo)
+ prepareObject(e.key().value(cctx.cacheObjectContext(), false), cctx);
}
}
}
@@ -107,6 +108,11 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
}
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Future id.
*/
@@ -239,4 +245,4 @@ public class GridCacheEvictionRequest extends GridCacheMessage implements GridCa
@Override public String toString() {
return S.toString(GridCacheEvictionRequest.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
index aa3911b..ebaee6a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionResponse.java
@@ -88,6 +88,11 @@ public class GridCacheEvictionResponse extends GridCacheMessage {
finishUnmarshalCacheObjects(rejectedKeys, ctx.cacheContext(cacheId), ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
/**
* @return Future ID.
*/
@@ -217,4 +222,4 @@ public class GridCacheEvictionResponse extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridCacheEvictionResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/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 476a96c..ec34f41 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
@@ -284,6 +284,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
/**
* Sends response on failed message.
+ *
* @param nodeId node id.
* @param res response.
* @param cctx shared context.
@@ -302,6 +303,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
/**
* Processes failed messages.
+ *
* @param nodeId niode id.
* @param msg message.
* @throws IgniteCheckedException If failed.
@@ -332,7 +334,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
req.version(),
req.futureId(),
req.miniId(),
- 0);
+ 0,
+ ctx.deploymentEnabled());
sendResponseOnFailedMessage(nodeId, res, cctx, ctx.ioPolicy());
}
@@ -345,7 +348,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());
@@ -359,7 +363,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
GridDhtAtomicUpdateResponse res = new GridDhtAtomicUpdateResponse(
ctx.cacheId(),
- req.futureVersion());
+ req.futureVersion(),
+ ctx.deploymentEnabled());
res.onError(req.classError());
@@ -374,7 +379,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
GridNearAtomicUpdateResponse res = new GridNearAtomicUpdateResponse(
ctx.cacheId(),
nodeId,
- req.futureVersion());
+ req.futureVersion(),
+ ctx.deploymentEnabled());
res.error(req.classError());
@@ -389,7 +395,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
GridDhtForceKeysResponse res = new GridDhtForceKeysResponse(
ctx.cacheId(),
req.futureId(),
- req.miniId()
+ req.miniId(),
+ ctx.deploymentEnabled()
);
res.error(req.classError());
@@ -414,7 +421,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
ctx.cacheId(),
req.futureId(),
req.miniId(),
- req.version());
+ req.version(),
+ req.deployInfo() != null);
res.error(req.classError());
@@ -456,7 +464,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
false,
0,
req.classError(),
- null);
+ null,
+ ctx.deploymentEnabled());
sendResponseOnFailedMessage(nodeId, res, cctx, ctx.ioPolicy());
}
@@ -474,7 +483,8 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
req.version(),
null,
null,
- null);
+ null,
+ req.deployInfo() != null);
res.error(req.classError());
@@ -540,7 +550,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
if (destNodeId == null || !cctx.localNodeId().equals(destNodeId)) {
msg.prepareMarshal(cctx);
- if (depEnabled && msg instanceof GridCacheDeployable)
+ if (msg instanceof GridCacheDeployable && msg.addDeploymentInfo())
cctx.deploy().prepare((GridCacheDeployable)msg);
}
@@ -766,8 +776,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
}
/**
- * @return ID that auto-grows based on local counter and counters received
- * from other nodes.
+ * @return ID that auto-grows based on local counter and counters received from other nodes.
*/
public long nextIoId() {
return idGen.incrementAndGet();
@@ -784,8 +793,7 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter {
public void sendNoRetry(ClusterNode node,
GridCacheMessage msg,
byte plc)
- throws IgniteCheckedException
- {
+ throws IgniteCheckedException {
assert node != null;
assert msg != null;
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/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 4b700e0..bdd2118 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
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
+import javax.cache.processor.EntryProcessor;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.GridDirectTransient;
import org.apache.ignite.internal.managers.deployment.GridDeployment;
@@ -30,6 +31,7 @@ import org.apache.ignite.internal.managers.deployment.GridDeploymentInfoBean;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
+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;
@@ -67,6 +69,14 @@ public abstract class GridCacheMessage implements Message {
/** */
@GridDirectTransient
+ protected boolean addDepInfo;
+
+ /** Force addition of deployment info regardless of {@code addDepInfo} flag value.*/
+ @GridDirectTransient
+ protected boolean forceAddDepInfo;
+
+ /** */
+ @GridDirectTransient
private IgniteCheckedException err;
/** */
@@ -174,11 +184,20 @@ public abstract class GridCacheMessage implements Message {
}
/**
+ * Deployment enabled flag indicates whether deployment info has to be added to this message.
+ *
+ * @return {@code true} or if deployment info must be added to the the message, {@code false} otherwise.
+ */
+ public abstract boolean addDeploymentInfo();
+
+ /**
* @param o Object to prepare for marshalling.
* @param ctx Context.
* @throws IgniteCheckedException If failed.
*/
- protected final void prepareObject(@Nullable Object o, GridCacheSharedContext ctx) throws IgniteCheckedException {
+ protected final void prepareObject(@Nullable Object o, GridCacheContext ctx) throws IgniteCheckedException {
+ assert addDepInfo || forceAddDepInfo;
+
if (!skipPrepare && o != null) {
GridDeploymentInfo d = ctx.deploy().globalDeploymentInfo();
@@ -259,16 +278,16 @@ public abstract class GridCacheMessage implements Message {
if (info != null) {
info.marshal(ctx);
- if (ctx.deploymentEnabled()) {
+ if (addDepInfo) {
if (info.key() != null)
- prepareObject(info.key().value(ctx.cacheObjectContext(), false), ctx.shared());
+ prepareObject(info.key().value(ctx.cacheObjectContext(), false), ctx);
CacheObject val = info.value();
if (val != null) {
val.finishUnmarshal(ctx.cacheObjectContext(), ctx.deploy().globalLoader());
- prepareObject(CU.value(val, ctx, false), ctx.shared());
+ prepareObject(CU.value(val, ctx, false), ctx);
}
}
}
@@ -332,18 +351,31 @@ public abstract class GridCacheMessage implements Message {
if (txEntries != null) {
boolean transferExpiry = transferExpiryPolicy();
+ boolean p2pEnabled = ctx.deploymentEnabled();
for (IgniteTxEntry e : txEntries) {
e.marshal(ctx, transferExpiry);
- if (ctx.deploymentEnabled()) {
- CacheObjectContext cctx =ctx.cacheContext(e.cacheId()).cacheObjectContext();
+ GridCacheContext cctx = e.context();
+ if (addDepInfo) {
if (e.key() != null)
- prepareObject(e.key().value(cctx, false), ctx);
+ prepareObject(e.key().value(cctx.cacheObjectContext(), false), cctx);
if (e.value() != null)
- prepareObject(e.value().value(cctx, false), ctx);
+ prepareObject(e.value().value(cctx.cacheObjectContext(), false), cctx);
+
+ if (e.entryProcessors() != null) {
+ for (T2<EntryProcessor<Object, Object, Object>, Object[]> entProc : e.entryProcessors())
+ prepareObject(entProc.get1(), cctx);
+ }
+ }
+ else if (p2pEnabled && e.entryProcessors() != null) {
+ if (!forceAddDepInfo)
+ forceAddDepInfo = true;
+
+ for (T2<EntryProcessor<Object, Object, Object>, Object[]> entProc : e.entryProcessors())
+ prepareObject(entProc.get1(), cctx);
}
}
}
@@ -381,8 +413,8 @@ public abstract class GridCacheMessage implements Message {
* @return Marshalled collection.
* @throws IgniteCheckedException If failed.
*/
- @Nullable protected final byte[][] marshalInvokeArguments(@Nullable Object[] args,
- GridCacheSharedContext ctx) throws IgniteCheckedException {
+ @Nullable protected final byte[][] marshalInvokeArguments(@Nullable Object[] args, GridCacheContext ctx)
+ throws IgniteCheckedException {
assert ctx != null;
if (args == null || args.length == 0)
@@ -393,7 +425,7 @@ public abstract class GridCacheMessage implements Message {
for (int i = 0; i < args.length; i++) {
Object arg = args[i];
- if (ctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(arg, ctx);
argsBytes[i] = arg == null ? null : CU.marshal(ctx, arg);
@@ -436,7 +468,7 @@ public abstract class GridCacheMessage implements Message {
* @throws IgniteCheckedException If failed.
*/
@Nullable protected List<byte[]> marshalCollection(@Nullable Collection<?> col,
- GridCacheSharedContext ctx) throws IgniteCheckedException {
+ GridCacheContext ctx) throws IgniteCheckedException {
assert ctx != null;
if (col == null)
@@ -445,7 +477,7 @@ public abstract class GridCacheMessage implements Message {
List<byte[]> byteCol = new ArrayList<>(col.size());
for (Object o : col) {
- if (ctx.deploymentEnabled())
+ if (addDepInfo)
prepareObject(o, ctx);
byteCol.add(o == null ? null : CU.marshal(ctx, o));
@@ -467,16 +499,14 @@ public abstract class GridCacheMessage implements Message {
int size = col.size();
- boolean depEnabled = ctx.deploymentEnabled();
-
for (int i = 0 ; i < size; i++) {
CacheObject obj = col.get(i);
if (obj != null) {
obj.prepareMarshal(ctx.cacheObjectContext());
- if (depEnabled)
- prepareObject(obj.value(ctx.cacheObjectContext(), false), ctx.shared());
+ if (addDepInfo)
+ prepareObject(obj.value(ctx.cacheObjectContext(), false), ctx);
}
}
}
@@ -491,14 +521,12 @@ public abstract class GridCacheMessage implements Message {
if (col == null)
return;
- boolean depEnabled = ctx.deploymentEnabled();
-
for (CacheObject obj : col) {
if (obj != null) {
obj.prepareMarshal(ctx.cacheObjectContext());
- if (depEnabled)
- prepareObject(obj.value(ctx.cacheObjectContext(), false), ctx.shared());
+ if (addDepInfo)
+ prepareObject(obj.value(ctx.cacheObjectContext(), false), ctx);
}
}
}
@@ -649,4 +677,4 @@ public abstract class GridCacheMessage implements Message {
@Override public String toString() {
return S.toString(GridCacheMessage.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/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 c5d4162..b37742c 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
@@ -558,6 +558,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/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index 7854c93..ee1f4a1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -925,11 +925,25 @@ public class GridCacheUtils {
* @throws IgniteCheckedException If marshalling failed.
*/
@SuppressWarnings("unchecked")
- public static byte[] marshal(GridCacheSharedContext ctx, Object obj)
+ public static byte[] marshal(GridCacheContext ctx, Object obj)
throws IgniteCheckedException {
assert ctx != null;
- if (ctx.gridDeploy().enabled()) {
+ return marshal(ctx.shared(), ctx.deploymentEnabled(), obj);
+ }
+
+ /**
+ * @param ctx Cache context.
+ * @param depEnabled deployment enabled flag.
+ * @param obj Object to marshal.
+ * @return Buffer that contains obtained byte array.
+ * @throws IgniteCheckedException If marshalling failed.
+ */
+ public static byte[] marshal(GridCacheSharedContext ctx, boolean depEnabled, Object obj)
+ throws IgniteCheckedException {
+ assert ctx != null;
+
+ if (depEnabled) {
if (obj != null) {
if (obj instanceof Iterable)
ctx.deploy().registerClasses((Iterable<?>)obj);
@@ -1797,4 +1811,4 @@ public class GridCacheUtils {
}
};
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
index c911b5b..8177c98 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTtlUpdateRequest.java
@@ -194,6 +194,11 @@ public class GridCacheTtlUpdateRequest extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -327,4 +332,4 @@ public class GridCacheTtlUpdateRequest extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridCacheTtlUpdateRequest.class, this, "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
index d6f6a18..4d75403 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
@@ -162,7 +162,8 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
0,
true,
futureId(),
- fut.futureId());
+ fut.futureId(),
+ tx.activeCachesDeploymentEnabled());
try {
cctx.io().send(nearNodeId, req, tx.ioPolicy());
@@ -267,7 +268,8 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
nodeTransactions(id),
false,
futureId(),
- fut.futureId());
+ fut.futureId(),
+ tx.activeCachesDeploymentEnabled());
try {
cctx.io().send(id, req, tx.ioPolicy());
@@ -292,7 +294,8 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
nodeTransactions(nodeId),
false,
futureId(),
- fut.futureId());
+ fut.futureId(),
+ tx.activeCachesDeploymentEnabled());
try {
cctx.io().send(nodeId, req, tx.ioPolicy());
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/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..e5787d7 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
@@ -64,14 +64,16 @@ public class GridCacheTxRecoveryRequest extends GridDistributedBaseMessage {
* @param nearTxCheck {@code True} if should check only tx on near node.
* @param futId Future ID.
* @param miniId Mini future ID.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheTxRecoveryRequest(IgniteInternalTx tx,
int txNum,
boolean nearTxCheck,
IgniteUuid futId,
- IgniteUuid miniId)
+ IgniteUuid miniId,
+ boolean addDepInfo)
{
- super(tx.xidVersion(), 0);
+ super(tx.xidVersion(), 0, addDepInfo);
nearXidVer = tx.nearXidVersion();
sys = tx.system();
@@ -258,4 +260,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/df931bd0/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..361d381 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
@@ -53,17 +53,21 @@ public class GridCacheTxRecoveryResponse extends GridDistributedBaseMessage {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param success {@code True} if all remote transactions were prepared, {@code false} otherwise.
+ * @param addDepInfo Deployment info flag.
*/
public GridCacheTxRecoveryResponse(GridCacheVersion txId,
IgniteUuid futId,
IgniteUuid miniId,
- boolean success)
+ boolean success,
+ boolean addDepInfo)
{
- super(txId, 0);
+ super(txId, 0, addDepInfo);
this.futId = futId;
this.miniId = miniId;
this.success = success;
+
+ this.addDepInfo = addDepInfo;
}
/**
@@ -179,4 +183,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/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
index 689cc62..f4a16dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedBaseMessage.java
@@ -86,19 +86,22 @@ public abstract class GridDistributedBaseMessage extends GridCacheMessage implem
/**
* @param cnt Count of keys references in list of candidates.
+ * @param addDepInfo Deployment info flag.
*/
- protected GridDistributedBaseMessage(int cnt) {
+ protected GridDistributedBaseMessage(int cnt, boolean addDepInfo) {
assert cnt >= 0;
this.cnt = cnt;
+ this.addDepInfo = addDepInfo;
}
/**
* @param ver Either lock or transaction version.
* @param cnt Key count.
+ * @param addDepInfo Deployment info flag.
*/
- protected GridDistributedBaseMessage(GridCacheVersion ver, int cnt) {
- this(cnt);
+ protected GridDistributedBaseMessage(GridCacheVersion ver, int cnt, boolean addDepInfo) {
+ this(cnt, addDepInfo);
assert ver != null;
@@ -122,6 +125,11 @@ public abstract class GridDistributedBaseMessage extends GridCacheMessage implem
candsByIdx = ctx.marshaller().unmarshal(candsByIdxBytes, ldr);
}
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+
/**
* @return Version.
*/
@@ -290,4 +298,4 @@ public abstract class GridDistributedBaseMessage extends GridCacheMessage implem
@Override public String toString() {
return S.toString(GridDistributedBaseMessage.class, this, "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
index 1963894..2899e25 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockRequest.java
@@ -118,6 +118,7 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
* @param keyCnt Number of keys.
* @param txSize Expected transaction size.
* @param skipStore Skip store flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDistributedLockRequest(
int cacheId,
@@ -133,9 +134,10 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
long timeout,
int keyCnt,
int txSize,
- boolean skipStore
+ boolean skipStore,
+ boolean addDepInfo
) {
- super(lockVer, keyCnt);
+ super(lockVer, keyCnt, addDepInfo);
assert keyCnt > 0;
assert futId != null;
@@ -551,4 +553,4 @@ public class GridDistributedLockRequest extends GridDistributedBaseMessage {
return S.toString(GridDistributedLockRequest.class, this, "keysCnt", retVals.length,
"super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
index 8a95b14..cdd58b5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedLockResponse.java
@@ -72,12 +72,14 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
* @param lockVer Lock version.
* @param futId Future ID.
* @param cnt Key count.
+ * @param addDepInfo Deployment info.
*/
public GridDistributedLockResponse(int cacheId,
GridCacheVersion lockVer,
IgniteUuid futId,
- int cnt) {
- super(lockVer, cnt);
+ int cnt,
+ boolean addDepInfo) {
+ super(lockVer, cnt, addDepInfo);
assert futId != null;
@@ -92,12 +94,14 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
* @param lockVer Lock ID.
* @param futId Future ID.
* @param err Error.
+ * @param addDepInfo Deployment info.
*/
public GridDistributedLockResponse(int cacheId,
GridCacheVersion lockVer,
IgniteUuid futId,
- Throwable err) {
- super(lockVer, 0);
+ Throwable err,
+ boolean addDepInfo) {
+ super(lockVer, 0, addDepInfo);
assert futId != null;
@@ -112,13 +116,15 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
* @param futId Future ID.
* @param cnt Count.
* @param err Error.
+ * @param addDepInfo Deployment info.
*/
public GridDistributedLockResponse(int cacheId,
GridCacheVersion lockVer,
IgniteUuid futId,
int cnt,
- Throwable err) {
- super(lockVer, cnt);
+ Throwable err,
+ boolean addDepInfo) {
+ super(lockVer, cnt, addDepInfo);
assert futId != null;
@@ -325,4 +331,4 @@ public class GridDistributedLockResponse extends GridDistributedBaseMessage {
return S.toString(GridDistributedLockResponse.class, this,
"super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
index ddf6799..34b3112 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishRequest.java
@@ -89,6 +89,7 @@ public class GridDistributedTxFinishRequest extends GridDistributedBaseMessage {
* @param committedVers Committed versions.
* @param rolledbackVers Rolled back versions.
* @param txSize Expected transaction size.
+ * @param addDepInfo Deployment info flag.
*/
public GridDistributedTxFinishRequest(
GridCacheVersion xidVer,
@@ -104,9 +105,10 @@ public class GridDistributedTxFinishRequest extends GridDistributedBaseMessage {
GridCacheVersion baseVer,
Collection<GridCacheVersion> committedVers,
Collection<GridCacheVersion> rolledbackVers,
- int txSize
+ int txSize,
+ boolean addDepInfo
) {
- super(xidVer, 0);
+ super(xidVer, 0, addDepInfo);
assert xidVer != null;
this.futId = futId;
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/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 2cfafc1..4e17e79 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
@@ -74,6 +74,11 @@ public class GridDistributedTxFinishResponse extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -151,4 +156,4 @@ public class GridDistributedTxFinishResponse extends GridCacheMessage {
@Override public String toString() {
return GridToStringBuilder.toString(GridDistributedTxFinishResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
index 5ba7128..533c8ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareRequest.java
@@ -131,15 +131,17 @@ public class GridDistributedTxPrepareRequest extends GridDistributedBaseMessage
* @param writes Write entries.
* @param txNodes Transaction nodes mapping.
* @param onePhaseCommit One phase commit flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDistributedTxPrepareRequest(
IgniteInternalTx tx,
@Nullable Collection<IgniteTxEntry> reads,
Collection<IgniteTxEntry> writes,
Map<UUID, Collection<UUID>> txNodes,
- boolean onePhaseCommit
+ boolean onePhaseCommit,
+ boolean addDepInfo
) {
- super(tx.xidVersion(), 0);
+ super(tx.xidVersion(), 0, addDepInfo);
writeVer = tx.writeVersion();
threadId = tx.threadId();
@@ -337,6 +339,11 @@ public class GridDistributedTxPrepareRequest extends GridDistributedBaseMessage
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo || forceAddDepInfo;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -605,4 +612,4 @@ public class GridDistributedTxPrepareRequest extends GridDistributedBaseMessage
return GridToStringBuilder.toString(GridDistributedTxPrepareRequest.class, this,
"super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
index e798458..d2c5aa4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxPrepareResponse.java
@@ -52,17 +52,19 @@ public class GridDistributedTxPrepareResponse extends GridDistributedBaseMessage
/**
* @param xid Transaction ID.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDistributedTxPrepareResponse(GridCacheVersion xid) {
- super(xid, 0);
+ public GridDistributedTxPrepareResponse(GridCacheVersion xid, boolean addDepInfo) {
+ super(xid, 0, addDepInfo);
}
/**
* @param xid Lock ID.
* @param err Error.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDistributedTxPrepareResponse(GridCacheVersion xid, Throwable err) {
- super(xid, 0);
+ public GridDistributedTxPrepareResponse(GridCacheVersion xid, Throwable err, boolean addDepInfo) {
+ super(xid, 0, addDepInfo);
this.err = err;
}
@@ -168,4 +170,4 @@ public class GridDistributedTxPrepareResponse extends GridDistributedBaseMessage
return GridToStringBuilder.toString(GridDistributedTxPrepareResponse.class, this, "err",
err == null ? "null" : err.toString(), "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/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..0834e88 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} */
+ @Override public boolean activeCachesDeploymentEnabled() {
+ return false;
+ }
+
/**
* @return Checks if transaction has no entries.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
index 70c83f2..213a0ff 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedUnlockRequest.java
@@ -54,9 +54,10 @@ public class GridDistributedUnlockRequest extends GridDistributedBaseMessage {
/**
* @param cacheId Cache ID.
* @param keyCnt Key count.
+ * @param addDepInfo Deployment info flag.
*/
- public GridDistributedUnlockRequest(int cacheId, int keyCnt) {
- super(keyCnt);
+ public GridDistributedUnlockRequest(int cacheId, int keyCnt, boolean addDepInfo) {
+ super(keyCnt, addDepInfo);
this.cacheId = cacheId;
}
@@ -159,4 +160,4 @@ public class GridDistributedUnlockRequest extends GridDistributedBaseMessage {
@Override public String toString() {
return S.toString(GridDistributedUnlockRequest.class, this, "super", super.toString());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
index e6a5c9a..0ef7606 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentRequest.java
@@ -52,6 +52,11 @@ public class GridDhtAffinityAssignmentRequest extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean partitionExchangeMessage() {
return true;
}
@@ -127,4 +132,4 @@ public class GridDhtAffinityAssignmentRequest extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridDhtAffinityAssignmentRequest.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
index 2798d7c..42358d9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAffinityAssignmentResponse.java
@@ -135,6 +135,11 @@ public class GridDhtAffinityAssignmentResponse extends GridCacheMessage {
}
/** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
writer.setBuffer(buf);
@@ -202,4 +207,4 @@ public class GridDhtAffinityAssignmentResponse extends GridCacheMessage {
@Override public String toString() {
return S.toString(GridDhtAffinityAssignmentResponse.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 333bce2..9d02705 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -694,7 +694,8 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
GridNearGetResponse res = new GridNearGetResponse(ctx.cacheId(),
req.futureId(),
req.miniId(),
- req.version());
+ req.version(),
+ req.deployInfo() != null);
GridDhtFuture<Collection<GridCacheEntryInfo>> fut =
(GridDhtFuture<Collection<GridCacheEntryInfo>>)f;
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index 2c16534..4f3e97d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -866,7 +866,8 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
inTx() ? tx.subjectId() : null,
inTx() ? tx.taskNameHash() : 0,
read ? accessTtl : -1L,
- skipStore);
+ skipStore,
+ cctx.deploymentEnabled());
try {
for (ListIterator<GridDhtCacheEntry> it = dhtMapping.listIterator(); it.hasNext();) {
@@ -1236,4 +1237,4 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
return S.toString(MiniFuture.class, this, "nodeId", node.id(), "super", super.toString());
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
index 99c1b86..91ab1ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockRequest.java
@@ -120,6 +120,7 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
* @param taskNameHash Task name hash code.
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
+ * @param addDepInfo Deployment info flag.
*/
public GridDhtLockRequest(
int cacheId,
@@ -141,7 +142,8 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
@Nullable UUID subjId,
int taskNameHash,
long accessTtl,
- boolean skipStore
+ boolean skipStore,
+ boolean addDepInfo
) {
super(cacheId,
nodeId,
@@ -156,7 +158,8 @@ public class GridDhtLockRequest extends GridDistributedLockRequest {
timeout,
dhtCnt == 0 ? nearCnt : dhtCnt,
txSize,
- skipStore);
+ skipStore,
+ addDepInfo);
this.topVer = topVer;
http://git-wip-us.apache.org/repos/asf/ignite/blob/df931bd0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
index f79156b..1e92b54 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockResponse.java
@@ -75,9 +75,11 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param cnt Key count.
+ * @param addDepInfo Deployment info.
*/
- public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, int cnt) {
- super(cacheId, lockVer, futId, cnt);
+ public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, int cnt,
+ boolean addDepInfo) {
+ super(cacheId, lockVer, futId, cnt, addDepInfo);
assert miniId != null;
@@ -89,9 +91,11 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
* @param futId Future ID.
* @param miniId Mini future ID.
* @param err Error.
+ * @param addDepInfo
*/
- public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId, Throwable err) {
- super(cacheId, lockVer, futId, err);
+ public GridDhtLockResponse(int cacheId, GridCacheVersion lockVer, IgniteUuid futId, IgniteUuid miniId,
+ Throwable err, boolean addDepInfo) {
+ super(cacheId, lockVer, futId, err, addDepInfo);
assert miniId != null;
@@ -291,4 +295,4 @@ public class GridDhtLockResponse extends GridDistributedLockResponse {
@Override public String toString() {
return S.toString(GridDhtLockResponse.class, this, super.toString());
}
-}
\ No newline at end of file
+}