[ http://issues.apache.org/jira/browse/JCR-692?page=comments#action_12461374 ] Tobias Bocanegra commented on JCR-692: --------------------------------------
use reiserfs :-) i would not use the XML persistence manager at all. it's one of the least performant and scalable. rather use derby. but of course, you can patch the persistence manager to create another directory layout, or even better, make it configurable. > XMLPersistenceManager fails after creating too many directories on linux > ------------------------------------------------------------------------ > > Key: JCR-692 > URL: http://issues.apache.org/jira/browse/JCR-692 > Project: Jackrabbit > Issue Type: Bug > Environment: linux (fedora core 5), ext3 fs, java1.6.0 > Reporter: Ted Leung > > When using the XMLPersistenceManager it creates a bunch of directories in > jackrabbit/home/version/data. Eventually I reach 32000 directories in the > data directory and subsequent writes fail. > I believe this is caused by XMLPersistenceManager.buildNodeFolderPath() > method where it does > if (cnt == 4 || cnt == 8) { > sb.append('/'); > } > This causes the subdirectories to be 4 characters, 0-f i.e. 16^4 which is > 65536, if what I'm seeing is correct, on linux ext3, it's limited to 32000 > entries. If the XMLPersistence manager used 2 or 3 characters this should fix > the problem, or if it were configurable it would also solve this (I think). > an > ls jackrabbit/home/version/data | wc -l > returns > 32001 > A stack trace for when this happens is as follows : > Caused by: javax.jcr.RepositoryException: failed to write node state: > da2cd5d1-9776-4dbe-a42b-842b0134dbfb: failed to write node state: > da2cd5d1-9776-4dbe-a42b-842b0134dbfb > at > org.apache.jackrabbit.core.version.AbstractVersionManager.createVersionHistory(AbstractVersionManager.java:181) > at > org.apache.jackrabbit.core.version.VersionManagerImpl$1.run(VersionManagerImpl.java:194) > at > org.apache.jackrabbit.core.version.VersionManagerImpl$DynamicESCFactory.doSourced(VersionManagerImpl.java:526) > at > org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHistory(VersionManagerImpl.java:191) > at > org.apache.jackrabbit.core.version.XAVersionManager.createVersionHistory(XAVersionManager.java:140) > at > org.apache.jackrabbit.core.ItemImpl.initVersionHistories(ItemImpl.java:754) > at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1166) > at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:805) > ... 166 more > Caused by: org.apache.jackrabbit.core.state.ItemStateException: failed to > write node state: da2cd5d1-9776-4dbe-a42b-842b0134dbfb > at > org.apache.jackrabbit.core.state.xml.XMLPersistenceManager.store(XMLPersistenceManager.java:579) > at > org.apache.jackrabbit.core.state.AbstractPersistenceManager.store(AbstractPersistenceManager.java:66) > at > org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:574) > at > org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:697) > at > org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:315) > at > org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:291) > at > org.apache.jackrabbit.core.version.AbstractVersionManager.createVersionHistory(AbstractVersionManager.java:174) > ... 173 more > Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to > create folder > /home/cms/pepsiaccess/jackrabbit/home/version/data/da2c/d5d1/97764dbea42b842b0134dbfb > at > org.apache.jackrabbit.core.fs.local.LocalFileSystem.createFolder(LocalFileSystem.java:208) > at > org.apache.jackrabbit.core.fs.BasedFileSystem.createFolder(BasedFileSystem.java:99) > at > org.apache.jackrabbit.core.fs.FileSystemResource.makeParentDirs(FileSystemResource.java:100) > at > org.apache.jackrabbit.core.state.xml.XMLPersistenceManager.store(XMLPersistenceManager.java:517) > ... 179 more -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
