[JBoss JIRA] Created: (ISPN-1115) Fine-grained AtomicMaps
by Manik Surtani (JIRA)
Fine-grained AtomicMaps
-----------------------
Key: ISPN-1115
URL: https://issues.jboss.org/browse/ISPN-1115
Project: Infinispan
Issue Type: Feature Request
Components: Core API
Affects Versions: 5.0.0.FINAL
Reporter: Manik Surtani
Assignee: Manik Surtani
Fix For: 5.1.0.BETA1, 5.1.0.Final
Atomic Maps are locked by acquiring a single lock on the entire map and this causes concurrency issues for certain use cases. This JIRA is to allow for concurrent modifications of keys within the AtomicMap, provided the keys do not overlap.
The design is as follows:
* {{AtomicMapLookup}} gets a WL on the {{AtomicMap}}'s key (AMK) when creating and removing a new AtomicMap
* Modifications to the AtomicMap (which go through the {{AtomicMapProxy}}) do _not_ acquire a WL on AMK. Instead,
* {{AdvancedCache}} exposes a new API, {{applyDelta(K deltaAwareValueKey, Delta delta, Object... locksToAcquire)}}
* {{AtomicMapProxy}} makes changes by calling {{applyDelta}} and passing in the key within the map that is being modified, along with the delta to apply.
* The implementation could offer lock pooling to prevent a large number of locks being created for AtomicMaps with a large number of entries
This can then be used by other {{Delta}}/{{DeltaAware}} types in future as well, perhaps JSON documents, etc.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] Created: (ISPN-439) Define and implement configuration file backward and forward compatibility policy
by Vladimir Blagojevic (JIRA)
Define and implement configuration file backward and forward compatibility policy
---------------------------------------------------------------------------------
Key: ISPN-439
URL: https://jira.jboss.org/jira/browse/ISPN-439
Project: Infinispan
Issue Type: Task
Affects Versions: 4.1.0.BETA1
Reporter: Vladimir Blagojevic
Assignee: Manik Surtani
Fix For: 4.1.0.CR1
Backward compatibility:
Process any previous version configuration file from the same minor version. For example, Infinispan release 4.2 should process configuration file produced for version 4.1 without any configuration file changes or any other adjustments. For configuration options present in 4.2, but not in 4.1 assume default values. However, Infinispan version 5.0 is not required to process configuration files from previous major versions, i.e 4.0...4.x.
Forward compatibility.
Do not process any forward version configuration file. For example, Infinispan release 4.1, give configuration file input from any succeeding versions (i.e 4.2...4.x, 5.x) would simply fail outright with proper error message.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] Created: (ISPN-658) DistributionManager not considerate of cache state changes
by Paul Ferraro (JIRA)
DistributionManager not considerate of cache state changes
----------------------------------------------------------
Key: ISPN-658
URL: https://jira.jboss.org/browse/ISPN-658
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 4.2.0.ALPHA2
Reporter: Paul Ferraro
Assignee: Manik Surtani
Considering a cache manager with 2 caches in DIST mode (C1 and C2) deployed on 2 nodes (N1 and N2).
Currently, the DistributionManager does not properly handle the following scenarios:
1. Stop C1 on N1. This ought to trigger a rehash for the C1 cache. Currently, rehashing is only triggered via view change. Failure to rehash on stopping of a cache can inadvertently cause data loss, if all backups of a given cache entry have stopped.
2. A new DIST mode cache, C3, is started on N2. If N1 is the coordinator, the join request sent to N1 will get stuck in an infinite loop, since the cache manager on N1 does not contain a C3 cache.
3. Less critically, a new node, N3 is started. It does not yet have a C1 or C2 cache, though it's cache manager is started. This prematurely triggers a rehash of C1 and C2, even though there are no new caches instances to consider.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] Created: (ISPN-1190) ModuleProperties could cause memory leaks
by Galder Zamarreño (JIRA)
ModuleProperties could cause memory leaks
-----------------------------------------
Key: ISPN-1190
URL: https://issues.jboss.org/browse/ISPN-1190
Project: Infinispan
Issue Type: Bug
Reporter: Galder Zamarreño
Assignee: Manik Surtani
Fix For: 5.0.0.CR7
ModuleProperties can create class memory leaks, because it contains static collections with references to user defined class instances:
{code}private static Map<Byte,Class<? extends ModuleCommandInitializer>> commandInitializers;
private static Collection<Class<? extends ReplicableCommand>> moduleCommands;{code}
Also, the following two collections could contain references to instances user defined classes in static collections:
{code}private static Map<String,ModuleProperties> moduleProperties;
private static Map<Byte,ModuleCommandFactory> commandFactories;{code}
These collections should not be static, and their clearing should be guaranteed at stoppage time. Even if there's any issues at stoppage time, they should not leak and so any collections containing Class instances should be weakly referenced.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 3 months
[JBoss JIRA] Created: (ISPN-434) Creating a new distributed cache on a non-coordinator node causes rehashing to hang
by Manik Surtani (JIRA)
Creating a new distributed cache on a non-coordinator node causes rehashing to hang
-----------------------------------------------------------------------------------
Key: ISPN-434
URL: https://jira.jboss.org/jira/browse/ISPN-434
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 4.1.0.ALPHA3
Reporter: Manik Surtani
Assignee: Manik Surtani
Fix For: 4.1.0.CR1, 4.1.0.Final
If a cluster is already formed (perhaps due to another cache instance being started, such as a replicated one) and subsequently a distributed cache is created and started, first on a non-coordinator node, the startup sequence will hang until the cache is also started on the coordinator.
E.g.,
1. C1 (coord) starts replicated cache
2. C2 starts replicated cache
3. C2 starts distributed cache
4. C1 starts distributed cache
Step 3 will hang until step 4 completes. So unless these happen in different threads - on different servers - this rehash will hang.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 3 months
[JBoss JIRA] Created: (ISPN-1104) Upgrade to Scala 2.9.0.final
by Trustin Lee (JIRA)
Upgrade to Scala 2.9.0.final
----------------------------
Key: ISPN-1104
URL: https://issues.jboss.org/browse/ISPN-1104
Project: Infinispan
Issue Type: Task
Reporter: Trustin Lee
Assignee: Trustin Lee
Priority: Trivial
Fix For: 5.0.0.FINAL, 5.0.0.CR3
Scala 2.9.0.final has been released with various bug fixes and improvements. It's backward compatible as long as the code is recompiled, so I assume it's safe to upgrade and we should upgrade because people will be using Scala 2.9 when 5.0.0.Final is out.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 3 months
[JBoss JIRA] Created: (ISPN-1204) Allow to be DB schema independent
by Nicolas Filotto (JIRA)
Allow to be DB schema independent
---------------------------------
Key: ISPN-1204
URL: https://issues.jboss.org/browse/ISPN-1204
Project: Infinispan
Issue Type: Enhancement
Components: Loaders and Stores
Reporter: Nicolas Filotto
Assignee: Manik Surtani
The current code checks if a table exists thanks to con.getMetaData().getTables(...) which is totally DB schema dependent, your code allow us to specify the schema by prefixing the table name with the name of the schema in the config which is not really convenient in practice especially if we have a lot of config files. You could easily make your code fully DB schema independent by replacing the method org.infinispan.loaders.jdbc.TableManipulation.tableExists(Connection connection, String tableName) with this content:
{code}
public boolean tableExists(Connection connection, String tableName) {
assertNotNull(getTableName(), "table name is mandatory");
Statement stmt = null;
ResultSet trs = null;
try {
stmt = connection.createStatement();
trs = stmt.executeQuery("SELECT count(*) FROM " + tableName);
return trs.next();
}
catch (SQLException e) {
if (log.isTraceEnabled()) {
log.trace("SQLException occurs while checking the table " + tableName, e);
}
return false;
}
finally {
JdbcUtil.safeClose(trs);
JdbcUtil.safeClose(stmt);
}
}
{code}
I know that it is a much less elegant and standard approach but it allows to simplify so much the config that I think that it makes sense to at least think about at it more than one second. Be free to resolve it as won't fix if you don't find it relevant.
FYI: We use the same approach in our product (EXOJCR-1374) with JBC and we successfully tested it on Oracle, MySQL, MS SQL, PostgreSQL, DB2 and Sybase
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 3 months