[ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thomas Mueller reopened JCR-2870: --------------------------------- I believe this commit is causing a test failure: https://hudson.apache.org/hudson/job/Jackrabbit-trunk/org.apache.jackrabbit$jackrabbit-jca/1449/testReport/junit/org.apache.jackrabbit.jca.test/ConnectionFactoryTest/testTransactionSupport/ > Transient Repository cannot be used more than once when configured with > DataSources > ----------------------------------------------------------------------------------- > > Key: JCR-2870 > URL: https://issues.apache.org/jira/browse/JCR-2870 > Project: Jackrabbit Content Repository > Issue Type: Bug > Components: jackrabbit-core > Affects Versions: 2.1.2, 2.1.3, 2.2.0, 2.2.1 > Environment: WindowsXP, Linux, Oracle, Derby > Reporter: Chris Schmidt > Assignee: Jukka Zitting > Fix For: 2.2.4 > > Attachments: jackrabbit-transient-issue.zip, jcr-2870.patch > > > The TransientRepository cannot be used more than once when the repository is > configured with the DataSources construct. This has been verified with both > Oracle and Derby configurations. Once the TransientRepository closes for the > first time, the ConnectionFactory class sets a boolean value named closed to > 'true'. Thereafter, any use of the ConnectionFactory throws a runtime > exception. > The following stacktrace is thrown on the second attempt to utilize the > repository: > 2011-01-25 08:12:14 DatabaseFileSystem [ERROR] failed to initialize file > system > java.lang.IllegalStateException: this factory has already been closed > at > org.apache.jackrabbit.core.util.db.ConnectionFactory.sanityCheck(ConnectionFactory.java:213) > at > org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataBaseType(ConnectionFactory.java:134) > at > org.apache.jackrabbit.core.fs.db.DbFileSystem.getDataSource(DbFileSystem.java:228) > at > org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:190) > at > org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1057) > at > org.apache.jackrabbit.core.config.RepositoryConfig.getFileSystem(RepositoryConfig.java:892) > at > org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:284) > at > org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:602) > at > org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:179) > at > org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279) > at > org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) > ... > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115) > 2011-01-25 08:12:14 RepositoryImpl [ERROR] failed to start Repository: File > system initialization failure. > javax.jcr.RepositoryException: File system initialization failure. > at > org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1060) > at > org.apache.jackrabbit.core.config.RepositoryConfig.getFileSystem(RepositoryConfig.java:892) > at > org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:284) > at > org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:602) > at > org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:179) > at > org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279) > at > org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) > at > TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32) > at > TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26) > ... > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115) > Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to > initialize file system > at > org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:210) > at > org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1057) > ... 42 more > Caused by: java.lang.IllegalStateException: this factory has already been > closed > at > org.apache.jackrabbit.core.util.db.ConnectionFactory.sanityCheck(ConnectionFactory.java:213) > at > org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataBaseType(ConnectionFactory.java:134) > at > org.apache.jackrabbit.core.fs.db.DbFileSystem.getDataSource(DbFileSystem.java:228) > at > org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:190) > ... 43 more > 2011-01-25 08:12:14 RepositoryImpl [ERROR] Error while closing Version > Manager. > java.lang.NullPointerException > at > org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java:1117) > at > org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:1063) > at > org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:388) > at > org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:602) > at > org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:179) > at > org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279) > at > org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) > at > TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32) > at > TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26) > ... > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115) > 2011-01-25 08:12:14 RepositoryImpl [ERROR] In addition to startup fail, > another unexpected problem occurred while shutting down the repository again. > java.lang.NullPointerException > at > org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java:1136) > at > org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:1063) > at > org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:388) > at > org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:602) > at > org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:179) > at > org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279) > at > org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) > at > TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32) > at > TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26) > ... > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115) > javax.jcr.RepositoryException: File system initialization failure. > at > org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1060) > at > org.apache.jackrabbit.core.config.RepositoryConfig.getFileSystem(RepositoryConfig.java:892) > at > org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:284) > at > org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:602) > at > org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:179) > at > org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279) > at > org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375) > at > org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123) > at > TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32) > at > TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26) > ... > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115) > Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to > initialize file system > at > org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:210) > at > org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1057) > ... 42 more > Caused by: java.lang.IllegalStateException: this factory has already been > closed > at > org.apache.jackrabbit.core.util.db.ConnectionFactory.sanityCheck(ConnectionFactory.java:213) > at > org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataBaseType(ConnectionFactory.java:134) > at > org.apache.jackrabbit.core.fs.db.DbFileSystem.getDataSource(DbFileSystem.java:228) > at > org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:190) > ... 43 more -- This message is automatically generated by JIRA. - For more information on JIRA, see: http://www.atlassian.com/software/jira