You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Chris Schmidt (JIRA)" <ji...@apache.org> on 2011/01/25 15:19:43 UTC

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

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.2.1, 2.2.0, 2.1.3, 2.1.2
         Environment: WindowsXP, Linux, Oracle, Derby
            Reporter: Chris Schmidt
         Attachments: jackrabbit-transient-issue.zip

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 TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32)
	at TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	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.
-
You can reply to this email to add a comment to the issue online.


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

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting resolved JCR-2870.
--------------------------------

    Resolution: Fixed

After deeper review I don't think the JCA test failures are caused by this change, so re-resolving. See JCR-2889 for more details.

> 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

        

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

Posted by "Thomas Mueller (JIRA)" <ji...@apache.org>.
     [ 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

        

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

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting resolved JCR-2870.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.3
         Assignee: Jukka Zitting

Nice work, thanks! I committed the patch in revision 1065622 and merged it to the 2.2 branch in revision 1065623.

As a longer term solution it would be cleaner to make the RepositoryConfig objects stateless and move the ConnectionFactory to the RepositoryContext object where it would be tied to the lifecycle of the containing repository instance. But we can do that in a separate improvement issue.

> 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.3
>
>         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

        

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

Posted by "Chris Schmidt (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Schmidt updated JCR-2870:
-------------------------------

    Attachment: jackrabbit-transient-issue.zip

Zip of a maven project reproducing the error.  Both Oracle and Derby configurations are provided.

> 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
>         Attachments: jackrabbit-transient-issue.zip
>
>
> 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 TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32)
> 	at TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	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.
-
You can reply to this email to add a comment to the issue online.


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

Posted by "Chris Schmidt (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Schmidt updated JCR-2870:
-------------------------------

    Attachment: jcr-2870.patch

Proposed patch to the issue.  Add a new static creation method to RepositoryConfig that creates an instance based on an existing configuration.  The new method is then used within the TransientRepository to create a copy of the configuration per call to getRepository from the TransientRepository's custom RepositoryFactory

> 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
>         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.
-
You can reply to this email to add a comment to the issue online.


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

Posted by "Chris Schmidt (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12986397#action_12986397 ] 

Chris Schmidt commented on JCR-2870:
------------------------------------

I'm happy to help with this issue.  Since the ConnectionFactory cannot be used once it has been closed, does it make sense to null the ConnectionFactory after the TransientRepository stops?

> 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
>         Attachments: jackrabbit-transient-issue.zip
>
>
> 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 TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32)
> 	at TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	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.
-
You can reply to this email to add a comment to the issue online.


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

Posted by "Chris Schmidt (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12986415#action_12986415 ] 

Chris Schmidt commented on JCR-2870:
------------------------------------

The issue can be worked around if a RepositoryConfig isn't used when creating the TransientRepository.  The ConnectionFactory is cached within the config and used across multiple invocations of the TransientRepository.RepositoryFactory.getRepository() call.

For my use case, using the config object is necessary. There may be a way to 'reset' the configuration after the repository has shut down and before the getRepository is called.

> 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
>         Attachments: jackrabbit-transient-issue.zip
>
>
> 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 TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32)
> 	at TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runners.Suite.runChild(Suite.java:128)
> 	at org.junit.runners.Suite.runChild(Suite.java:24)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	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.
-
You can reply to this email to add a comment to the issue online.


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

Posted by "Chris Schmidt (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-2870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Schmidt updated JCR-2870:
-------------------------------

    Description: 
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

  was:
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 TransientRepositoryTest.addNodeToRepository(TransientRepositoryTest.java:32)
	at TransientRepositoryTest.shouldNotFailWhenUsingTransientRepositoryTwice(TransientRepositoryTest.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:24)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:94)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	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


Update stacktrace to be smaller

> 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
>         Attachments: jackrabbit-transient-issue.zip
>
>
> 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.
-
You can reply to this email to add a comment to the issue online.