Repository: incubator-ignite Updated Branches: refs/heads/ignite-421 210d5ca13 -> e4e9c3512
IGNITE-45 - WIP Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1cd95ae6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1cd95ae6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1cd95ae6 Branch: refs/heads/ignite-421 Commit: 1cd95ae6216268ccdbe7bab79cf41c1e6a926fc8 Parents: a847b8b Author: Alexey Goncharuk <agoncha...@gridgain.com> Authored: Fri Mar 6 15:58:48 2015 -0800 Committer: Alexey Goncharuk <agoncha...@gridgain.com> Committed: Fri Mar 6 15:58:48 2015 -0800 ---------------------------------------------------------------------- .../configuration/CacheConfiguration.java | 37 +- .../configuration/ClientCacheConfiguration.java | 174 ++++++++++ .../configuration/IgniteConfiguration.java | 137 +++++--- .../processors/cache/GridCacheAttributes.java | 334 ++++--------------- 4 files changed, 347 insertions(+), 335 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java index 224176f..a4bc6df 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java @@ -20,6 +20,7 @@ package org.apache.ignite.configuration; import org.apache.ignite.*; import org.apache.ignite.cache.*; import org.apache.ignite.cache.affinity.*; +import org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction; import org.apache.ignite.cache.eviction.*; import org.apache.ignite.cache.store.*; import org.apache.ignite.internal.processors.cache.*; @@ -27,7 +28,9 @@ import org.apache.ignite.internal.util.typedef.internal.*; import org.apache.ignite.spi.indexing.*; import org.jetbrains.annotations.*; +import javax.cache.Cache; import javax.cache.configuration.*; +import javax.cache.expiry.ExpiryPolicy; import java.util.*; /** @@ -329,13 +332,13 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { * * @param cfg Configuration to copy. */ - public CacheConfiguration(CompleteConfiguration cfg) { + public CacheConfiguration(CompleteConfiguration<K, V> cfg) { super(cfg); if (!(cfg instanceof CacheConfiguration)) return; - CacheConfiguration cc = (CacheConfiguration)cfg; + CacheConfiguration<K, V> cc = (CacheConfiguration<K, V>)cfg; /* * NOTE: MAKE SURE TO PRESERVE ALPHABETIC ORDER! @@ -392,13 +395,13 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { swapEnabled = cc.isSwapEnabled(); tmLookupClsName = cc.getTransactionManagerLookupClassName(); ttl = cc.getDefaultTimeToLive(); + typeMeta = cc.getTypeMetadata(); writeBehindBatchSize = cc.getWriteBehindBatchSize(); writeBehindEnabled = cc.isWriteBehindEnabled(); writeBehindFlushFreq = cc.getWriteBehindFlushFrequency(); writeBehindFlushSize = cc.getWriteBehindFlushSize(); writeBehindFlushThreadCnt = cc.getWriteBehindFlushThreadCount(); writeSync = cc.getWriteSynchronizationMode(); - typeMeta = cc.getTypeMetadata(); } /** @@ -484,6 +487,20 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { } /** + * @return Near enabled flag. + */ + public boolean isNearEnabled() { + return distro == CacheDistributionMode.NEAR_ONLY || distro == CacheDistributionMode.NEAR_PARTITIONED; + } + + /** + * @param nearEnabled Near enabled flag. + */ + public void setNearEnabled(boolean nearEnabled) { + distro = nearEnabled ? CacheDistributionMode.NEAR_PARTITIONED : CacheDistributionMode.PARTITIONED_ONLY; + } + + /** * Gets write synchronization mode. This mode controls whether the main * caller should wait for update on other nodes to complete or not. * @@ -688,7 +705,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { /** * Gets eviction filter to specify which entries should not be evicted * (except explicit evict by calling {@link IgniteCache#localEvict(Collection)}). - * If {@link org.apache.ignite.cache.eviction.CacheEvictionFilter#evictAllowed(javax.cache.Cache.Entry)} method + * If {@link CacheEvictionFilter#evictAllowed(Cache.Entry)} method * returns {@code false} then eviction policy will not be notified and entry will * never be evicted. * <p> @@ -718,8 +735,8 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { * When not set, default value is {@link #DFLT_EAGER_TTL}. * <p> * <b>Note</b> that this flag only matters for entries expiring based on - * {@link javax.cache.expiry.ExpiryPolicy} and should not be confused with entry - * evictions based on configured {@link org.apache.ignite.cache.eviction.CacheEvictionPolicy}. + * {@link ExpiryPolicy} and should not be confused with entry + * evictions based on configured {@link CacheEvictionPolicy}. * * @return Flag indicating whether Ignite will eagerly remove expired entries. */ @@ -1107,7 +1124,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { * swap is disabled which is defined via {@link #DFLT_SWAP_ENABLED} constant. * <p> * Note that this flag may be overridden for cache projection created with flag - * {@link org.apache.ignite.internal.processors.cache.CacheFlag#SKIP_SWAP}. + * {@link CacheFlag#SKIP_SWAP}. * * @return {@code True} if swap storage is enabled. */ @@ -1343,7 +1360,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { * For better efficiency user should usually make sure that new nodes get placed on * the same place of consistent hash ring as the left nodes, and that nodes are * restarted before this delay expires. To place nodes on the same place in consistent hash ring, - * use {@link org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction#setHashIdResolver(CacheAffinityNodeHashResolver)} + * use {@link CacheRendezvousAffinityFunction#setHashIdResolver(CacheAffinityNodeHashResolver)} * to make sure that a node maps to the same hash ID event if restarted. As an example, * node IP address and port combination may be used in this case. * <p> @@ -1408,7 +1425,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { * on the same node (they will also be backed up on the same nodes as well). * <p> * If not provided, then default implementation will be used. The default behavior - * is described in {@link org.apache.ignite.cache.affinity.CacheAffinityKeyMapper} documentation. + * is described in {@link CacheAffinityKeyMapper} documentation. * * @return Mapper to use for affinity key mapping. */ @@ -1418,7 +1435,7 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> { /** * Sets custom affinity mapper. If not provided, then default implementation will be used. The default behavior is - * described in {@link org.apache.ignite.cache.affinity.CacheAffinityKeyMapper} documentation. + * described in {@link CacheAffinityKeyMapper} documentation. * * @param affMapper Affinity mapper. */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java new file mode 100644 index 0000000..ecfeadc --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/configuration/ClientCacheConfiguration.java @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.configuration; + +import org.apache.ignite.*; +import org.apache.ignite.cache.*; +import org.apache.ignite.cache.eviction.*; + +import javax.cache.configuration.*; + +import static org.apache.ignite.configuration.CacheConfiguration.*; + +/** + * Client cache configuration. + */ +public class ClientCacheConfiguration<K, V> extends MutableConfiguration<K, V> { + /** Cache name. */ + private String name; + + /** Near enabled flag. */ + private boolean nearEnabled; + + /** Near cache eviction policy. */ + private CacheEvictionPolicy nearEvictPlc; + + /** Flag indicating whether eviction is synchronized with near nodes. */ + private boolean evictNearSync = DFLT_EVICT_NEAR_SYNCHRONIZED; + + /** Default near cache start size. */ + private int nearStartSize = DFLT_NEAR_START_SIZE; + + /** + * Empty constructor. + */ + public ClientCacheConfiguration() { + // No-op. + } + + /** + * @param cfg Configuration to copy. + */ + public ClientCacheConfiguration(CompleteConfiguration<K, V> cfg) { + super(cfg); + + // Preserve alphabetic order. + if (cfg instanceof CacheConfiguration) { + CacheConfiguration ccfg = (CacheConfiguration)cfg; + + evictNearSync = ccfg.isEvictNearSynchronized(); + name = ccfg.getName(); + nearEnabled = ccfg.isNearEnabled(); + nearEvictPlc = ccfg.getNearEvictionPolicy(); + nearStartSize = ccfg.getNearStartSize(); + } + else if (cfg instanceof ClientCacheConfiguration) { + ClientCacheConfiguration ccfg = (ClientCacheConfiguration)cfg; + + evictNearSync = ccfg.isEvictNearSynchronized(); + name = ccfg.getName(); + nearEnabled = ccfg.isNearEnabled(); + nearEvictPlc = ccfg.getNearEvictionPolicy(); + nearStartSize = ccfg.getNearStartSize(); + } + } + + /** + * Gets cache name. The cache can be accessed via {@link Ignite#jcache(String)} method. + * + * @return Cache name. + */ + public String getName() { + return name; + } + + /** + * Sets cache name. + * + * @param name Cache name. + */ + public void setName(String name) { + this.name = name; + } + + /** + * Gets near enabled flag. + * + * @return Near enabled flag. + */ + public boolean isNearEnabled() { + return nearEnabled; + } + + /** + * Sets near enabled flag. + * + * @param nearEnabled Near enabled flag. + */ + public void setNearEnabled(boolean nearEnabled) { + this.nearEnabled = nearEnabled; + } + + /** + * @return Near eviction policy. + */ + public CacheEvictionPolicy getNearEvictionPolicy() { + return nearEvictPlc; + } + + /** + * @param nearEvictPlc Near eviction policy. + */ + public void setNearEvictionPolicy(CacheEvictionPolicy nearEvictPlc) { + this.nearEvictPlc = nearEvictPlc; + } + + /** + * Gets flag indicating whether eviction on primary node is synchronized with + * near nodes where entry is kept. Default value is {@code true}. + * <p> + * Note that in most cases this property should be set to {@code true} to keep + * cache consistency. But there may be the cases when user may use some + * special near eviction policy to have desired control over near cache + * entry set. + * + * @return {@code true} If eviction is synchronized with near nodes in + * partitioned cache, {@code false} if not. + */ + public boolean isEvictNearSynchronized() { + return evictNearSync; + } + + /** + * Sets flag indicating whether eviction is synchronized with near nodes. + * + * @param evictNearSync {@code true} if synchronized, {@code false} if not. + */ + public void setEvictNearSynchronized(boolean evictNearSync) { + this.evictNearSync = evictNearSync; + } + + /** + * Gets initial cache size for near cache which will be used to pre-create internal + * hash table after start. Default value is defined by {@link CacheConfiguration#DFLT_NEAR_START_SIZE}. + * + * @return Initial near cache size. + */ + public int getNearStartSize() { + return nearStartSize; + } + + /** + * Start size for near cache. This property is only used for {@link CacheMode#PARTITIONED} caching mode. + * + * @param nearStartSize Start size for near cache. + */ + public void setNearStartSize(int nearStartSize) { + this.nearStartSize = nearStartSize; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java index 8bd2f83..c84daab 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java @@ -18,14 +18,28 @@ package org.apache.ignite.configuration; import org.apache.ignite.*; +import org.apache.ignite.cluster.*; +import org.apache.ignite.compute.*; import org.apache.ignite.events.*; +import org.apache.ignite.events.EventType; import org.apache.ignite.internal.managers.eventstorage.*; import org.apache.ignite.internal.util.typedef.internal.*; import org.apache.ignite.lang.*; import org.apache.ignite.lifecycle.*; import org.apache.ignite.marshaller.*; +import org.apache.ignite.marshaller.jdk.*; +import org.apache.ignite.marshaller.optimized.*; import org.apache.ignite.plugin.*; +import org.apache.ignite.spi.checkpoint.noop.*; +import org.apache.ignite.spi.collision.noop.*; +import org.apache.ignite.spi.communication.tcp.*; +import org.apache.ignite.spi.deployment.local.*; +import org.apache.ignite.spi.discovery.tcp.*; +import org.apache.ignite.spi.eventstorage.memory.*; +import org.apache.ignite.spi.failover.always.*; import org.apache.ignite.spi.indexing.*; +import org.apache.ignite.spi.loadbalancing.roundrobin.*; +import org.apache.ignite.spi.swapspace.file.*; import org.apache.ignite.streamer.*; import org.apache.ignite.plugin.segmentation.*; import org.apache.ignite.services.*; @@ -51,15 +65,15 @@ import static org.apache.ignite.plugin.segmentation.GridSegmentationPolicy.*; /** * This class defines grid runtime configuration. This configuration is passed to - * {@link org.apache.ignite.Ignition#start(IgniteConfiguration)} method. It defines all configuration + * {@link Ignition#start(IgniteConfiguration)} method. It defines all configuration * parameters required to start a grid instance. Usually, a special * class called "loader" will create an instance of this interface and apply - * {@link org.apache.ignite.Ignition#start(IgniteConfiguration)} method to initialize Ignite instance. + * {@link Ignition#start(IgniteConfiguration)} method to initialize Ignite instance. * <p> * Note that you should only set values that differ from defaults, as grid * will automatically pick default values for all values that are not set. * <p> - * For more information about grid configuration and startup refer to {@link org.apache.ignite.Ignition} + * For more information about grid configuration and startup refer to {@link Ignition} * documentation. */ public class IgniteConfiguration { @@ -306,6 +320,9 @@ public class IgniteConfiguration { /** Cache configurations. */ private CacheConfiguration[] cacheCfg; + /** Client cache configurations. */ + private ClientCacheConfiguration[] clientCacheCfg; + /** Transactions configuration. */ private TransactionConfiguration txCfg = new TransactionConfiguration(); @@ -475,7 +492,7 @@ public class IgniteConfiguration { * <p> * Daemon nodes are the usual grid nodes that participate in topology but not * visible on the main APIs, i.e. they are not part of any projections. The only - * way to see daemon nodes is to use {@link org.apache.ignite.cluster.ClusterGroup#forDaemons()} method. + * way to see daemon nodes is to use {@link ClusterGroup#forDaemons()} method. * <p> * Daemon nodes are used primarily for management and monitoring functionality that * is build on Ignite and needs to participate in the topology but also needs to be @@ -483,7 +500,7 @@ public class IgniteConfiguration { * or in-memory data grid storage. * * @return {@code True} if this node should be a daemon node, {@code false} otherwise. - * @see org.apache.ignite.cluster.ClusterGroup#forDaemons() + * @see ClusterGroup#forDaemons() */ public boolean isDaemon() { return daemon; @@ -494,7 +511,7 @@ public class IgniteConfiguration { * <p> * Daemon nodes are the usual grid nodes that participate in topology but not * visible on the main APIs, i.e. they are not part of any projections. The only - * way to see daemon nodes is to use {@link org.apache.ignite.cluster.ClusterGroup#forDaemons()} method. + * way to see daemon nodes is to use {@link ClusterGroup#forDaemons()} method. * <p> * Daemon nodes are used primarily for management and monitoring functionality that * is build on Ignite and needs to participate in the topology but also needs to be @@ -519,8 +536,8 @@ public class IgniteConfiguration { /** * Should return any user-defined attributes to be added to this node. These attributes can - * then be accessed on nodes by calling {@link org.apache.ignite.cluster.ClusterNode#attribute(String)} or - * {@link org.apache.ignite.cluster.ClusterNode#attributes()} methods. + * then be accessed on nodes by calling {@link ClusterNode#attribute(String)} or + * {@link ClusterNode#attributes()} methods. * <p> * Note that system adds the following (among others) attributes automatically: * <ul> @@ -574,7 +591,7 @@ public class IgniteConfiguration { /** * Should return a thread pool size to be used in grid. - * This executor service will be in charge of processing {@link org.apache.ignite.compute.ComputeJob GridJobs} + * This executor service will be in charge of processing {@link ComputeJob GridJobs} * and user messages sent to node. * <p> * If not provided, executor service will have size {@link #DFLT_PUBLIC_THREAD_CNT}. @@ -599,7 +616,7 @@ public class IgniteConfiguration { /** * Size of thread pool that is in charge of processing internal and Visor - * {@link org.apache.ignite.compute.ComputeJob GridJobs}. + * {@link ComputeJob GridJobs}. * <p> * If not provided, executor service will have size {@link #DFLT_MGMT_THREAD_CNT} * @@ -642,7 +659,7 @@ public class IgniteConfiguration { * @see IgniteConfiguration#getPublicThreadPoolSize() */ public void setPublicThreadPoolSize(int poolSize) { - this.pubPoolSize = poolSize; + pubPoolSize = poolSize; } /** @@ -652,7 +669,7 @@ public class IgniteConfiguration { * @see IgniteConfiguration#getSystemThreadPoolSize() */ public void setSystemThreadPoolSize(int poolSize) { - this.sysPoolSize = poolSize; + sysPoolSize = poolSize; } /** @@ -662,7 +679,7 @@ public class IgniteConfiguration { * @see IgniteConfiguration#getManagementThreadPoolSize() */ public void setManagementThreadPoolSize(int poolSize) { - this.mgmtPoolSize = poolSize; + mgmtPoolSize = poolSize; } /** @@ -672,7 +689,7 @@ public class IgniteConfiguration { * @see IgniteConfiguration#getPeerClassLoadingThreadPoolSize() */ public void setPeerClassLoadingThreadPoolSize(int poolSize) { - this.p2pPoolSize = poolSize; + p2pPoolSize = poolSize; } /** @@ -682,7 +699,7 @@ public class IgniteConfiguration { * @see IgniteConfiguration#getIgfsThreadPoolSize() */ public void setIgfsThreadPoolSize(int poolSize) { - this.igfsPoolSize = poolSize; + igfsPoolSize = poolSize; } /** @@ -693,7 +710,7 @@ public class IgniteConfiguration { * * @return Ignite installation home or {@code null} to make the system attempt to * infer it automatically. - * @see org.apache.ignite.IgniteSystemProperties#IGNITE_HOME + * @see IgniteSystemProperties#IGNITE_HOME */ public String getIgniteHome() { return ggHome; @@ -704,7 +721,7 @@ public class IgniteConfiguration { * * @param ggHome {@code Ignition} installation folder. * @see IgniteConfiguration#getIgniteHome() - * @see org.apache.ignite.IgniteSystemProperties#IGNITE_HOME + * @see IgniteSystemProperties#IGNITE_HOME */ public void setIgniteHome(String ggHome) { this.ggHome = ggHome; @@ -719,7 +736,7 @@ public class IgniteConfiguration { * * @return Ignite work folder or {@code null} to make the system attempt to infer it automatically. * @see IgniteConfiguration#getIgniteHome() - * @see org.apache.ignite.IgniteSystemProperties#IGNITE_HOME + * @see IgniteSystemProperties#IGNITE_HOME */ public String getWorkDirectory() { return ggWork; @@ -776,8 +793,8 @@ public class IgniteConfiguration { /** * Should return an instance of marshaller to use in grid. If not provided, - * {@link org.apache.ignite.marshaller.optimized.OptimizedMarshaller} will be used on Java HotSpot VM, and - * {@link org.apache.ignite.marshaller.jdk.JdkMarshaller} will be used on other VMs. + * {@link OptimizedMarshaller} will be used on Java HotSpot VM, and + * {@link JdkMarshaller} will be used on other VMs. * * @return Marshaller to use in grid. */ @@ -805,7 +822,7 @@ public class IgniteConfiguration { * execution. This way, a task can be physically deployed only on one node * and then internally penetrate to all other nodes. * <p> - * See {@link org.apache.ignite.compute.ComputeTask} documentation for more information about task deployment. + * See {@link ComputeTask} documentation for more information about task deployment. * * @return {@code true} if peer class loading is enabled, {@code false} * otherwise. @@ -1077,8 +1094,8 @@ public class IgniteConfiguration { * routines. * * @return Collection of life-cycle beans. - * @see org.apache.ignite.lifecycle.LifecycleBean - * @see org.apache.ignite.lifecycle.LifecycleEventType + * @see LifecycleBean + * @see LifecycleEventType */ public LifecycleBean[] getLifecycleBeans() { return lifecycleBeans; @@ -1091,7 +1108,7 @@ public class IgniteConfiguration { * routines. * * @param lifecycleBeans Collection of lifecycle beans. - * @see org.apache.ignite.lifecycle.LifecycleEventType + * @see LifecycleEventType */ public void setLifecycleBeans(LifecycleBean... lifecycleBeans) { this.lifecycleBeans = lifecycleBeans; @@ -1099,7 +1116,7 @@ public class IgniteConfiguration { /** * Should return fully configured event SPI implementation. If not provided, - * {@link org.apache.ignite.spi.eventstorage.memory.MemoryEventStorageSpi} will be used. + * {@link MemoryEventStorageSpi} will be used. * * @return Grid event SPI implementation or {@code null} to use default implementation. */ @@ -1108,9 +1125,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.eventstorage.EventStorageSpi}. + * Sets fully configured instance of {@link EventStorageSpi}. * - * @param evtSpi Fully configured instance of {@link org.apache.ignite.spi.eventstorage.EventStorageSpi}. + * @param evtSpi Fully configured instance of {@link EventStorageSpi}. * @see IgniteConfiguration#getEventStorageSpi() */ public void setEventStorageSpi(EventStorageSpi evtSpi) { @@ -1119,7 +1136,7 @@ public class IgniteConfiguration { /** * Should return fully configured discovery SPI implementation. If not provided, - * {@link org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi} will be used by default. + * {@link TcpDiscoverySpi} will be used by default. * * @return Grid discovery SPI implementation or {@code null} to use default implementation. */ @@ -1128,9 +1145,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.discovery.DiscoverySpi}. + * Sets fully configured instance of {@link DiscoverySpi}. * - * @param discoSpi Fully configured instance of {@link org.apache.ignite.spi.discovery.DiscoverySpi}. + * @param discoSpi Fully configured instance of {@link DiscoverySpi}. * @see IgniteConfiguration#getDiscoverySpi() */ public void setDiscoverySpi(DiscoverySpi discoSpi) { @@ -1273,7 +1290,7 @@ public class IgniteConfiguration { /** * Should return fully configured SPI communication implementation. If not provided, - * {@link org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi} will be used by default. + * {@link TcpCommunicationSpi} will be used by default. * * @return Grid communication SPI implementation or {@code null} to use default implementation. */ @@ -1282,9 +1299,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.communication.CommunicationSpi}. + * Sets fully configured instance of {@link CommunicationSpi}. * - * @param commSpi Fully configured instance of {@link org.apache.ignite.spi.communication.CommunicationSpi}. + * @param commSpi Fully configured instance of {@link CommunicationSpi}. * @see IgniteConfiguration#getCommunicationSpi() */ public void setCommunicationSpi(CommunicationSpi commSpi) { @@ -1293,7 +1310,7 @@ public class IgniteConfiguration { /** * Should return fully configured collision SPI implementation. If not provided, - * {@link org.apache.ignite.spi.collision.noop.NoopCollisionSpi} is used and jobs get activated immediately + * {@link NoopCollisionSpi} is used and jobs get activated immediately * on arrive to mapped node. This approach suits well for large amount of small * jobs (which is a wide-spread use case). User still can control the number * of concurrent jobs by setting maximum thread pool size defined by @@ -1306,9 +1323,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.collision.CollisionSpi}. + * Sets fully configured instance of {@link CollisionSpi}. * - * @param colSpi Fully configured instance of {@link org.apache.ignite.spi.collision.CollisionSpi} or + * @param colSpi Fully configured instance of {@link CollisionSpi} or * {@code null} if no SPI provided. * @see IgniteConfiguration#getCollisionSpi() */ @@ -1318,7 +1335,7 @@ public class IgniteConfiguration { /** * Should return fully configured deployment SPI implementation. If not provided, - * {@link org.apache.ignite.spi.deployment.local.LocalDeploymentSpi} will be used. + * {@link LocalDeploymentSpi} will be used. * * @return Grid deployment SPI implementation or {@code null} to use default implementation. */ @@ -1327,9 +1344,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.deployment.DeploymentSpi}. + * Sets fully configured instance of {@link DeploymentSpi}. * - * @param deploySpi Fully configured instance of {@link org.apache.ignite.spi.deployment.DeploymentSpi}. + * @param deploySpi Fully configured instance of {@link DeploymentSpi}. * @see IgniteConfiguration#getDeploymentSpi() */ public void setDeploymentSpi(DeploymentSpi deploySpi) { @@ -1338,7 +1355,7 @@ public class IgniteConfiguration { /** * Should return fully configured checkpoint SPI implementation. If not provided, - * {@link org.apache.ignite.spi.checkpoint.noop.NoopCheckpointSpi} will be used. + * {@link NoopCheckpointSpi} will be used. * * @return Grid checkpoint SPI implementation or {@code null} to use default implementation. */ @@ -1347,9 +1364,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.checkpoint.CheckpointSpi}. + * Sets fully configured instance of {@link CheckpointSpi}. * - * @param cpSpi Fully configured instance of {@link org.apache.ignite.spi.checkpoint.CheckpointSpi}. + * @param cpSpi Fully configured instance of {@link CheckpointSpi}. * @see IgniteConfiguration#getCheckpointSpi() */ public void setCheckpointSpi(CheckpointSpi... cpSpi) { @@ -1358,7 +1375,7 @@ public class IgniteConfiguration { /** * Should return fully configured failover SPI implementation. If not provided, - * {@link org.apache.ignite.spi.failover.always.AlwaysFailoverSpi} will be used. + * {@link AlwaysFailoverSpi} will be used. * * @return Grid failover SPI implementation or {@code null} to use default implementation. */ @@ -1367,9 +1384,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.failover.FailoverSpi}. + * Sets fully configured instance of {@link FailoverSpi}. * - * @param failSpi Fully configured instance of {@link org.apache.ignite.spi.failover.FailoverSpi} or + * @param failSpi Fully configured instance of {@link FailoverSpi} or * {@code null} if no SPI provided. * @see IgniteConfiguration#getFailoverSpi() */ @@ -1379,7 +1396,7 @@ public class IgniteConfiguration { /** * Should return fully configured load balancing SPI implementation. If not provided, - * {@link org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi} will be used. + * {@link RoundRobinLoadBalancingSpi} will be used. * * @return Grid load balancing SPI implementation or {@code null} to use default implementation. */ @@ -1420,9 +1437,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instance of {@link org.apache.ignite.spi.loadbalancing.LoadBalancingSpi}. + * Sets fully configured instance of {@link LoadBalancingSpi}. * - * @param loadBalancingSpi Fully configured instance of {@link org.apache.ignite.spi.loadbalancing.LoadBalancingSpi} or + * @param loadBalancingSpi Fully configured instance of {@link LoadBalancingSpi} or * {@code null} if no SPI provided. * @see IgniteConfiguration#getLoadBalancingSpi() */ @@ -1431,9 +1448,9 @@ public class IgniteConfiguration { } /** - * Sets fully configured instances of {@link org.apache.ignite.spi.swapspace.SwapSpaceSpi}. + * Sets fully configured instances of {@link SwapSpaceSpi}. * - * @param swapSpaceSpi Fully configured instances of {@link org.apache.ignite.spi.swapspace.SwapSpaceSpi} or + * @param swapSpaceSpi Fully configured instances of {@link SwapSpaceSpi} or * <tt>null</tt> if no SPI provided. * @see IgniteConfiguration#getSwapSpaceSpi() */ @@ -1443,7 +1460,7 @@ public class IgniteConfiguration { /** * Should return fully configured swap space SPI implementation. If not provided, - * {@link org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi} will be used. + * {@link FileSwapSpaceSpi} will be used. * <p> * Note that user can provide one or multiple instances of this SPI (and select later which one * is used in a particular context). @@ -1552,6 +1569,20 @@ public class IgniteConfiguration { } /** + * Gets configuration (descriptors) for all client caches. + * + * @return Client cache configurations. + */ + public ClientCacheConfiguration[] getClientCacheConfiguration() { + return clientCacheCfg; + } + + @SuppressWarnings({"ZeroLengthArrayAllocation"}) + public void setClientCacheConfiguration(ClientCacheConfiguration... clientCacheCfg) { + this.clientCacheCfg = clientCacheCfg == null ? new ClientCacheConfiguration[0] : clientCacheCfg; + } + + /** * Gets flag indicating whether cache sanity check is enabled. If enabled, then Ignite * will perform the following checks and throw an exception if check fails: * <ul> @@ -1602,7 +1633,7 @@ public class IgniteConfiguration { } /** - * Sets array of event types, which will be recorded by {@link GridEventStorageManager#record(org.apache.ignite.events.Event)}. + * Sets array of event types, which will be recorded by {@link GridEventStorageManager#record(Event)}. * Note, that either the include event types or the exclude event types can be established. * * @param inclEvtTypes Include event types. @@ -1817,7 +1848,7 @@ public class IgniteConfiguration { * Each listener is mapped to array of event types. * * @return Pre-configured event listeners map. - * @see org.apache.ignite.events.EventType + * @see EventType */ public Map<IgnitePredicate<? extends Event>, int[]> getLocalEventListeners() { return lsnrs; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1cd95ae6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java index 94ae1fa..8cd51e9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAttributes.java @@ -36,172 +36,24 @@ import static org.apache.ignite.cache.CacheMode.*; * <p> * This class contains information on a single cache configured on some node. */ -public class GridCacheAttributes implements Externalizable { +public class GridCacheAttributes implements Serializable { /** */ private static final long serialVersionUID = 0L; - /** Cache name. */ - private String name; - - /** Cache mode. */ - private CacheMode cacheMode; - - /** Cache atomicity mode. */ - private CacheAtomicityMode atomicityMode; - - /** Default time to live for cache entries. */ - private long ttl; - - /** Flag indicating whether eviction is synchronized. */ - private boolean evictSync; - - /** Flag indicating whether eviction is synchronized with near nodes. */ - private boolean evictNearSync; - - /** Maximum eviction overflow ratio. */ - private float evictMaxOverflowRatio; - - /** Default query timeout. */ - private long dfltQryTimeout; - - /** Default lock timeout. */ - private long dfltLockTimeout; - - /** Flag indicating if cached values should be additionally stored in serialized form. */ - private boolean storeValBytes; - - /** Cache preload mode. */ - private CachePreloadMode preloadMode; - - /** Partitioned cache mode. */ - private CacheDistributionMode partDistro; - - /** Preload batch size. */ - private int preloadBatchSize; - - /** Synchronization mode. */ - private CacheWriteSynchronizationMode writeSyncMode; - - /** Flag indicating whether Ignite should use swap storage by default. */ - protected boolean swapEnabled; - - /** Flag indicating whether query indexing is enabled. */ - private boolean qryIdxEnabled; - - /** Flag indicating whether Ignite should use write-behind behaviour for the cache store. */ - private boolean writeBehindEnabled; - - /** Maximum size of write-behind cache. */ - private int writeBehindFlushSize; - - /** Write-behind flush frequency in milliseconds. */ - private long writeBehindFlushFreq; - - /** Flush thread count for write-behind cache store. */ - private int writeBehindFlushThreadCnt; - - /** Maximum batch size for write-behind cache store. */ - private int writeBehindBatchSize; - - /** Name of SPI to use for indexing. */ - private String indexingSpiName; - - /** Cache affinity class name. */ - private String affClsName; - - /** Affinity mapper class name. */ - private String affMapperClsName; - - /** */ - private boolean affInclNeighbors; - - /** */ - private int affKeyBackups = -1; - - /** */ - private String affHashIdRslvrClsName; - - /** */ - private int affPartsCnt; - - /** Eviction filter class name. */ - private String evictFilterClsName; - - /** Eviction policy class name. */ - private String evictPlcClsName; - - /** Near eviction policy class name. */ - private String nearEvictPlcClsName; + /** Cache configuration. */ + private CacheConfiguration ccfg; /** Cache store class name. */ private String storeClsName; - /** Transaction Manager lookup class name. */ - private String tmLookupClsName; - - /** Store read-through flag. */ - private boolean readThrough; - - /** Store write-through flag. */ - private boolean writeThrough; - - /** Store load previous value flag. */ - private boolean loadPrevVal; - /** * @param cfg Cache configuration. * @param store Cache store. */ public GridCacheAttributes(CacheConfiguration cfg, @Nullable CacheStore<?, ?> store) { - atomicityMode = cfg.getAtomicityMode(); - cacheMode = cfg.getCacheMode(); - dfltLockTimeout = cfg.getDefaultLockTimeout(); - dfltQryTimeout = cfg.getDefaultQueryTimeout(); - evictMaxOverflowRatio = cfg.getEvictMaxOverflowRatio(); - evictNearSync = cfg.isEvictNearSynchronized(); - evictSync = cfg.isEvictSynchronized(); - indexingSpiName = cfg.getIndexingSpiName(); - loadPrevVal = cfg.isLoadPreviousValue(); - name = cfg.getName(); - partDistro = GridCacheUtils.distributionMode(cfg); - preloadBatchSize = cfg.getPreloadBatchSize(); - preloadMode = cfg.getPreloadMode(); - qryIdxEnabled = cfg.isQueryIndexEnabled(); - readThrough = cfg.isReadThrough(); - storeValBytes = cfg.isStoreValueBytes(); - swapEnabled = cfg.isSwapEnabled(); - ttl = cfg.getDefaultTimeToLive(); - writeBehindBatchSize = cfg.getWriteBehindBatchSize(); - writeBehindEnabled = cfg.isWriteBehindEnabled(); - writeBehindFlushFreq = cfg.getWriteBehindFlushFrequency(); - writeBehindFlushSize = cfg.getWriteBehindFlushSize(); - writeBehindFlushThreadCnt = cfg.getWriteBehindFlushThreadCount(); - writeSyncMode = cfg.getWriteSynchronizationMode(); - writeThrough = cfg.isWriteThrough(); - - affMapperClsName = className(cfg.getAffinityMapper()); - - affKeyBackups = cfg.getBackups(); - - CacheAffinityFunction aff = cfg.getAffinity(); - - if (aff != null) { - if (aff instanceof CacheRendezvousAffinityFunction) { - CacheRendezvousAffinityFunction aff0 = (CacheRendezvousAffinityFunction) aff; - - affInclNeighbors = aff0.isExcludeNeighbors(); - affHashIdRslvrClsName = className(aff0.getHashIdResolver()); - } - - affPartsCnt = aff.partitions(); - affClsName = className(aff); - } - - evictFilterClsName = className(cfg.getEvictionFilter()); - evictPlcClsName = className(cfg.getEvictionPolicy()); - nearEvictPlcClsName = className(cfg.getNearEvictionPolicy()); + ccfg = cfg; + storeClsName = className(store); - tmLookupClsName = cfg.getTransactionManagerLookupClassName(); } /** @@ -212,16 +64,25 @@ public class GridCacheAttributes implements Externalizable { } /** + * @return Cache configuration. + */ + public CacheConfiguration configuration() { + return ccfg; + } + + /** * @return Cache name. */ public String cacheName() { - return name; + return ccfg.getName(); } /** * @return Cache mode. */ public CacheMode cacheMode() { + CacheMode cacheMode = ccfg.getCacheMode(); + return cacheMode != null ? cacheMode : DFLT_CACHE_MODE; } @@ -229,6 +90,8 @@ public class GridCacheAttributes implements Externalizable { * @return Cache atomicity mode. */ public CacheAtomicityMode atomicityMode() { + CacheAtomicityMode atomicityMode = ccfg.getAtomicityMode(); + return atomicityMode != null ? atomicityMode : DFLT_CACHE_ATOMICITY_MODE; } @@ -236,8 +99,7 @@ public class GridCacheAttributes implements Externalizable { * @return {@code True} if near cache is enabled. */ public boolean nearCacheEnabled() { - return cacheMode() != LOCAL && - (partDistro == NEAR_PARTITIONED || partDistro == NEAR_ONLY); + return cacheMode() != LOCAL && ccfg.isNearEnabled(); } /** @@ -249,6 +111,10 @@ public class GridCacheAttributes implements Externalizable { if (cacheMode() == LOCAL) return true; + // TODO IGNITE-45 affinity node detection. + + CacheDistributionMode partDistro = ccfg.getDistributionMode(); + return partDistro == PARTITIONED_ONLY || partDistro == NEAR_PARTITIONED; } @@ -256,70 +122,78 @@ public class GridCacheAttributes implements Externalizable { * @return Preload mode. */ public CachePreloadMode cachePreloadMode() { - return preloadMode; + return ccfg.getPreloadMode(); } /** * @return Affinity class name. */ public String cacheAffinityClassName() { - return affClsName; + return className(ccfg.getAffinity()); } /** * @return Affinity mapper class name. */ public String cacheAffinityMapperClassName() { - return affMapperClsName; + return className(ccfg.getAffinityMapper()); } /** * @return Affinity include neighbors. */ public boolean affinityIncludeNeighbors() { - return affInclNeighbors; + CacheAffinityFunction aff = ccfg.getAffinity(); + + return aff instanceof CacheRendezvousAffinityFunction + && !((CacheRendezvousAffinityFunction)aff).isExcludeNeighbors(); } /** * @return Affinity key backups. */ public int affinityKeyBackups() { - return affKeyBackups; + return ccfg.getBackups(); } /** * @return Affinity partitions count. */ public int affinityPartitionsCount() { - return affPartsCnt; + return ccfg.getAffinity().partitions(); } /** * @return Affinity hash ID resolver class name. */ public String affinityHashIdResolverClassName() { - return affHashIdRslvrClsName; + CacheAffinityFunction aff = ccfg.getAffinity(); + + if (aff instanceof CacheRendezvousAffinityFunction) + return className(((CacheRendezvousAffinityFunction)aff).getHashIdResolver()); + + return null; } /** * @return Eviction filter class name. */ public String evictionFilterClassName() { - return evictFilterClsName; + return className(ccfg.getEvictionFilter()); } /** * @return Eviction policy class name. */ public String evictionPolicyClassName() { - return evictPlcClsName; + return className(ccfg.getEvictionPolicy()); } /** * @return Near eviction policy class name. */ public String nearEvictionPolicyClassName() { - return nearEvictPlcClsName; + return className(ccfg.getNearEvictionPolicy()); } /** @@ -333,14 +207,14 @@ public class GridCacheAttributes implements Externalizable { * @return Transaction manager lookup class name. */ public String transactionManagerLookupClassName() { - return tmLookupClsName; + return ccfg.getTransactionManagerLookupClassName(); } /** * @return {@code True} if swap enabled. */ public boolean swapEnabled() { - return swapEnabled; + return ccfg.isSwapEnabled(); } @@ -348,224 +222,140 @@ public class GridCacheAttributes implements Externalizable { * @return Default time to live for cache entries. */ public long defaultTimeToLive() { - return ttl; + return ccfg.getDefaultTimeToLive(); } /** * @return Flag indicating whether eviction is synchronized. */ public boolean evictSynchronized() { - return evictSync; + return ccfg.isEvictSynchronized(); } /** * @return Flag indicating whether eviction is synchronized with near nodes. */ public boolean evictNearSynchronized() { - return evictNearSync; + return ccfg.isEvictNearSynchronized(); } /** * @return Maximum eviction overflow ratio. */ public float evictMaxOverflowRatio() { - return evictMaxOverflowRatio; + return ccfg.getEvictMaxOverflowRatio(); } /** * @return Partitioned cache mode. */ public CacheDistributionMode partitionedTaxonomy() { - return partDistro; + return ccfg.getDistributionMode(); } /** * @return Default query timeout. */ public long defaultQueryTimeout() { - return dfltQryTimeout; + return ccfg.getDefaultQueryTimeout(); } /** * @return Default lock timeout. */ public long defaultLockTimeout() { - return dfltLockTimeout; + return ccfg.getDefaultLockTimeout(); } /** * @return Flag indicating if cached values should be additionally stored in serialized form. */ public boolean storeValueBytes() { - return storeValBytes; + return ccfg.isStoreValueBytes(); } /** * @return Preload batch size. */ public int preloadBatchSize() { - return preloadBatchSize; + return ccfg.getPreloadBatchSize(); } /** * @return Synchronization mode. */ public CacheWriteSynchronizationMode writeSynchronization() { - return writeSyncMode; + return ccfg.getWriteSynchronizationMode(); } /** * @return Flag indicating whether query indexing is enabled. */ public boolean queryIndexEnabled() { - return qryIdxEnabled; + return ccfg.isQueryIndexEnabled(); } /** * @return Flag indicating whether read-through behaviour is enabled. */ public boolean readThrough() { - return readThrough; + return ccfg.isReadThrough(); } /** * @return Flag indicating whether read-through behaviour is enabled. */ public boolean writeThrough() { - return writeThrough; + return ccfg.isWriteThrough(); } /** * @return Flag indicating whether old value is loaded from store for cache operation. */ public boolean loadPreviousValue() { - return loadPrevVal; + return ccfg.isLoadPreviousValue(); } /** * @return Flag indicating whether Ignite should use write-behind behaviour for the cache store. */ public boolean writeBehindEnabled() { - return writeBehindEnabled; + return ccfg.isWriteBehindEnabled(); } /** * @return Maximum size of write-behind cache. */ public int writeBehindFlushSize() { - return writeBehindFlushSize; + return ccfg.getWriteBehindFlushSize(); } /** * @return Write-behind flush frequency in milliseconds. */ public long writeBehindFlushFrequency() { - return writeBehindFlushFreq; + return ccfg.getWriteBehindFlushFrequency(); } /** * @return Flush thread count for write-behind cache store. */ public int writeBehindFlushThreadCount() { - return writeBehindFlushThreadCnt; + return ccfg.getWriteBehindFlushThreadCount(); } /** * @return Maximum batch size for write-behind cache store. */ public int writeBehindBatchSize() { - return writeBehindBatchSize; + return ccfg.getWriteBehindBatchSize(); } /** * @return Name of SPI to use for indexing. */ public String indexingSpiName() { - return indexingSpiName; - } - - /** {@inheritDoc} */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - U.writeEnum(out, atomicityMode); - U.writeEnum(out, cacheMode); - out.writeLong(dfltLockTimeout); - out.writeLong(dfltQryTimeout); - out.writeFloat(evictMaxOverflowRatio); - out.writeBoolean(evictNearSync); - out.writeBoolean(evictSync); - U.writeString(out, indexingSpiName); - out.writeBoolean(loadPrevVal); - U.writeString(out, name); - U.writeEnum(out, partDistro); - out.writeInt(preloadBatchSize); - U.writeEnum(out, preloadMode); - out.writeBoolean(qryIdxEnabled); - out.writeBoolean(readThrough); - out.writeBoolean(storeValBytes); - out.writeBoolean(swapEnabled); - out.writeLong(ttl); - out.writeInt(writeBehindBatchSize); - out.writeBoolean(writeBehindEnabled); - out.writeLong(writeBehindFlushFreq); - out.writeInt(writeBehindFlushSize); - out.writeInt(writeBehindFlushThreadCnt); - U.writeEnum(out, writeSyncMode); - out.writeBoolean(writeThrough); - - U.writeString(out, affClsName); - U.writeString(out, affMapperClsName); - out.writeBoolean(affInclNeighbors); - out.writeInt(affKeyBackups); - out.writeInt(affPartsCnt); - U.writeString(out, affHashIdRslvrClsName); - - U.writeString(out, evictFilterClsName); - U.writeString(out, evictPlcClsName); - U.writeString(out, nearEvictPlcClsName); - U.writeString(out, storeClsName); - U.writeString(out, tmLookupClsName); - } - - /** {@inheritDoc} */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - atomicityMode = CacheAtomicityMode.fromOrdinal(in.readByte()); - cacheMode = CacheMode.fromOrdinal(in.readByte()); - dfltLockTimeout = in.readLong(); - dfltQryTimeout = in.readLong(); - evictMaxOverflowRatio = in.readFloat(); - evictNearSync = in.readBoolean(); - evictSync = in.readBoolean(); - indexingSpiName = U.readString(in); - loadPrevVal = in.readBoolean(); - name = U.readString(in); - partDistro = CacheDistributionMode.fromOrdinal(in.readByte()); - preloadBatchSize = in.readInt(); - preloadMode = CachePreloadMode.fromOrdinal(in.readByte()); - qryIdxEnabled = in.readBoolean(); - readThrough = in.readBoolean(); - storeValBytes = in.readBoolean(); - swapEnabled = in.readBoolean(); - ttl = in.readLong(); - writeBehindBatchSize = in.readInt(); - writeBehindEnabled = in.readBoolean(); - writeBehindFlushFreq = in.readLong(); - writeBehindFlushSize = in.readInt(); - writeBehindFlushThreadCnt = in.readInt(); - writeSyncMode = CacheWriteSynchronizationMode.fromOrdinal(in.readByte()); - writeThrough = in.readBoolean(); - - affClsName = U.readString(in); - affMapperClsName = U.readString(in); - affInclNeighbors = in.readBoolean(); - affKeyBackups = in.readInt(); - affPartsCnt = in.readInt(); - affHashIdRslvrClsName = U.readString(in); - - evictFilterClsName = U.readString(in); - evictPlcClsName = U.readString(in); - nearEvictPlcClsName = U.readString(in); - storeClsName = U.readString(in); - tmLookupClsName = U.readString(in); + return ccfg.getIndexingSpiName(); } /**