[JBoss JIRA] (ISPN-1540) Refactor distribution interceptor
by Mircea Markus (Created) (JIRA)
Refactor distribution interceptor
---------------------------------
Key: ISPN-1540
URL: https://issues.jboss.org/browse/ISPN-1540
Project: Infinispan
Issue Type: Feature Request
Components: Distributed Cache
Reporter: Mircea Markus
Assignee: Mircea Markus
DistributionInterceptor, as it looks now is unnecessary complex. Before adding more functionality on top of it (i.e. ISPN-1539) it should be refactored:
- extract L1 logic into a different interceptor
- this would require moving the StateTransferLock logic into another interceptor as well
- now that we have separation between tx and non-tx caches, we can extract the remaining logic into TransactionalDistributionInterceptor and NonTransactional...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 9 months
[JBoss JIRA] (ISPN-1837) Add support for configuration file based configuration override
by William Burns (JIRA)
William Burns created ISPN-1837:
-----------------------------------
Summary: Add support for configuration file based configuration override
Key: ISPN-1837
URL: https://issues.jboss.org/browse/ISPN-1837
Project: Infinispan
Issue Type: Enhancement
Affects Versions: 5.1.0.FINAL
Reporter: William Burns
Assignee: Manik Surtani
I totally like the new configuration changes. However one thing that was available before was a way to allow for overrides of configuration to occur from multiple configuration files. This was available with the defineConfiguration method on the CacheManager.
This is how I was able to do this in the past and it worked great.
{code}
for (File file : files) {
InfinispanConfiguration readConfig = ...;
cacheManager.getDefaultConfiguration().applyOverrides(readConfig.parseDefaultConfiguration());
for (Entry<String, Configuration> entry : readConfig.parseNamedConfigurations().entrySet()) {
cacheManager.defineConfiguration(entry.getKey(), entry.getValue());
}
}
{code}
This ability was taken away and the replacement is to use the read method on the various ConfigurationBuilders. This works great for programmatic override of various values. However there is no easy way to do overrides based on a configuration file. This is due to the fact that the only way a user can get ConfigurationBuilder objects from a configuration file is with all the default values provided. Thus you are basically replacing a configuration instead of overriding it.
I wanted to propose a simple change to the Parser class so it can now also take a ConfigurationBuilderHolder so then a user can retain their own holder and pass it on to subsequent parse calls. This way only the values read from the parser will be set on the configuration builder objects.
With t his small change I am then able to do the following:
{code}
Parser parser = new Parser(Thread.currentThread().getContextClassLoader());
for (File file : files) {
parser.parse(file.getAbsolutePath(), holder);
}
{code}
Also a side note but the way the transport is handled right now kind of throws a wrench in this. I noticed that if the global section is provied if no transport is in the xml it will null out the transport in the configuration on the override. This can be problematic if the transport is defined in a starting xml file and later a different xml file may want to say add some additional externalizers or something (which we do) and then the transport will be set to null. Right now I am working around this by overriding the transport last, but would be nice if I didn't have to do that. I could also define an empty transport element in all of the xml files to workaround it as well.
The transport issue occurs because of line 1209 in the Parser class. I don't know if it can be changed without breaking something else and as such didn't include it in my pull request, but would be nice if this could also be changed.
{code}
if (!transportParsed) {
// make sure there is no "default" transport
builder.transport().transport(null);
}
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 9 months
[JBoss JIRA] (ISPN-1466) Async configuration tag affects communication between cache and HotRod client
by Martin Gencur (Created) (JIRA)
Async configuration tag affects communication between cache and HotRod client
-----------------------------------------------------------------------------
Key: ISPN-1466
URL: https://issues.jboss.org/browse/ISPN-1466
Project: Infinispan
Issue Type: Bug
Affects Versions: 5.1.0.ALPHA1
Reporter: Martin Gencur
Assignee: Manik Surtani
When using a REPL (replicated) cache with configuration tag <async useReplQueue="true" replQueueMaxElements="3" replQueueInterval="1000" />, HotRod client cannot see a cache entry which was just stored into a cache. The entry is visible not before the replication queue is flushed (either because of MaxElements limit or QueueInterval). I'll attach a testcase but here's a test snippet that fails at first assert:
{code}
@Test
public void testQueueSize() throws Exception {
RemoteCache<String, String> asyncCache1 = rcm1.getCache(asyncCacheSize);
RemoteCache<String, String> asyncCache2 = rcm2.getCache(asyncCacheSize);
asyncCache1.clear();
asyncCache1.put("k1", "v1");
assertTrue(null != asyncCache1.get("k1"));
assertTrue(null == asyncCache2.get("k2"));
asyncCache1.put("k2", "v2");
//k3 fills up the queue -> flush
asyncCache1.put("k3", "v3");
Thread.sleep(1000); //wait for the queue to be flushed
assertTrue(null != asyncCache1.get("k1"));
assertTrue(null != asyncCache2.get("k2"));
}
{code}
IMO when I have cache A and B in a cluster and the cache entry is stored into the cache A, it should be visible at A and not in B. After flushing the queue it should be visible also at B.
Here's the test:
https://svn.devel.redhat.com/repos/jboss-qa/edg/infinispan-functional-tes...
(to run it, one has to install infinispan-arquillian-container into local maven repository, set ISPN_HOME pointing to Infinispan distribution and run "mvn clean verify")
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 9 months