Hello! As this error points out, you can't have near cache with same name as already existing regular cache.
Regards, -- Ilya Kasnacheev пн, 29 апр. 2019 г. в 13:52, Prasad Bhalerao <[email protected]>: > Hi, > > I am getting "*Failed to start near cache* exception" while starting near > cache only on client node. Near cache is not configured on server nodes. > > Cache configuration on server is node is as follows: > > private CacheConfiguration agCacheCfg() { > > CacheConfiguration agCacheCfg = new > CacheConfiguration<>(CacheName.AG_CACHE.name()); > agCacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL); > agCacheCfg.setWriteThrough(ENABLE_WRITE_THROUGH); > agCacheCfg.setReadThrough(false); > agCacheCfg.setRebalanceMode(CacheRebalanceMode.ASYNC); > > agCacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); > agCacheCfg.setBackups(1); > agCacheCfg.setIndexedTypes(DefaultDataAffinityKey.class, AgData.class); > Factory<AgDataCacheStore> storeFactory = > FactoryBuilder.factoryOf(AgDataCacheStore.class); > agCacheCfg.setCacheStoreFactory(storeFactory); > > agCacheCfg.setCacheStoreSessionListenerFactories(cacheStoreSessionListenerFactory()); > agCacheCfg.setSqlIndexMaxInlineSize(100); > RendezvousAffinityFunction affinityFunction = new > RendezvousAffinityFunction(); > affinityFunction.setExcludeNeighbors(true); > agCacheCfg.setAffinity(affinityFunction); > agCacheCfg.setStatisticsEnabled(true); > > > return agCacheCfg; > } > > > I am using following code to get the Near cache on client node only for > configured cache names. > Can some please help me with this? > > protected IgniteCache<K, T> cache() { > String cacheName = getCacheName(); > if (this.cache == null) { > //We are configuring few caches only on client node for fast lookup > during validations. > if (ignite.configuration().isClientMode() && > NearCacheName.isNearCache(cacheName)) { > NearCacheConfiguration<K, T> nearCfg = new NearCacheConfiguration<>(); > nearCfg.setNearEvictionPolicyFactory(new > LruEvictionPolicyFactory<>(10_000)); > this.cache = ignite.createNearCache(cacheName, nearCfg); > } else { > this.cache = ignite.cache(cacheName); > } > } > return this.cache; > } > > > *EXCEPTION:* > > *javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: > Failed to start near cache (a cache with the same name without near cache is > already started)* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > * at > org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1303) > at > org.apache.ignite.internal.IgniteKernal.createNearCache(IgniteKernal.java:2960) > at > org.apache.ignite.IgniteSpringBean.createNearCache(IgniteSpringBean.java:382) > at > com.qualys.agms.grid.dao.AbstractDataGridDAO.cache(AbstractDataGridDAO.java:112) > at > com.qualys.agms.grid.dao.AbstractDataGridDAO.putData(AbstractDataGridDAO.java:47) > at > com.qualys.agms.grid.dao.AbstractDataGridDAO.putData(AbstractDataGridDAO.java:31) > at > com.qualys.agms.grid.dataservice.DefaultDataGridService.putData(DefaultDataGridService.java:27) > at > com.qualys.agms.grid.dataservice.DefaultDataGridService.putData(DefaultDataGridService.java:10) > at com.qualys.agms.IgniteClientTester.testGet(IgniteClientTester.java:382) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) > at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) > at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) > at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) > at > org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) > at > org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) > at > org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) > at > org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) > at > org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) > at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at > org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) > at > org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at > org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at > org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at > org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at > org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at > org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) > at > org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) > at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at > org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) > at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at > com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) > at > com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) > at > com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) > at > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)Caused > by: class org.apache.ignite.IgniteCheckedException: Failed to start near > cache (a cache with the same name without near cache is already started) at > org.apache.ignite.internal.IgniteKernal.checkNearCacheStarted(IgniteKernal.java:3019) > at > org.apache.ignite.internal.IgniteKernal.createNearCache(IgniteKernal.java:2955) > ... 37 more* > > > Thanks, > Prasad > > On Sat, Apr 20, 2019 at 9:05 AM Denis Magda <[email protected]> wrote: > >> Hi Prasad, >> >> It's required to define a NearCacheConfiguration on a node you'd like to >> have it one. Use one of the approaches defined in the docs: >> https://apacheignite.readme.io/docs/near-caches >> >> Near caches can be created directly on *client* nodes by passing >> NearCacheConfiguration to the >> Ignite.createNearCache(NearCacheConfiguration) or >> Ignite.getOrCreateNearCache(NearCacheConfiguration) methods. Use the >> Ignite.getOrCreateCache(CacheConfiguration, >> NearCacheConfiguration) method if you need to both start a distributed >> cache dynamically and create a near cache for it. >> >> - >> Denis >> >> >> On Fri, Apr 19, 2019 at 5:53 AM Prasad Bhalerao < >> [email protected]> wrote: >> >>> Hi, >>> >>> Is there any to enable near cache only on client nodes? >>> >>> I am using partitioned cache and using colocation to submit the ignite >>> jobs. But in my code I do few lookups on client node to validate the data. >>> To improve this lookup performance I want to enable near cache. >>> >>> I saw the example on GitHub and in ignite docs. But I am still >>> struggling to configure near cache on client nodes only. >>> >>> This my Ignite configuration on client node. All the cache >>> configurations are defined only on ignite server nodes. >>> >>> Can some please tell me where to include near cache configuration in >>> following config? >>> >>> private IgniteConfiguration getIgniteConfiguration(IgniteSpringBean ignite) >>> { >>> >>> String[] hosts = appConfigProperties.getHosts().split(","); >>> TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(); >>> ipFinder.setAddresses(Arrays.asList(hosts)); >>> >>> TcpDiscoverySpi discoSpi = new TcpDiscoverySpi(); >>> discoSpi.setIpFinder(ipFinder); >>> >>> IgniteConfiguration cfg = new IgniteConfiguration(); >>> cfg.setDiscoverySpi(discoSpi); >>> cfg.setIgniteInstanceName("springDataNode"); >>> cfg.setPeerClassLoadingEnabled(false); >>> cfg.setRebalanceThreadPoolSize(4); >>> cfg.setClientFailureDetectionTimeout(failureDetectionTimeout); >>> //cfg.setLifecycleBeans(new IgniteLifeCycleBean()); >>> cfg.setClientMode(true); >>> HashMap<String, String> attributeMap = new HashMap<>(); >>> attributeMap.put(NODE_TYPE,NODE_TYPE_WEB); >>> cfg.setUserAttributes(attributeMap); >>> >>> return cfg; >>> } >>> >>> >>> >>> Thanks, >>> Prasad >>> >>
