You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Thomas Mueller (JIRA)" <ji...@apache.org> on 2011/02/08 10:12:57 UTC

[jira] Reopened: (JCR-2870) Transient Repository cannot be used more than once when configured with DataSources

     [ 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