# ignite-680
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/86f23de5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/86f23de5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/86f23de5 Branch: refs/heads/ignite-437-sqltests-p2 Commit: 86f23de5cf8b308c25072e46cd3efdc31e9eb545 Parents: bf7fdb2 Author: sboikov <semen.boi...@inria.fr> Authored: Tue Apr 7 06:14:46 2015 +0300 Committer: sboikov <semen.boi...@inria.fr> Committed: Tue Apr 7 06:14:46 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheProcessor.java | 63 +++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/86f23de5/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 7deb9fb..ca3b896 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 @@ -942,7 +942,7 @@ public class GridCacheProcessor extends GridProcessorAdapter { ctx.kernalContext().continuous().onCacheStop(ctx); U.stopLifecycleAware(log, lifecycleAwares(cache.configuration(), ctx.jta().tmLookup(), - ctx.store().configuredStore())); + ctx.store().configuredStore())); if (log.isInfoEnabled()) log.info("Stopped cache: " + cache.name()); @@ -2442,6 +2442,16 @@ public class GridCacheProcessor extends GridProcessorAdapter { private void addCacheConfigurations(Collection<CacheConfiguration> cfgs) throws IgniteCheckedException { GridCacheAdapter<CacheTemplateConfigurationKey, TemplateConfigurations> utilityCache = utilityCache(); + TemplateConfigurations templates = + utilityCache.localPeek(new CacheTemplateConfigurationKey(), CachePeekModes.ONHEAP_ONLY, null); + + if (templates != null) { + cfgs = templates.needAdd(cfgs); + + if (cfgs == null) + return; + } + final int RETRY_CNT = 5; for (int i = 0; i < RETRY_CNT; i++) { @@ -2766,6 +2776,57 @@ public class GridCacheProcessor extends GridProcessorAdapter { } /** + * Checks if need to add new templates. + * + * @param cfgs Templates to add. + * @return Templates which should be added. + */ + @Nullable Collection<CacheConfiguration> needAdd(Collection<CacheConfiguration> cfgs) { + Collection<CacheConfiguration> res = null; + + for (CacheConfiguration cfg : cfgs) { + boolean found = false; + + if (cfg.getName() != null && cfg.getName().endsWith("*")) { + String name0 = cfg.getName().substring(0, cfg.getName().length() - 1); + + if (wildcardNameCfgs != null) { + for (CacheConfiguration cfg0 : wildcardNameCfgs) { + if (F.eq(cfg0.getName(), name0)) { + found = true; + + break; + } + } + } + } + else { + if (exactNameCfgs != null) { + for (CacheConfiguration cfg0 : exactNameCfgs) { + if (F.eq(cfg0.getName(), cfg.getName())) { + found = true; + + break; + } + } + } + } + + if (!found) { + if (res == null) + res = new ArrayList<>(); + + System.out.println(Thread.currentThread().getName() + " need add: " + cfg + " " + exactNameCfgs); + + + res.add(cfg); + } + } + + return res; + } + + /** * @param cfgs Configurations to add. */ void add(Collection<CacheConfiguration> cfgs) {