Yes, I found the issue. Actually it was in my Junit. I had accidently added following line in my junit case. This was starting the cache and I was trying to get it using my service call.
//final IgniteCache<Object, Object> cache = ignite.cache(CacheName.ASSET_GROUP_CACHE.name()); Thanks, Prasad On Mon, Apr 29, 2019 at 5:10 PM Ilya Kasnacheev <[email protected]> wrote: > 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 >>>> >>>
