[infinispan-issues] [JBoss JIRA] Commented: (ISPN-1300) Reduce number of files generated by FileCacheStore
Manik Surtani (JIRA)
jira-events at lists.jboss.org
Wed Aug 3 09:20:06 EDT 2011
[ https://issues.jboss.org/browse/ISPN-1300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12618458#comment-12618458 ]
Manik Surtani commented on ISPN-1300:
-------------------------------------
What I am tempted to do here is for this release, to hard-code the file mask to 0xfffffc00, as you suggested. And in 5.1.0, to make this configurable. It would mean that people migrating apps from 5.0.0.CRx to 5.0.0.FINAL will have corrupt data though, so I think we should bypass this with a -DskipFileMask flag for folks migrating.
> Reduce number of files generated by FileCacheStore
> --------------------------------------------------
>
> Key: ISPN-1300
> URL: https://issues.jboss.org/browse/ISPN-1300
> Project: Infinispan
> Issue Type: Enhancement
> Components: Configuration, Loaders and Stores
> Affects Versions: 5.0.0.CR8
> Reporter: Robert Stupp
> Assignee: Manik Surtani
>
> The current implementation of FileCacheStore creates one file for each hash key - which results in up to 4.2 billion files (2^32).
> It should limit the number of files to
> a) improve performance of purge
> b) reduce number of open file handles (system resources)
> c) reduce number of Java objects/heap (JVM resources)
> d) improve performance
> The implementation allows us to do so.
> Only 4 lines of code are necessary in FileCacheStore implementation:
> private int hashKeyMask = 0xfffffc00; // TODO should get a configuration entry
> @Override
> protected Integer getLockFromKey(Object key) {
> return Integer.valueOf(key.hashCode() & hashKeyMask);
> }
> This reduces the number of files to 2^22 = 4,194,304 files. Since each application and each cache store has different semantics the hasKeyMask value should be configurable - best would be to configure the number of bits.
> Side effect: If someone changes the FileCacheStore hasKeyMask, the whole cache store becomes unuseable. So I opened another enhancement ...
> Note: This implementation should be used in a different class (e.g. extend FileCacheStore) because it makes existing file cache stores unusable.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the infinispan-issues
mailing list