[ http://issues.apache.org/jira/browse/JCR-692?page=comments#action_12461395 ] Ted Leung commented on JCR-692: -------------------------------
yeah fair enough, unfortunately I have been "told" to use the file system as my manager doesn't believe databases are good for data storage.... Second problem is we have an existing system with 2 gigs worth of entries, so I think the easiest thing for me to do right now is convert the directories to a WW/XX/YY/ZZ from WWXX/YYZZ and make analtered version of the xml manager. I just thought I would point this out in case anyone else ever ran into this problem. > 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
