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
>>>>
>>>

Reply via email to