Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 82CB81883F for ; Tue, 13 Oct 2015 07:25:08 +0000 (UTC) Received: (qmail 26471 invoked by uid 500); 13 Oct 2015 07:25:08 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 26389 invoked by uid 500); 13 Oct 2015 07:25:08 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 26112 invoked by uid 99); 13 Oct 2015 07:25:08 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Oct 2015 07:25:08 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id E8121DFF16; Tue, 13 Oct 2015 07:25:07 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.apache.org Date: Tue, 13 Oct 2015 07:25:21 -0000 Message-Id: In-Reply-To: <78a321e112d6426fa0f1d46dfef90ce1@git.apache.org> References: <78a321e112d6426fa0f1d46dfef90ce1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [16/18] ignite git commit: ignite-1.4.2 - Fixed resource cleanup for caches created from template. ignite-1.4.2 - Fixed resource cleanup for caches created from template. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/30b731b3 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/30b731b3 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/30b731b3 Branch: refs/heads/ignite-1537 Commit: 30b731b3c54609b77293e08c401db2d96e48e8d9 Parents: 94f549f Author: Alexey Goncharuk Authored: Mon Oct 12 16:09:59 2015 +0300 Committer: Alexey Goncharuk Committed: Mon Oct 12 16:09:59 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheProcessor.java | 23 ++++++++++----- .../IgniteCacheConfigurationTemplateTest.java | 31 ++++++++++++++++++++ 2 files changed, 46 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/30b731b3/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 8c96c0c..722e570 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 @@ -639,7 +639,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { if (ctx.config().isDaemon() && !CU.isMarshallerCache(cfgs[i].getName())) continue; - checkSerializable(cfgs[i]); + cloneCheckSerializable(cfgs[i]); CacheConfiguration cfg = new CacheConfiguration(cfgs[i]); @@ -2023,9 +2023,14 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @return Future that will be completed when cache is deployed. */ public IgniteInternalFuture createFromTemplate(String cacheName) { - CacheConfiguration cfg = createConfigFromTemplate(cacheName); + try { + CacheConfiguration cfg = createConfigFromTemplate(cacheName); - return dynamicStartCache(cfg, cacheName, null, true, true); + return dynamicStartCache(cfg, cacheName, null, true, true); + } + catch (IgniteCheckedException e) { + throw U.convertException(e); + } } /** @@ -2052,7 +2057,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @param cacheName Cache name. * @return Cache configuration. */ - private CacheConfiguration createConfigFromTemplate(String cacheName) { + private CacheConfiguration createConfigFromTemplate(String cacheName) throws IgniteCheckedException { CacheConfiguration cfgTemplate = null; CacheConfiguration dfltCacheCfg = null; @@ -2112,6 +2117,8 @@ public class GridCacheProcessor extends GridProcessorAdapter { if (cfgTemplate == null) cfgTemplate = new CacheConfiguration(); + else + cfgTemplate = cloneCheckSerializable(cfgTemplate); CacheConfiguration cfg = new CacheConfiguration(cfgTemplate); @@ -2168,7 +2175,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { if (ccfg != null) { try { - checkSerializable(ccfg); + cloneCheckSerializable(ccfg); } catch (IgniteCheckedException e) { return new GridFinishedFuture<>(e); @@ -3340,9 +3347,9 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @param val Object to check. * @throws IgniteCheckedException If validation failed. */ - private void checkSerializable(CacheConfiguration val) throws IgniteCheckedException { + private CacheConfiguration cloneCheckSerializable(CacheConfiguration val) throws IgniteCheckedException { if (val == null) - return; + return null; if (val.getCacheStoreFactory() != null) { try { @@ -3356,7 +3363,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { } try { - marshaller.unmarshal(marshaller.marshal(val), val.getClass().getClassLoader()); + return marshaller.unmarshal(marshaller.marshal(val), val.getClass().getClassLoader()); } catch (IgniteCheckedException e) { throw new IgniteCheckedException("Failed to validate cache configuration " + http://git-wip-us.apache.org/repos/asf/ignite/blob/30b731b3/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java index d3ba2d6..87a30a6 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheConfigurationTemplateTest.java @@ -24,6 +24,7 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.cache.CacheExistsException; +import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.events.Event; @@ -365,6 +366,36 @@ public class IgniteCacheConfigurationTemplateTest extends GridCommonAbstractTest } /** + * @throws Exception If failed. + */ + public void testTemplateCleanup() throws Exception { + startGridsMultiThreaded(3); + + try { + CacheConfiguration ccfg = new CacheConfiguration("affTemplate-*"); + + ccfg.setAffinity(new RendezvousAffinityFunction()); + + ignite(0).addCacheConfiguration(ccfg); + + ignite(0).getOrCreateCache("affTemplate-1"); + + IgniteCache cache = ignite(0).getOrCreateCache("affTemplate-2"); + + ignite(0).destroyCache("affTemplate-1"); + + startGrid(3); + + cache.put(1, 1); + + assertEquals(1, cache.get(1)); + } + finally { + stopAllGrids(); + } + } + + /** * @param ignite Ignite. * @param name Cache name. * @param expBackups Expected number of backups.