[
https://issues.jboss.org/browse/ISPN-3152?page=com.atlassian.jira.plugin....
]
Marta Sedlakova commented on ISPN-3152:
---------------------------------------
Thanks Tristan, this workaround seems work fine.
LoadersConfigurationBuilder does not clear existing stores on read()
--------------------------------------------------------------------
Key: ISPN-3152
URL:
https://issues.jboss.org/browse/ISPN-3152
Project: Infinispan
Issue Type: Bug
Components: Configuration
Affects Versions: 5.2.1.Final
Reporter: Marta Sedlakova
Assignee: Tristan Tarrant
Fix For: 5.3.0.Final
Hello,
I am upgrading infinispan configuration and I have following problem:
In old configuration, we use:
Configuration config;
JdbmCacheStoreConfig storeConfig = new JdbmCacheStoreConfig();
storeConfig.setLocation(location);
storeConfig.setCacheLoaderClassName("org.infinispan.loaders.jdbm.JdbmCacheStore");
storeConfig.setFetchPersistentState(true);
storeConfig.setIgnoreModifications(false);
storeConfig.setPurgeOnStartup(false);
config = lc.addCacheLoader(storeConfig).build();
manager = new DefaultCacheManager(new GlobalConfiguration(), config);
Configuration c = manager.getDefaultConfiguration();
c.setEvictionMaxEntries(maxEntries);
c.setExpirationLifespan(lifespan);
manager.defineConfiguration(name, c);
And this works fine. Now I am updating to new configuration:
ConfigurationBuilder configuration = new ConfigurationBuilder();
configuration.invocationBatching().enable();
JdbmCacheStoreConfigurationBuilder builder = new
JdbmCacheStoreConfigurationBuilder(configuration.loaders());
builder.location(location).fetchPersistentState(true);
configuration.loaders().addStore(builder);
manager = new DefaultCacheManager(new GlobalConfigurationBuilder().build(),
configuration.build());
And I want to change some properties from previous default configuration for named
cache:
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.read(manager.getDefaultCacheConfiguration());
builder.eviction().maxEntries(maxEntries));
builder.expiration().lifespan(lifespan);
manager.defineConfiguration(name, builder.build());
Cache<String, Object> cache = manager.getCache(name);
cache.start();
But I got following exception:
org.infinispan.CacheException: Unable to invoke method public void
org.infinispan.loaders.CacheLoaderManagerImpl.start() on object of type
CacheLoaderManagerImpl
at org.infinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:205)
at
org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:883)
at
org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:654)
at
org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:643)
at
org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:546)
at org.infinispan.factories.ComponentRegistry.start(ComponentRegistry.java:199)
at org.infinispan.CacheImpl.start(CacheImpl.java:559)
at
org.infinispan.manager.DefaultCacheManager.wireAndStartCache(DefaultCacheManager.java:686)
at
org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:649)
at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:545)
at
eu.ysoft.cache.ifspn.replicator.IfspnReplicationBuffer.start(IfspnReplicationBuffer.java:117)
at eu.ysoft.cache.replicator.ReplicatorImpl.start(ReplicatorImpl.java:373)
at eu.ysoft.cache.replicator.ReplicatorImpl.start(ReplicatorImpl.java:233)
at
eu.ysoft.cache.ifspn.replicator.helpers.IfspnReplicationClient.start(IfspnReplicationClient.java:46)
at
eu.ysoft.cache.ifspn.replicator.functional.IfspnTestSimpleReplications.init(IfspnTestSimpleReplications.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:525)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:613)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:842)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1166)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.runWorkers(TestRunner.java:1178)
at org.testng.TestRunner.privateRun(TestRunner.java:757)
at org.testng.TestRunner.run(TestRunner.java:608)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1158)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1083)
at org.testng.TestNG.run(TestNG.java:999)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:203)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:174)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:111)
Caused by: org.infinispan.CacheException: Unable to start cache loaders
at
org.infinispan.loaders.CacheLoaderManagerImpl.start(CacheLoaderManagerImpl.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.infinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:203)
... 42 more
Caused by: java.lang.Exception: Invalid cache loader configuration!! Only ONE cache
loader may have fetchPersistentState set to true. Cache will not start!
at
org.infinispan.loaders.CacheLoaderManagerImpl.createCacheLoader(CacheLoaderManagerImpl.java:324)
at
org.infinispan.loaders.CacheLoaderManagerImpl.start(CacheLoaderManagerImpl.java:146)
... 47 more
I need some help how to solve this issue, when we were using the old deprecated
configuration, this configuration scenarion works.
Thanks
Marta
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira