You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/02/20 12:46:43 UTC
[24/38] ignite git commit: IGNITE-2647: Cache is undeployed even when
BinaryMarshaller is used. Fixed.
IGNITE-2647: Cache is undeployed even when BinaryMarshaller is used. Fixed.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2bb44995
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2bb44995
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2bb44995
Branch: refs/heads/ignite-961
Commit: 2bb449954666d838fb1296df18235b15dfe7975a
Parents: 21f22d3
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Feb 18 09:28:10 2016 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Feb 18 09:28:10 2016 +0300
----------------------------------------------------------------------
.../cache/GridCacheDeploymentManager.java | 8 +-
.../processors/cache/GridCacheProcessor.java | 4 +-
.../cache/GridCacheDeploymentSelfTest.java | 78 +++++++++++++++++++-
3 files changed, 85 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/2bb44995/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java
index d7f7521..97d58dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentManager.java
@@ -29,6 +29,7 @@ import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.binary.BinaryInvalidTypeException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.events.DiscoveryEvent;
@@ -342,6 +343,11 @@ public class GridCacheDeploymentManager<K, V> extends GridCacheSharedManagerAdap
catch (GridCacheEntryRemovedException ignore) {
return false;
}
+ catch (BinaryInvalidTypeException ignore) {
+ log.error("An attempt to undeploy cache with binary objects.", ignore);
+
+ return false;
+ }
catch (IgniteCheckedException | IgniteException ignore) {
// Peek can throw runtime exception if unmarshalling failed.
return true;
@@ -1004,4 +1010,4 @@ public class GridCacheDeploymentManager<K, V> extends GridCacheSharedManagerAdap
return S.toString(CachedDeploymentInfo.class, this);
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/2bb44995/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index db9298f..d485d41 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -3287,8 +3287,8 @@ public class GridCacheProcessor extends GridProcessorAdapter {
public void onUndeployed(ClassLoader ldr) {
if (!ctx.isStopping()) {
for (GridCacheAdapter<?, ?> cache : caches.values()) {
- // Do not notify system caches.
- if (cache.context().userCache())
+ // Do not notify system caches and caches for which deployment is disabled.
+ if (cache.context().userCache() && cache.context().deploymentEnabled())
cache.onUndeploy(ldr);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/2bb44995/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
index db6c882..c3c2d47 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDeploymentSelfTest.java
@@ -112,6 +112,16 @@ public class GridCacheDeploymentSelfTest extends GridCommonAbstractTest {
return cfg;
}
+ /**
+ * Checks whether a cache should be undeployed in SHARED or CONTINUOUS modes.
+ *
+ * @param g Ignite node.
+ * @return {@code true} if the cache has to be undeployed, {@code false} otherwise.
+ */
+ protected boolean isCacheUndeployed(Ignite g) {
+ return !(g.configuration().getMarshaller() instanceof BinaryMarshaller);
+ }
+
/** @throws Exception If failed. */
@SuppressWarnings("unchecked")
public void testDeployment() throws Exception {
@@ -210,8 +220,7 @@ public class GridCacheDeploymentSelfTest extends GridCommonAbstractTest {
assertEquals(0, g1.cache(null).localSize());
- assertEquals(g2.configuration().getMarshaller() instanceof BinaryMarshaller ? 1 : 0,
- g2.cache(null).localSize());
+ assertEquals(isCacheUndeployed(g1) ? 0 : 1, g2.cache(null).localSize());
startGrid(3);
}
@@ -423,6 +432,71 @@ public class GridCacheDeploymentSelfTest extends GridCommonAbstractTest {
}
/**
+ * @throws Exception If failed.
+ */
+ public void testCacheUndeploymentSharedMode() throws Exception {
+ testCacheUndeployment(SHARED);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testCacheUndeploymentContMode() throws Exception {
+ testCacheUndeployment(CONTINUOUS);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ private void testCacheUndeployment(DeploymentMode depMode) throws Exception {
+ ClassLoader ldr = getExternalClassLoader();
+
+ Class valCls = ldr.loadClass(TEST_VALUE_1);
+ Class taskCls = ldr.loadClass(TEST_TASK_2);
+
+ try {
+ this.depMode = depMode;
+
+ Ignite g0 = startGrid(0);
+ Ignite g1 = startGrid(1);
+
+ for (int i = 0; i < 20; i++)
+ g0.cache(null).put(i, valCls.newInstance());
+
+ assert g0.cache(null).localSize(CachePeekMode.ALL) > 0 : "Cache is empty";
+ assert g1.cache(null).localSize(CachePeekMode.ALL) > 0 : "Cache is empty";
+
+ g0.compute(g0.cluster().forRemotes()).execute(taskCls, g1.cluster().localNode());
+
+ stopGrid(0);
+
+ if (depMode == SHARED && isCacheUndeployed(g1)) {
+ for (int i = 0; i < 10; i++) {
+ if (g1.cache(null).localSize(CachePeekMode.ALL) == 0)
+ break;
+
+ Thread.sleep(500);
+ }
+
+ assertEquals(0, g1.cache(null).localSize(CachePeekMode.ALL));
+ }
+ else {
+ for (int i = 0; i < 4; i++) {
+ if (g1.cache(null).localSize(CachePeekMode.ALL) == 0)
+ break;
+
+ Thread.sleep(500);
+ }
+
+ assert g1.cache(null).localSize(CachePeekMode.ALL) > 0 : "Cache undeployed unexpectadly";
+ }
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /**
* Looks for next key starting from {@code start} for which primary node is {@code primary} and backup is {@code
* backup}.
*