IGNITE-471 - Marshalling refactoring
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/adc932ef Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/adc932ef Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/adc932ef Branch: refs/heads/ignite-471 Commit: adc932ef4c33ab2724a74fdb5598f5b8a74013b9 Parents: 5290845 Author: Valentin Kulichenko <[email protected]> Authored: Mon Apr 6 15:35:41 2015 -0700 Committer: Valentin Kulichenko <[email protected]> Committed: Mon Apr 6 15:35:41 2015 -0700 ---------------------------------------------------------------------- .../IgniteCacheObjectProcessorImpl.java | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/adc932ef/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java index fdb64ec..83f0eb9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cacheobject/IgniteCacheObjectProcessorImpl.java @@ -29,10 +29,12 @@ import org.apache.ignite.internal.util.*; import org.apache.ignite.internal.util.typedef.internal.*; import org.apache.ignite.lang.*; import org.jetbrains.annotations.*; +import org.jsr166.*; import java.math.*; import java.nio.*; import java.util.*; +import java.util.concurrent.*; import static org.apache.ignite.cache.CacheMemoryMode.*; @@ -50,6 +52,9 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme private final GridBoundedConcurrentLinkedHashMap<Class<?>, Boolean> reflectionCache = new GridBoundedConcurrentLinkedHashMap<>(1024, 1024); + /** */ + private final ConcurrentMap<String, CacheObjectContext> contexts = new ConcurrentHashMap8<>(); + /** * */ @@ -182,6 +187,23 @@ public class IgniteCacheObjectProcessorImpl extends GridProcessorAdapter impleme /** {@inheritDoc} */ @Override public CacheObjectContext contextForCache(ClusterNode node, @Nullable String cacheName, @Nullable CacheConfiguration ccfg) { + CacheObjectContext ctx = contexts.get(cacheName); + + if (ctx == null) { + CacheObjectContext old = contexts.putIfAbsent(cacheName, ctx = createContext(ccfg)); + + if (old != null) + ctx = old; + } + + return ctx; + } + + /** + * @param ccfg Configuration. + * @return New cache context. + */ + protected CacheObjectContext createContext(@Nullable CacheConfiguration ccfg) { if (ccfg != null) { CacheMemoryMode memMode = ccfg.getMemoryMode();
